Wpis z mikrobloga

#arduino

Hej, Czy ktos wie dlaczego pomimo tego ze stan poczatkowy pinow ustawiam na LOW, to po uruchomieniu programu i tak oby dwie diody mi sie swieca?
Drugie pytanie, dlaczego w petli loop polecenie wykonuje sie tylko raz? Jesli wpisze w SerialMonitorze dana wartosc np 1000 ms to kolejno: pierwsza dioda zaswieci sie sekunde, przerwa, druga zaswieci sie sekunde i koniec. Nie powtarza petli.

#define awersSilnika 8
#define rewersSilnika 9

long odebraneDane = 0;
int czasPracySilnika = 100000; // 100 sekund

void setup() {
Serial.setTimeout(czasPracySilnika); //po tym czasie SerialparseInt zwraca zero, bez ustawienia tego parametru zwraca zero po sekundzie.
Serial.begin(9600); //Uruchomienie komunikacji portu szeregowego
pinMode(awersSilnika, OUTPUT); //Konfiguracja wyjść
pinMode(rewersSilnika, OUTPUT);

digitalWrite(awersSilnika, LOW); //stan poczatkowy LOW
digitalWrite(rewersSilnika, LOW);

}

void loop() {

if(Serial.available() > 0) {
odebraneDane = Serial.parseInt();
Serial.println(odebraneDane);
};
digitalWrite(awersSilnika, HIGH);
delay(odebraneDane);
digitalWrite(awersSilnika, LOW);
delay(odebraneDane);
digitalWrite(rewersSilnika, HIGH);
delay(odebraneDane);
digitalWrite(rewersSilnika, LOW);
}
  • 6
@Phater: 1. dioda może być załączana stanem niskim, który to ma większą wydajność prądową niż stan wysoki.
2. Pewnie przekroczyłeś zakres inta. Zalecam używać zmiennych iny16 i int32.

int czasPracySilnika = 100000; // 100 sekund

int ma dwa bajty i przyjmuje wartości z zakresu -32k-1 do 32k.
@Analityk: 1. To jakby mial wygladac kod aby podczas wlaczania programu pierwsze czego nie robilo to nie wybijalo mi korkow w domu? :)
2. zmienilem na longa i dzieje sie to samo.
zrobilem petle for, ale to jest bezsensu bo musze deklarowac ilosc powtorzen, a chialbym aby dzialo sie to w nieskonczonosc w petli loop w adruino.
rowniez swieca dwie diody rownoczesnie, ale to pewnie dlatego, ze w odebraneDane = 0, jak zmieni sie na np 1000, to miga normalnie.