Go Down

Topic: Stepper-motorer, fel i koden? (Read 3277 times) previous topic - next topic

Carnoic

Hej!

Håller på med ett projekt där jag vill kunna styra två steppers med en IR-kontroll och att de då kör till olika X/Y-koordinater beroende på vilken knapp man trycker på kontrollen.

Har sökt runt en hel massa på nätet efter folk som haft liknande problem och har försökt anpassa min kod efter deras tankar, men får det ändå inte att fungera.
Har i tidigare version lyckats få en av motorerna att vakna till liv och faktiskt röra sig en bit, men då det bara var ett steg på vägen, så hjälpte det föga där jag är just nu.

Jag vet inte om det är fel i koden, eller om jag tänkt fel någon annanstans, men hårdvaran som sådan fungerar fint och jag är rätt ny när det gäller kodning, så därför misstänker jag att det är nått galet där.

Använder en Arduino Uno, en Adafruit motorsköld (version 1) och okända steppers som jag tagit från en gammal skanner.

All hjälp skulle uppskattas!

Min kod just nu:

Code: [Select]
#include <Stepper.h>
#include <IRremote.h>
#include <AccelStepper.h>
#include <AFMotor.h>

int RECV_PIN = A4;
IRrecv irrecv(RECV_PIN);
decode_results results;

AF_Stepper motor1(48, 1);
AF_Stepper motor2(48, 2);


void forwardstep1() { 
  motor1.onestep(FORWARD, DOUBLE);
}
void backwardstep1() { 
  motor1.onestep(BACKWARD, DOUBLE);
}

void forwardstep2() { 
  motor2.onestep(FORWARD, DOUBLE);
}
void backwardstep2() { 
  motor2.onestep(BACKWARD, DOUBLE);
}

AccelStepper stepper1(forwardstep1, backwardstep1);
AccelStepper stepper2(forwardstep2, backwardstep2);

void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn();

    stepper1.setMaxSpeed(2000.0);
    stepper1.setAcceleration(1000.0);
    stepper1.moveTo(10000);
   
    stepper2.setMaxSpeed(3000.0);
    stepper2.setAcceleration(1000.0);
    stepper2.moveTo(10000);

}

void loop()
{
   
  if (irrecv.decode(&results))
    {
     
  switch(results.value)
 {

  case 0xFF30CF:    // 1
  stepper1.moveTo(1500);
  stepper2.moveTo(1500);
 
  break;
 
  case 0xFF18E7:    // 2
  stepper1.moveTo(2500);
  stepper2.moveTo(2500);
 
  break;

        irrecv.resume();   // Receive the next value
   
}}}

sobNorway

hey! :-)

flytta en rustning "}"
på toppen av "irrecv.resume ();"
annars kommer det bara att läsas en gång.

vennlig hilsen en norman fra Norge.

Go Up