Andrea25 Inserito: 14 settembre 2014 Segnala Inserito: 14 settembre 2014 Buonasera a tutti. Spero di scrivere nella sezione giusta.Avrei bisogno di chiedere una cosa sulla programmazione di Arduino Uno:ho scritto un programma per l'accensione sequenziale di 13 led e ad ogni passaggio ho impostato un certo tempo(delay)e volevo sapere e capire come posso modificare tutti i "delay"con un solo comando,senza riscriverli tutti,per variare la velocità di sequenza accensione dei led. Spero di essermi spiegato bene...grazie.
robyelara Inserita: 14 settembre 2014 Segnala Inserita: 14 settembre 2014 Usa un potenziometro come AI e lo scrivi dentro il delay... Inviato dall'app. Mobile di PLC Forum da iPad3,6
Livio Orsini Inserita: 15 settembre 2014 Segnala Inserita: 15 settembre 2014 Attenzione che la funzione "delay" è bloccante, ovvero durante quel tempo la macchina è ferma. Quindi tra il rpimo e l'ultimo LED ci possono essere tempi differenti dovuti alle fermate precedenti.
walterword Inserita: 15 settembre 2014 Segnala Inserita: 15 settembre 2014 forse ti riferisci al fatto che invece di usare un numero definito all'interno del delay(....) e' meglio usare una o piu variabili che imposti tu ?
Livio Orsini Inserita: 15 settembre 2014 Segnala Inserita: 15 settembre 2014 No Walter, lui ha il ritardo uguale per tutti; vuol solo variare il ritardo con un unico comando, quindi la soluzione proposta da robyelara. Con l'ingresso analogico hai un numero che varia tra 0 e 1023 che puoi usare per variare contemporaneamente tutti i ritatrdi. Poui anche avrle tutti diversi, poi usi il dato analogico come variabile per moltiplicare/dividere le varie costanti.
walterword Inserita: 15 settembre 2014 Segnala Inserita: 15 settembre 2014 si e' un'applicazione che si trova su tutti i libri arduino e sul web ,Dopo "Hello world" c'e questa del ingresso analogico con potenziometro Se non usa un potenziometro puo' usare un display lcd .....
Andrea25 Inserita: 15 settembre 2014 Autore Segnala Inserita: 15 settembre 2014 (modificato) Buonasera a tutti. Vi ringrazio per i vostri interventi:Livio hai riassunto benissimo quello che voglio fare,grazie a robyelara per il suggerimento del potenziometro. walterword,vedo sul mio libro di Arduino. Come sempre ci provo e vi aggiorno Modificato: 15 settembre 2014 da Andrea25
Andrea25 Inserita: 18 settembre 2014 Autore Segnala Inserita: 18 settembre 2014 Buonasera a tutti. Ora che mi avete suggerito il metodo potenziometro ho cercato in rete ed ho trovato tanti schemi e sketch. Sul libro che ho (di Arduino uno) non porta esempi e non parla di potenziometri... Ad ogni modo ho provato a collegarlo e a scrivere uno sketch(così si chiama vero?)e funziona tutto bene Mi sembrava strano che in un dispositivo come Arduino si dovesse cambiare i delay uno ad uno! Grazie di nuovo a tutti.
walterword Inserita: 18 settembre 2014 Segnala Inserita: 18 settembre 2014 be....esistono decine di libri su arduino ..... Si , si chiama sketch .l'ambiente e' organizzato per rendere meno ostico e complicato il lavoro al programmatore o designer . comunque ricorda che si possono scrivere librerie in C++ e che gli sketches sono scritti in un linguaggio che e' il c++ sintassicamente parlando .
Livio Orsini Inserita: 19 settembre 2014 Segnala Inserita: 19 settembre 2014 Sul libro che ho (di Arduino uno) non porta esempi e non parla di potenziometri.. Quasi certamente porterà un esempio simile: usa il valore analogico letto da un potenziometro per variare il valore di PWM in modo da variare la liminosità di un LED. Questo è un esempio che trovi forse anche negli sketch di esempio.
Andrea25 Inserita: 19 settembre 2014 Autore Segnala Inserita: 19 settembre 2014 (modificato) Buongiorno Livio. Mi riguarderò bene il libro...sai sono alle primissime armi e forse,come dici tu,c'è la soluzione magari esplicata in modo un p'ò diverso e magari l'ho letta ma non capita! Grazie comunque di nuovo Modificato: 19 settembre 2014 da Andrea25
Nino1001 Inserita: 30 novembre 2014 Segnala Inserita: 30 novembre 2014 Questo è lo sketch per modificare con solo comando i vari tempi di delay: # define Sensore A0 # define LED1 2 # define LED2 3int tempo = 0;void setup() { pinMode (Sensore,INPUT);pinMode(LED1,OUTPUT); pinMode(LED2,OUTPUT);Serial.begin(9600);}void loop(){ tempo = analogRead(Sensore);digitalWrite (LED1,HIGH); delay(tempo *0.5 );digitalWrite (LED1,LOW); digitalWrite (LED2,HIGH); delay(tempo*2);digitalWrite (LED2,LOW); delay(tempo); } la variabile tempo va da 0 a 1023 e quindi da 0 a 1,023 secondi (facciamo un secondo conto pari), devi quindi moltiplicare la variabile tempo per 5 se vuoi ottenere 5 secondi o un numero diverso per ciascun delay. La risposta non è immediata perchè il delay mentre è attivo blocca l'acuisizione del valore analogico. Se il tempo di ciascun led dovesse dipendere da una propria variabile lo sketch è inutlizzabile e devi optare per la funzione millis() Almeno è quello che ho capito da dilettante.
Nino1001 Inserita: 30 novembre 2014 Segnala Inserita: 30 novembre 2014 Questo è invece lo sketch usando la funzione millis() fi fatto lo sketch BlinwithDelay degli esempi di Arduino modificato. Credo che il listato possa essere ulteriormente smagrito. /* L'uso dell'istruzione delay blocca il LOOP. Con questo sketch un led lampeggia mentre il void loop continua nei suoi cicli.*/ # define LEDA 2 # define LEDB 3 # define POT A0int ledStateA = LOW; int ledStateB = LOW;long pMillisA = 0; long pMillisB = 0; long pausa = 0;void setup() { pinMode (POT, INPUT);pinMode(LEDA, OUTPUT);pinMode(LEDB, OUTPUT); }void loop(){ pausa = analogRead(POT);unsigned long cMillisA = millis();if( cMillisA - pMillisA > (pausa + 50)) { pMillisA = cMillisA; if ( ledStateA== LOW) ledStateA = HIGH;else ledStateA = LOW;digitalWrite(LEDA, ledStateA);}unsigned long cMillisB = millis();if( cMillisB - pMillisB > ( pausa + 275) ) { pMillisB = cMillisB; if ( ledStateB == LOW) ledStateB = HIGH;else ledStateB = LOW;digitalWrite(LEDB, ledStateB);} }
cabestano Inserita: 30 novembre 2014 Segnala Inserita: 30 novembre 2014 QUESTO può essere utile ad un principiante.
Livio Orsini Inserita: 30 novembre 2014 Segnala Inserita: 30 novembre 2014 L'autore delladiscussione non si fa vivo da oltre 2 mesi. Inutile immettere i listati degli sketches di esempio di arduino, si trovano già nel software di arduinobasta aprire il menù a tenda. E' anche inutile mettere links che generali che google propone e ripropone. in questo modo si appesantisce solo l'archivio del forum.
cabestano Inserita: 30 novembre 2014 Segnala Inserita: 30 novembre 2014 Non avevo notato la data del primo post. La pagina linkata è riferita a corsi scolastici in italiano su Arduino, non cosi facili da trovare se non spulci fra le pieghe di goofle. Comunque a vostra discrezione, cancellate pure il post.
Livio Orsini Inserita: 1 dicembre 2014 Segnala Inserita: 1 dicembre 2014 La pagina linkata è riferita a corsi scolastici in italiano su Arduino, non cosi facili da trovare se non spulci fra le pieghe di goofle. Se uno ha un minimo di voglia e di pazienza è sufficiente che faccia la ricerca con le parole chiave, ad esempio, "arduino corsi" e metta il filtro per i soli documenti in ling ua italiana. Poi io ritengo giusto, ma è una mia idea, che chi domanda per imparare non debba avere tutto fatto, ma debba essere solo guidato. Sai il vecchio proverbio cinese: "Se ragali un pesce ad un affamato losfami per un guiorno; se gli insegni a pescare lo sfami per tutta la vita".
fisica Inserita: 1 dicembre 2014 Segnala Inserita: 1 dicembre 2014 parole sante ma troppo spesso incomprese....
Andrea25 Inserita: 1 dicembre 2014 Autore Segnala Inserita: 1 dicembre 2014 Grazie dei suggerimenti ragazzi. Livio,la tua idea e più che giusta! Ho momentaneamente "sospeso" con arduino per mancanza di tempo...
Andrea25 Inserita: 12 febbraio 2015 Autore Segnala Inserita: 12 febbraio 2015 Salve a tutti. Ho pensato di continuare a scrivere su questa discusione(spero di non sbagliare)perchè volevo chiedervi un consiglio. Ho impostato il programma con potenziometro come mi avete suggerito ed ho provato a far girare dei passo-passo bipolari mediante l'integrato driver in dotazione con il kit arduino(L282 se non sbaglio).Funziona,il motore gira ma arrivato a circa 150 giri/min."salta"qualche step e se aumento ancora si ferma in una "tremarella"sul posto avanti e indietro. Ho provato con diversi motori e ho riscontrato lo stesso problema.Potrebbe essere quindi il driver?Oppure la scheda arduino?
Livio Orsini Inserita: 13 febbraio 2015 Segnala Inserita: 13 febbraio 2015 Più facile che siano i motori non pilotati correttamente. Se disponi di un oscilloscopio puoi osservare le forme degli impulsi che alimentano i motori e verificare che al crescere della frequenza non si deformino. Poi, se usi arduino come negli sketch di esempio ci son dei grossi limiti di frequenza.
walterword Inserita: 13 febbraio 2015 Segnala Inserita: 13 febbraio 2015 verifica i limiti di frequenza , puo' darsi che arduino non ce la fa
roberto8303 Inserita: 13 febbraio 2015 Segnala Inserita: 13 febbraio 2015 la frequenza di arduino uno è di circa 500hz facile che è come dice walter
walterword Inserita: 13 febbraio 2015 Segnala Inserita: 13 febbraio 2015 la libreria che usa arduino per far funzionare questo tipo di motori credo che usi il timer 1 , però non conviene toccare nulla in quanto e' gia tutto prescalato e programmato per fare anche altre cose come il pwm se non erro
Livio Orsini Inserita: 13 febbraio 2015 Segnala Inserita: 13 febbraio 2015 Il timer 1 ed il timer 2 si possono usare tranquillamente; è il timer0 che è usato per i cicli di delay.
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora