sono nuovo del forum, sono alle prime armi con arduino. Ho acquistato una scheda Itead Mstudio con a bordo arduino leonardo e a bordo il driver per un motore passo passo. Uso la libreria stepper.h Il mio problema è che non riesco a far eseguire al motore un numero definito di giri, ma gira in continuo. Ho provato ad usare il ciclo for, è corretto ? Grazie dell'aiuto.
#include <Stepper.h>
// n° di passi per giro
//del proprio motore
const int stepsPerRevolution = 200;
const int lum = 10;
float Rsensor;
const int i=0;
// inizializzo la libreria stepper
// con il numero dei pin di Arduino
//cui ho collegato le bobine del motore:
Stepper myStepper(stepsPerRevolution, 7, 8, 12, 13);
void setup()
{
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
// setto la velocitàdi rotazione a n rpm:
// 100<=n<=400
myStepper.setSpeed(50);
// inizializzo la porta seriale:
Serial.begin(9600);
}
void loop()
{
for (int i=0; i<=2; i++){
myStepper.step(200);
delay(100);
break;
}
}
#include <Stepper.h>
// n° di passi per giro
//del proprio motore
const int stepsPerRevolution = 200;
const int lum = 10;
float Rsensor;
const int i = 0;
// inizializzo la libreria stepper
// con il numero dei pin di Arduino
//cui ho collegato le bobine del motore:
Stepper myStepper(stepsPerRevolution, 7, 8, 12, 13);
void setup()
{
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
// setto la velocitàdi rotazione a n rpm:
// 100<=n<=400
myStepper.setSpeed(50);
// inizializzo la porta seriale:
Serial.begin(9600);
}
void loop()
{
for (int i = 0; i <= 2; i++) {
myStepper.step(200);
delay(100);
Serial.println("For loop running");
}
}
can you send connection diagram & I have atatched code above try it once.
Buonasera, ho provato con while ma il problema persite: il ciclo non si ferma. Dove sbaglio? Di seguito il codice. Grazie
#include <Stepper.h>
// n° di passi per giro
//del proprio motore
const int stepsPerRevolution = 200;
const int lum = 10;
float Rsensor;
int i = 0;
// inizializzo la libreria stepper
// con il numero dei pin di Arduino
//cui ho collegato le bobine del motore:
Stepper myStepper(stepsPerRevolution, 7, 8, 12, 13);
void setup()
{
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
// setto la velocitàdi rotazione a n rpm:
// 100<=n<=400
myStepper.setSpeed(50);
// inizializzo la porta seriale:
Serial.begin(9600);
}
void loop()
{
while(i=5)
{
myStepper.step(200);
delay(100);
Serial.println("For loop running");
i=i+1;
}
myStepper.step(0);
}
Grazie Brunello con while ( i <= 5 ) tutto perfetto. L'evoluzione del mio programma è il segunete:
#include <Stepper.h>
// n° di passi per giro
//del proprio motore
const int stepsPerRevolution = 200;
const int lum = 100;
float Rsensor;
int i = 0;
// inizializzo la libreria stepper
// con il numero dei pin di Arduino
//cui ho collegato le bobine del motore:
Stepper myStepper(stepsPerRevolution, 7, 8, 12, 13);
void setup()
{
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
// setto la velocitàdi rotazione a n rpm:
// 100<=n<=400
myStepper.setSpeed(50);
// inizializzo la porta seriale:
Serial.begin(9600);
}
void loop()
{
luce();
Serial.println(Rsensor);
if (Rsensor>lum)
{
avanti();
delay(1000);
}
if (Rsensor<lum)
{
indietro();
delay(1000);
}
}
void avanti()
{
while(i<=5)
{
myStepper.step(200);
Serial.println("a");
i=i+1;
}
}
void indietro()
{
while(i>=0)
{
myStepper.step(-200);
Serial.println("i");
i=i-1;
}
}
void luce()
{
int sensorValue = analogRead(0);
Rsensor=(float) (1023-sensorValue)*10/sensorValue;
delay(2000);
}
Quello che faccio è andar a leggere il valore di una fotoresistenza ed in base alla luminosità faccio girare avanti o indietro il motore. Secondo voi, come è scritto, si possono creare movimenti del motore falsati? Cioè io devo far muovere il motore all'alba ed al tramonto e non vorrei che durante la giornata ci fossero dei movimenti che non ci dovrebbero essere.