01-02-2017, 17:59
Witam, dysponuje arduino UNO i chciałbym za pomocą pilota radiowego z zestawu (takiego z czterema przyciskami) sterować silnikiem krokowym. Jednak jest problem, gdyż program "nie chce" jednocześnie sprawdzać czy wysłana jest nowa dana dt. silnika i poruszać silnikiem. Próbowałem ruszać kawałek i czekać chwilę lecz takie rozwiązanie mnie nie satysfakcjonuje. Trwa to zbyt długo. Poniżej załączam kod.
Kod:
#include <StepperMotor.h>
StepperMotor motor(8,9,10,11);
void setup(){
pinMode(3, INPUT);
pinMode(4, INPUT);
pinMode(5, INPUT);
pinMode(6, INPUT);//piny od pilota
Serial.begin(9600);
}
int bieg = 4;
int tempo;
int krok;
void loop(){
while (digitalRead(3) == LOW && digitalRead(4) == LOW && digitalRead(5) == LOW && digitalRead(6) == LOW) {
}
while (digitalRead(3) == HIGH) { // Button 1 pressed
if (bieg<7)
{bieg++;
break;
}
}
while (digitalRead(4) == HIGH) { // Button 2 pressed
if (bieg>1)
{bieg--;
break;
}
}
while (digitalRead(5) == HIGH) { // Button 3 pressed
}
while (digitalRead(6) == HIGH) { // Button 4 pressed
}
while (bieg>0)
{
if(bieg==1)
{
tempo=1;
krok=-100;
break;
}else if(bieg==2)
{
tempo=2;
krok=-100;
break;
}else if(bieg==3)
{
tempo=3;
krok=-100;
break;
}else if(bieg==4)
{
Serial.println("muj beg jest 4");
tempo=0;
krok=0;
return;
}else if(bieg==5)
{
tempo=3;
krok=1oo;
break;
}else if(bieg==6)
{
tempo=2;
krok=100;
break;
}else if(bieg==7)
{
tempo=1;
krok=100;
break;
}
}
Serial.println(bieg);
Serial.println(krok);
Serial.println(tempo);
Serial.println("|/\/\/\/\/\/\/\/\/\|");
motor.setStepDuration(tempo);
motor.step(krok);
}