Problem in Stepper Motor code (step angle)

Thread Starter

theumer

Joined Mar 29, 2012
2
I need to drive a stepper motor that would rotate with a step angle of 7.5 degrees. The code that I wrote has an error even though I am unable to locate anything in the code. Here's the error:

Error [500] ; . undefined symbols:
_delay (stepper.obj)_digitalWrite (stepper.obj)_digitalRead (stepper.obj)_analogRead (stepper.obj)_pinMode (stepper.obj)

The code:

Rich (BB code):
#include <pic.h>

#define yellow 15  //Q1
#define orange 16  //Q2
#define brown 17  // Q3
#define black 18 // Q4

#define CW 33 // SW0 in schematic
#define CCW 34  //SW1 in schematic

void all_coils_off()  
{
  digitalWrite(black, 0);
  digitalWrite(brown, 0);
  digitalWrite(orange, 0);
  digitalWrite(yellow, 0); 

}


void reverse(int i) {

  while (1)   {

    digitalWrite(black, 1);
    digitalWrite(brown, 0);
    digitalWrite(orange, 1);
    digitalWrite(yellow, 0);
    delay(analogRead(0)/4 + 10);  
    i--;
    if (i < 1) break;


    digitalWrite(black, 0);
    digitalWrite(brown, 1);
    digitalWrite(orange, 1);
    digitalWrite(yellow, 0);
    delay(analogRead(0)/4 + 10);
    i--;
    if (i < 1) break;


    digitalWrite(black, 0);
    digitalWrite(brown, 1);
    digitalWrite(orange, 0);
    digitalWrite(yellow, 1);
    delay(analogRead(0)/4 + 10);  
    i--;
    if (i < 1) break;

    digitalWrite(black, 1);
    digitalWrite(brown, 0);
    digitalWrite(orange, 0);
    digitalWrite(yellow, 1);
    delay(analogRead(0)/4 +10);
    i--;
    if (i < 1) break;
  }

}

void forward(int i) {

  while (1)   {

    digitalWrite(black, 1);
    digitalWrite(brown, 0);
    digitalWrite(orange, 0);
    digitalWrite(yellow, 1);
    delay(analogRead(0)/4 +10);
    i--;
    if (i < 1) break;

    digitalWrite(black, 0);
    digitalWrite(brown, 1);
    digitalWrite(orange, 0);
    digitalWrite(yellow, 1);
    delay(analogRead(0)/4 +10);
    i--;
    if (i < 1) break;

    digitalWrite(black, 0);
    digitalWrite(brown, 1);
    digitalWrite(orange, 1);
    digitalWrite(yellow, 0);
    delay(analogRead(0)/4 +10);
    i--;
    if (i < 1) break;

    digitalWrite(black, 1);
    digitalWrite(brown, 0);
    digitalWrite(orange, 1);
    digitalWrite(yellow, 0);
    delay(analogRead(0)/4 +10);
    i--;
    if (i < 1) break;
  }
}

void setup()  
{
  pinMode(CW, RB0);
  pinMode(CCW, RB1);

//  digitalWrite(CW, 1); // pull up on
//  digitalWrite(CCW,1); // pull up on

  pinMode(black, PORTC);
  pinMode(brown, PORTC);
  pinMode(orange, PORTC);
  pinMode(yellow, PORTC);

  // all coils off
  digitalWrite(black, 0);
  digitalWrite(brown, 0);
  digitalWrite(orange, 0);
  digitalWrite(yellow, 0);

}

void loop() 
{

  if (!digitalRead(CW))  
    { 

    forward(200);
    all_coils_off();  
      }


  if (!digitalRead(CCW))  
    { 

    reverse(200);
    all_coils_off();  
  }      

} // end loop

void main ()

{

 PORTC=0x00;
 PORTB=0xFF;
 setup();
 loop();
}
Any help would be appreciated.
 

John P

Joined Oct 14, 2008
2,025
It looks very simple. You've used a number of functions in your code which aren't recognizable to the compiler:

_delay
_digitalWrite
_digitalRead
_analogRead
_pinMode
 

t06afre

Joined May 11, 2009
5,934
I need to drive a stepper motor that would rotate with a step angle of 7.5 degrees. The code that I wrote has an error even though I am unable to locate anything in the code. Here's the error:

Error [500] ; . undefined symbols:
_delay (stepper.obj)_digitalWrite (stepper.obj)_digitalRead (stepper.obj)_analogRead (stepper.obj)_pinMode (stepper.obj)
Any help would be appreciated.
It looks to me that you are trying to use some Arduino code in a Microchip MPLAB/HI-Tech C setting. You can not do that. But I am sure we kan help you out. As the code you posted should be easy to port
 
Top