Arduino: sketch multi stato con led e pulsante #29
HTML-код
- Опубликовано: 5 окт 2024
- In questo sketch del tutorial italiano su Arduino vedrai come impostare uno sketch diviso in più sezioni. Le sezioni sono attivate da uno stato. Per comprendere questo tipo di approccio vedremo un semplice esercizio con un pulsante che sorteggia un LED a caso (tipo dado elettronico).
Schemi e sketch:
github.com/zma...
Puoi scaricare gratuitamente il mio libro: "Il manuale di Arduino - Guida Completa" dal mio sito: www.zeppelinmaker.it oppure direttamente da gumroad: gumroad.com/l/...
Paolo ,sto seguendo i tuoi tutorial e vorrei dirti che ti stimo moltissimo e riesci a far capire ,Grazie ancora !
Ti seguo dal settembre scorso. Mi hai permesso il passaggio dalľelettrotecnica alľelettronica e ora ad Arduino. Ho realizzato il pilota automatico per la mia barca. Non è cosa da poco perchè ci ho infilato ben 16 porte logiche, qualche transistor e relè. E funziona!!
Tutto questo per dirti quanto è potente il tuo modo di insegnare. chiaro, semplice ed efficace. Ciao!! Grazie
Grazie a te! Sono felice di averti aiutato in qualche modo! Lo scopo del mio canale è proprio questo!
buon giorno sig. Paolo. sono arrivato ai suoi video ahimè un po in ritardo..... ma li sto snocciolando tutti! riesce con semplicità a spiegare e anche chi non è addetto al settore può finalmente capire! grazie!
Se fosse capitato ad altri…
non mi funzionava il lampeggio sequenziale. Ho modificato come segue e funziona.
digitalWrite( 10 + (i%4),HIGH);
delay (100);
digitalWrite( 10 + (i%4),LOW)
delay (100);
i++;
P.S. Grazie per questi tutorial. Fino ad ora i migliori che ho seguito.
Grazie a te per il commento e la segnalazione
Sì, avevo il tuo stesso problema. Grazie per la soluzione. Manca però un ;. Quindi
digitalWrite( 10 + (i%4),HIGH);
delay (100);
digitalWrite( 10 + (i%4),LOW);
delay (100); i++;
Esatto, TinkerCAD mette un ritardo sul digitalWrite, ecco perché funziona lì...
Devi inizializzare i=0 all'inizio dello Sketch. Sopra il Setup
Paolo ormai ti seguo da quasi 2 mesi e ti stimo troppo!
Ciao! Sono io che ti ringrazio! Sono a tua disposizione!
Questo è il primo video che devo riguardare con calma per capirlo...la cosa (per me) si fa seria!
Grazie Paolo! A domani.
Si è abbastanza contorto... però capita spesso di incappare in queste situazioni dove uno sketch deve presentare una struttura "a livelli". Un sistema per ordinarlo è quello di inserire varie funzioni. In caso di dubbi... sono qui. Comunque i prossimi non saranno tutti così! Quello di domani è simile ma molto più semplice!
utilissima spiegazione Switch case! Grazie
esattamente,il motore parte in senso or.per un certo n.di giri stabilito dallo sktch. al termine si ferma e può essere avviato nuovamente in uno dei 2 sensi.spero di assermi spiegato .grazie
Ma a 8:11 non si poteva anche scrivere
digitalWrite(led, HIGH); ??
Perchè nella variabile led era salvato il valore del led che aveva scelto arduino per accedersi...
Comunque sei molto bravo a spiegare, io sto facendo Arduino anche a scuola da 1 anno e grazie ai tuoi video ho preso sempre più 8 e imparato tanto (che è la cosa fondamentale) spero un giorno di diventare bravo come te...
Buon giorno Paolo. Ti seguo ormai da 2 mesi e trovo le tue video lezioni molto interessanti e costruttive anche per i neofiti come me.
Per questa lezione avrei qualcosa da chiederti: L'istruzione "break" che hai inserito a termine di ogni funzione "switch" , non dovrebbe bloccare il programma? Mi sembra di aver capito così leggendo altri articoli su questa istruzione.
la break è fondamentale negli switch perchè oltre a delimitare il "case" ti fa "uscire" dal blocco switch. In genere la break ti fa uscire da un ciclo e non blocca il programma. ruclips.net/video/fBjNIuWoIO8/видео.html
@@zeppelinmaker Ok Paolo. Grazie.
Complimenti a Paolo!
grazie
Ciao, per vedere i LED accendersi in sequenza non sarebbe opportuno inserire un ulteriore delay dopo la riga 41 al minuto 8:30? Questo perché altrimenti si accenderebbero e si spegnerebbero subito dopo dando l'impressione di avere una luminosità minima. Sbaglio? Grazie
Questo sketch mi interessa particolarmente perchè è una base di partenza per realizzare un dado digitale. La modifica che ho fatto consente di utilizzare 6 LED, che sono proprio i numeri che ha un dado tradizionale. Però...io vorrei che sorteggiando ad esempio il LED3, si accendessero anche il 2 e l' 1. Ovvero che (ad esempio) uscendo il 5, si accendessero i LED da 1 a 5. In questo dodo si comporterebbe proprio come un dado. Caro Paolo, potresti creare questa variante...che io ancora non sono in grado di programmare..... Grazie!
interessante... me lo segno
@@zeppelinmaker io matterei un ciclo for dopo le istruzioni digitalWrite che spengono i led del tipo
for (int x=10; x
bravo paolo
grazie! Buon lunedì!
Ho una domanda, perché quando uso switch case o if, con il pulsante per modificare gli stati, devo per forza aspettare la fine del ciclo perché lo stato cambi? Non c'è un modo per cambiare lo stato immediatamente? Non so se hai capito
Grazie
ciao. Non credo di aver capito... comunque si, lo stato cambia subito. Probabilmente la sua applicazione è fatta solo una volta "al giro". Quando è così è fatto per evitare di replicare n-volte lo stesso codice (es. una digitalWrite)
Cioè, devo attendere la fine del ciclo (dentro ad un if o un case) per poter passare ad un altro if o case, quando lo stato cambia
caro Paolo non sto a dirt quanto mi siano utili i tuoi video,cerco di farli a pzzi e ricomporli per altri proggetti ma il più delle volte la sintassi mi tradisce.sto cercando inutilmente di fare uno sketch per motore passopasso dove due pulsanti comandino la rotazione continua nei due versi con un solo impulso. puoi aiutarmi? grazie
Ciao. Cosa intendi con la rotazione nei due versi con un solo impulso? Cioè se ne premo uno va da una parte e con l'altro inverte?
ritornerai con le tue live?
Ciao! Si!!! Credo settimana prossima. Magari giovedì sera.