Vorrei aiuto a capire come variare la senso di rotazione dello stepper mediante l'utilizzo del comando SWITCH CASE modificando questo sketch
//dichiariamo le variabili dei pin del motore
int motorPin1 = 8; // Blue - 28BYJ48 pin 1
int motorPin2 = 9; // Pink - 28BYJ48 pin 2
int motorPin3 = 10; // Yellow - 28BYJ48 pin 3
int motorPin4 = 11; // Orange - 28BYJ48 pin 4
// Red - 28BYJ48 pin 5 (VCC)
int motorSpeed = 1200; //variabile per impostare la velocità del motore
int count = 0; // contatore dei passi fatti
int countsperrev = 512; // numero dei passi per una rotazione completa
int lookup[8] = {B01000, B01100, B00100, B00110, B00010, B00011, B00001, B01001}; //vettore binario che rappresenta la switching sequence
//la switchin seuence del vettore va letta da destra verso sinistra
//////////////////////////////////////////////////////////////////////////////
void setup() {
//dichiarazione degli output ed attivazione della comunicazione seriale
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
Serial.begin(9600);
}
//////////////////////////////////////////////////////////////////////////////
void loop(){
if(count < countsperrev ) clockwise();
// se il contatore "count" è minore del numero di passi presenti in un giro completo attiva la void clockwise
else if (count == countsperrev * 2) count = 0;
// se il contatore "count" è uguale doppio del numero di passi presenti in un giro completo azzera il contatore
else anticlockwise();
// se il contatore "count" è maggiore del numero di passi presenti in un giro completo e minore del doppio del
//numero di passi presenti in un giro completo attiva la void anticlockwise
count++;
//Incrementa il contatore di una unità
}
//////////////////////////////////////////////////////////////////////////////
//set pins to ULN2003 high in sequence from 1 to 4
//delay "motorSpeed" between each pin setting (to determine speed)
void anticlockwise()
{
for(int i = 0; i < 8; i++)
{
setOutput(i);
//invoca la void setOutput
delayMicroseconds(motorSpeed);
}
}
void clockwise()
{
for(int i = 7; i >= 0; i--)
{
setOutput(i);
//invoca la void setOutput
delayMicroseconds(motorSpeed);
}
}
void setOutput(int out)
{
digitalWrite(motorPin1, bitRead(lookup[out], 0));
//scrivi su motorPin1 del vettore lookup del termine out quello che sta in posizione 0
digitalWrite(motorPin2, bitRead(lookup[out], 1));
//scrivi su motorPin1 del vettore lookup del termine out quello che sta in posizione 1
digitalWrite(motorPin3, bitRead(lookup[out], 2));
//scrivi su motorPin1 del vettore lookup del termine out quello che sta in posizione 2
digitalWrite(motorPin4, bitRead(lookup[out], 3));
//scrivi su motorPin1 del vettore lookup del termine out quello che sta in posizione 3
}
Potete aiutarmi?
Grazie