Andrea25 Inserito: 14 settembre 2014 Segnala Share 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. Link al commento Condividi su altri siti More sharing options...
robyelara Inserita: 14 settembre 2014 Segnala Share 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 Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 15 settembre 2014 Segnala Share 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. Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 15 settembre 2014 Segnala Share 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 ? Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 15 settembre 2014 Segnala Share 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. Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 15 settembre 2014 Segnala Share 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 ..... Link al commento Condividi su altri siti More sharing options...
Andrea25 Inserita: 15 settembre 2014 Autore Segnala Share 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 Link al commento Condividi su altri siti More sharing options...
Andrea25 Inserita: 18 settembre 2014 Autore Segnala Share 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. Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 18 settembre 2014 Segnala Share 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 . Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 19 settembre 2014 Segnala Share 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. Link al commento Condividi su altri siti More sharing options...
Andrea25 Inserita: 19 settembre 2014 Autore Segnala Share 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 Link al commento Condividi su altri siti More sharing options...
Nino1001 Inserita: 30 novembre 2014 Segnala Share 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. Link al commento Condividi su altri siti More sharing options...
Nino1001 Inserita: 30 novembre 2014 Segnala Share 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);} } Link al commento Condividi su altri siti More sharing options...
cabestano Inserita: 30 novembre 2014 Segnala Share Inserita: 30 novembre 2014 QUESTO può essere utile ad un principiante. Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 30 novembre 2014 Segnala Share 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. Link al commento Condividi su altri siti More sharing options...
cabestano Inserita: 30 novembre 2014 Segnala Share 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. Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 1 dicembre 2014 Segnala Share 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". Link al commento Condividi su altri siti More sharing options...
fisica Inserita: 1 dicembre 2014 Segnala Share Inserita: 1 dicembre 2014 parole sante ma troppo spesso incomprese.... Link al commento Condividi su altri siti More sharing options...
Andrea25 Inserita: 1 dicembre 2014 Autore Segnala Share 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... Link al commento Condividi su altri siti More sharing options...
Andrea25 Inserita: 12 febbraio 2015 Autore Segnala Share 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? Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 13 febbraio 2015 Segnala Share 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. Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 13 febbraio 2015 Segnala Share Inserita: 13 febbraio 2015 verifica i limiti di frequenza , puo' darsi che arduino non ce la fa Link al commento Condividi su altri siti More sharing options...
roberto8303 Inserita: 13 febbraio 2015 Segnala Share Inserita: 13 febbraio 2015 la frequenza di arduino uno è di circa 500hz facile che è come dice walter Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 13 febbraio 2015 Segnala Share 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 Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 13 febbraio 2015 Segnala Share Inserita: 13 febbraio 2015 Il timer 1 ed il timer 2 si possono usare tranquillamente; è il timer0 che è usato per i cicli di delay. Link al commento Condividi su altri siti More sharing options...
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