Arduino Polska Forum

Pełna wersja: stan wyjść po uruchomieniu serial monitor
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Witam wszystkich.
Prosty a właściwie brak układu. 
Dla wbudowanej diody w Arduino UNO napisany prosty program jak poniżej.


Po uruchomieniu serial monitora wciskam 1 i włącza się dioda. Zamykam serial monitor i po ponownym jego uruchomieniu dida kilkukrotnie zamruga po czym przyjmuje stan LOW. 
Co zrobić aby samo uruchomienie serial monitora nie zmieniało stanu wyjść?


Kod:
int led = 13;
int stan;

void setup() {

 pinMode(led, OUTPUT);
 digitalWrite(led, LOW);
 Serial.begin(9600);
}

void loop() {

 while (Serial.available() == 0);
 stan = Serial.read()- '0';


 switch(stan){
 case 1:    
   digitalWrite(led, HIGH);
   break;
 case 2:    
   digitalWrite(led, LOW);    
   break;
 default:
   Serial.println("nieprawidlowe polecenie");
 }

}
Niestety gotowce arduino mają na pokładzie konwerter USB -> RS232 i do poprawnej pracy ( wgrywania ) potrzebują sygnału reset który jest sterowany sygnałem DTR . Sygnał ten jest uzależniony właśnie od stanu portu w kompie , jak włączasz czy wyłączasz terminal ten stan się zmienia i program w arduino się restartuje . Możesz kupić coś jak na zdjęciu poniżej w celu zabawy terminalem bez resetu i podpiąć bezpośrednio pod styki RX i TX w arduino a do programowania używać wbudowanego usb po odpięciu tego dołożonego .

[Obrazek: f16753234ffb98a191936d4909cedafe.jpg]
(05-02-2016, 20:05)grymberg napisał(a): [ -> ]Co zrobić aby samo uruchomienie serial monitora nie zmieniało stanu wyjść?

Najlepiej użyć epromu zapisz w nim stan i odczytaj , to znaczy działa to tak ze jeśli ustawisz w pozycje 1 to zostanie zapisane do komórki eeprom i gdy program się zresetuje i tym podobne to w pętli setup dajesz odczyt epromu do zmiennej jakieś tam ja nazwę ją stan i w loop robi się reszta to naj szybszy i najprościejszy sposób
A co jak zamiast diody będzie rygiel do katapulty Big Grin zanim odczyta stan epromu będzie już w sufit wbity Big Grin

Tak pomysł adix-a też jest dobry pod warunkiem że restart programu nie przeszkadza , oczywiście jak to będzie skomplikowany kod z danymi ulotnymi to niestety się nie sprawdzi , chyba że co cykl aktualizowałbyś zapis a to tragicznie spowolni program .
(06-04-2016, 23:53)JasQ napisał(a): [ -> ]A co jak zamiast diody będzie rygiel do katapulty Big Grin zanim odczyta stan epromu będzie już w sufit wbity Big Grin

to wtedy wyświetli przepraszamy za utrudnienia i uszkodzony sufit hehehe Smile
(06-04-2016, 23:53)JasQ napisał(a): [ -> ]Tak pomysł adix-a też jest dobry pod warunkiem że restart programu nie przeszkadza , oczywiście jak to będzie skomplikowany kod z danymi ulotnymi to niestety się nie sprawdzi , chyba że co cykl aktualizowałbyś zapis a to tragicznie spowolni program .
co do tego nie musi aktualizować ciągle tylko w momencie zmiany w warunku czyli zmiany stanu

i to nie chodzi o ciągle resetowanie tylko o reset np wynikający z braku prądu lup jak tu po włączeniu terminala