• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
stan wyjść po uruchomieniu serial monitor
#1
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");
 }

}
 
Odpowiedź
#2
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]
Ważne aby robić co się lubi albo lubić co się robi .
Arduino UNO, TINY, PRO MINI
Pomoc nagradzamy punktami reputacji Wink
 
Odpowiedź
#3
(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
[Obrazek: banerelektronika.jpg]



Jeśli pomogłem podziękuj punktem reputacji Wink
 
Odpowiedź
#4
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 .
Ważne aby robić co się lubi albo lubić co się robi .
Arduino UNO, TINY, PRO MINI
Pomoc nagradzamy punktami reputacji Wink
 
Odpowiedź
#5
(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
[Obrazek: banerelektronika.jpg]



Jeśli pomogłem podziękuj punktem reputacji Wink
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości