| |
| | #1 (permalink) Top |
| User |
Torno un'attimo sul mio sketch, risolto perfettamente utilizzando il suggerimento di Carlo. Il primo switch (livello massimo) viene premuto per frazioni di secondo ad ogni passaggio di una sfera. Questo comporta che, con il secondo switch (livello minimo) premuto, il programma di blocca. Per risolvere ho utilizzato un delay, ma non mi sembra la soluzione definitiva, dato che poi ritardo si riperquote anche sul riavvio del motore. Pensavo di inserire un debounce per cambiare lo stato del primo switch dopo x tempo, ma ho fatto diversi tentativi senza riuscire ad integrarlo correttamente. E' una soluzione applicabile? Grazie |
| | |
| | #2 (permalink) Top | |
| User Data registr.: 08-08-2011 Residenza: Roma
Messaggi: 5.806
| Citazione:
Modifica la parti finale in questo modo. if (StatoMotore){ delay(1000) // 1000 millisecondi, vedi tu quanto ti occorre if (digitalRead(SW1)){ // se dopo il delay è ancora HIGH allora esegue digitalWrite(PinMotore, HIGH); } }else{ digitalWrite(PinMotore, LOW); } Nota che questa soluzione implica necessariamente un ritardo nella risposta del motore, sia in accensione che in spegnimento. Se non puoi tollerare questo ritardo, specialmente per lo spegnimento, allora la soluzione è un pochino più complessa . Carlo
__________________ Dai un pesce ad un uomo e lo avrai sfamato per un giorno, insegnagli a pescare e lo avrai sfamato per sempre. (Confucio) I miei modelli: http://www.youtube.com/results?search_query=carloroma63 | |
| | |
![]() |
| Bookmarks |
| |
Discussioni simili | ||||
| Discussione | Autore discussione | Forum | Commenti | Ultimo Commento |
| problema con arduino | fabiano2007 | Circuiti Elettronici | 15 | 23 marzo 14 03:15 |