[Old contents]
Vi rendete conto che gli utenti pongono sempre le stesse domande?
Quali?
1 ) Il sensore di temperatura legge una temperatura instabile.
2 ) Arduino non si programma più, esce il messagio avrdude stk500_getsync() not in sync resp=0x00
3 ) Ho collegato il motore, ma non gira
4 ) Ho collegato i led, ma fanno poca luce e arduino scalda
e tante altre.
Ci vorrebbe un thread dove il primo post contiene l'elenco delle FAQ con il link alla risposta.
Un altro post dove discutere delle FAQ, per evitare di inquinare il thread delle FAQ.
Visto che questo è il primo post qui c'è l'elenco delle FAQ con il link alla risposta.
[End old contents]
Questo è un thread sperimentale, nel primo post (questo) troverete (più o meno spesso) degli aggiornamenti. L'obbiettivo del thread è di riunire in una unica pagina i link alle domande più gettonate e ovviamente una o più soluzioni, questo lascia intuire la natura work in progress di questo lavoro.
Spesso l'utente "principiante" pone le stesse domande di altri "principianti"; inoltre egli alla prima esperienza con il forum si sente spaesato per cui il thread di presentazione è la prima tappa: Presentazione.
Inoltre per migliorare la fruibilità di questo forum è indispensabile leggere il regolamento.
Meriti e attribuizioni
Alla sperimentazione in questione al momento (06/10/2016) partecipano soltanto due utenti: MauroTec: egli aggiorna il primo post. nid69ita: egli si occupa di segnalare, postare, evidenziare post, topic con argomenti ricorrenti.
Entrambe dialoghiamo tramite PM al fine di coordinarci e valutare i problemi che vengono fuori durante la sperimentazione. Colgo l'occasione per invitare altri utenti interessati a portare avanti la sperimentazione, ognuno di essi con il suo contributo verrà aggiunto all'elenco precedente. Se non si è certi su come aiutare, sarebbe opportuno contattare almeno uno degli sperimentatori che appaiono in elenco (ai me al momento siamo soltanto in due).
Experimental FAQ
Quando vado per caricare il programma su arduino mi esce il seguente problema:
avrdude stk500_getsync() not in sync resp=0x00 leggi qui
La lettura del sensore di temperatura LM35 o NTC non è stabile, il valore oscilla.
La lettura del valore di temperatura cambia improvvisamente quando commuto dei relè leggi qui
2a) Sensori collegati a pin analogico leggono valori diversi se collego più cose o shield. leggi qui
Qual'è la corrente massima sopportata da un pin di Arduino? leggi qui.
3a) Quanta corrente si può prelevare dai pin 5V e 3,3V di Arduino Uno ? leggi qui[1].
Link a risorse sul debounce (anche i migliori pulsanti soffrono del rimbalzo dei contatti) e
arduino è così veloce da non lasciarsi scappare un rimbalzo. Leggi qui
Domanda: E' possibile fare delle manovre che "rompono" Arduino ? Leggi qui
Domanda: Leggendo dai pin analogici bisogna scartare la prima lettura, soprattutto se si fanno letture da pin diversi. E' vero ? Leggi qui
Software FAQ
Domanda: Come si azzerare il contatore restituito dalla funzione millis()?
Normalmente non c'è necessità di azzerare (o resettare) questo contatore, ma
delle volte può tornare utile sapere come farlo. Leggi qui. [/quote]
Domanda: su Arduino DUE i pin analogici si possono usare come digitali ? Leggi qui
Domanda: con quale linguaggio si programma Arduino ?
Segui il Link ad approfondimento.
Problema:
Arduino non si programma più, esce il messagio avrdude stk500_getsync() not in sync resp=0x00
Quando vado per caricare il programma su arduino mi esce il seguente problema:
avrdude stk500_getsync() not in sync resp=0x00
Risposta:
La prima cosa da fare è ricordarsi qual'è il programma che il microcontroller di arduino sta eseguendo, se lo avete
in formato sorgente, guardatelo e controllate se per caso sin da subito si inviano caratteri via
seriale, in tal caso il problema è questo, per cui inserite sempre un ritardo di 2 secondi nella funzione setup() o comunque prima della istruzione che invia dati via seriale.
In queste condizioni si riesce a programmare arduino tentando di indovinare il tempo in cui Arduino IDE sta inviando
lo sketch ad Arduino board, ci voglio più tentativi ma alla fine si riesce ad ottenere la programmazione.
Procedura: Tenere il tasto reset premuto, sull'IDE di arduino premere il pulsante per scrivere lo sketch, aspettare/indovinare l'effettivo invio dello sketch e rilasciare il tasto "reset"
Se non riesci a risolvere il problema con questa procedura non postare in questo thread, ma aprine uno tuo, nel quale spieghi più dettagliatamente possibile qual'è il problema.
Problema:
La lettura del sensore di temperatura LM35 o NTC non è stabile, il valore oscilla.
La lettura del valore di temperatura cambia improvvisamente quando commuto dei relè.
Risposta:
Ci sono vari motivi che determinano una instabilità delle lettura e si devono usare un insieme di accorgimenti
per avere una lettura sufficientemente stabile.
Uno dei motivi è legato alla fonte di alimentazione di arduino che si sta usando, se si alimenta Arduino board tramite la connessione usb si deve sapere che la tensione di 5V fornita dal pc non è mai identica tra due PC, inoltre la tensione può variare nel tempo e da qui che deriva l'instabilità della lettura.
Soluzione:
Quando si usa alimentare Arduino board tramite la presa USB e si pretende una stabilità di funzionamento del convertitore ADC si deve evitare di usare la tensione +5V come fonte di alimentazione del sensore, si può ricorrere alla tensione di +3.3V per alimentare il sensore e in tal caso bisogna connettere +3.3V al pin AREF e non dimenticare di specificare nel codice l'intenzione di usare un riferimento esterno per AREF scrivendo nel codice quanto segue:
analogReference(EXTERNAL);
Link a buone risorse:
C'è scritto tutto in modo abbastanza chiaro, chi avesse problemi con l'inglese, può postare nel forum di Arduino chiedendo aiuto, comunque ci sono le immagini e il contenuto tecnico è affidabile
Se non riesci a risolvere il problema con questa procedura non postare in questo thread, ma aprine uno tuo nel quale spieghi più dettagliatamente possibile qualè il problema.
Domanda
Qual'è la corrente massima sopportata da un pin di Arduino?
Risposta
*** Assolutamente importante investire un poco del proprio tempo per approfondire l'argomento, che se preso alla leggera comporta il guasto del microcontroller.
La corrente massima che un pin di arduino può erogare è dipendente dal microcontroller montato su Arduino board,
pertanto per avere piena conoscenza circa questo dato bisogna documentarsi sui testi tecnici rilasciati dal produttore del microcontroller.
Arduino UNO/2009/pro montano un ATmega328P e come da datasheet la corrente massima assoluta da non superare è di 40mA per un pin, tuttavia non si può pensare di imporre una erogazione di 40mA per ogni in di arduino perchè la corrente massima che può circolare dentro il microcontroller non deve superare i 200mA.
Se non riesci a risolvere il problema con questa procedura non postare in questo thread, ma aprine uno tuo
nel quale spieghi più dettagliatamente possibile qualè il problema.
Domanda:
quale resistenza per collegare un Led ad un pin di Arduino ?
Risposta:
Ogni led di colore diverso necessita di una resistenza calcolata per far circolare nel led circa tra i 10 e i 20mA. Al link suggerito trovare una discussione, con il calcolo e una tabella in pdf riepilogativa
Domanda:
quanta corrente si può prelevare dai pin 5V e 3,3V di Arduino Uno ?
Risposta:
Questa dipende dal regolatore di corrente montato sulla board;
dal pin 5V: circa 450mA se Arduino alimentato da USB
ma se alimentato da jack, dipende: "La potenza che lo stabilizzatore con la superficie di rame disponibile può dissipare prima di andare in protezione di sovra-temperatura è ca 1W-1,5W. Adesso dipende dalla tensione di alimentazione esterna e per cui dalla differenza di tensione che lo stabilizzatore puó abbattere. Con 7V sono possibili 600mA ma con 9V solo 300mA, con 12V solo 200mA. Starei comunque molto sotto questi valori." cit. @uwefed
vedere anche LINK
dal pin 3,3V: circa 50mA (dovuti al regolatore), vedere LINK
Nota:
ricordiamo che dai pin digitali, singolo pin, circa 40mA massimi ma meglio rimare il 30% sotto questa soglia, vedere LINK
... quando poi è aperto il thread di cui abbiamo discusso, dovrai cercare di raccogliere queste domande e risposte in un unico post (o, al limite, un paio causa il limite dei 9000 char) che verrà titolato e messo nell'indice come ... non so ... "Domande & Risposte"
nid69ita: Domanda:
quanta corrente si può prelevare dai pin 5V e 3,3V di Arduino Uno ?
Risposta:
Questa dipende dal regolatore di corrente montato sulla board;
dal pin 5V: circa 450mA se Arduino alimentato da USB, circa 650mA da jack, vedere LINK
dal pin 3,3V: circa 50mA (dovuti al regolatore), vedere LINK
Nota: ricordiamo che dai pin digitali, singolo pin, circa 40mA massimi ma meglio rimare il 30% sotto questa soglia, vedere LINK
I 650 mA sono sbagliati.
La potenza che lo stabilizzatore con la superfice di rame disponibile puó dissipare prima di andare in protezione di sovratemperatura é ca 1W-1,5W. Adesso dipende dalla tensione di alimentazione esterna e percui dalla differenza di tensione che lo stabilizzatore puó abattere. con 7V sono possibili i detti 600mA ma con 9V solo 300mA con 12V solo 200mA. Starei comunque molto sotto questi valori.
Ciao Uwe
Domanda:
con quale linguaggio si programma Arduino ?
Risposta: Arduino si programma in linguaggio C/C++ e l'IDE di Arduino compila gli sketch utilizzando il compilatore gcc.
Si usano però delle librerie adatte alle MCU di queste schede, che rammentiamo non sono dei PC, con un monitor e una tastiera. Quindi comandi tipici del C/C++ quali printf e cout per la scrittura a video o scanf e cin non sono utilizzabili.
Le librerie "base" di Arduino, chiamato CORE di Arduino permette di utilizzare i comandi tipici di queste MCU, ad esempio i comandi per pilotare i pin (digitalRead, digitalWrite, analogRead, analogWrite), gestire la comunicazione I2C con Wire, oppure la comunicazione SPI.
Per molti dispositivi non gestiti dal core, perchè esterni alla MCU, ad esempio un display LCD, esistono librerie open source da aggiungere nell'IDE.
Il core "nasconde" lo scheletro di un programma C/C++ classico che deve iniziare con la funzione main. Nel core è infatti presente questo pezzo di codice (riportato solo in maniera parziale):
void main()
{ setup();
while(1)
{ loop();
}
}
Dal codice si evince come la setup() viene chiamata una sola volta mentre la loop() è chiamata di continuo, essendo inserita in un ciclo while infinito.
Link:
utile il pdf free "Tiziana Marsella - Programmare Arduino" che potete trovare qui
molto utile leggere e imparare la programmazione C/C++. Sull'argomento di testi ne potete trovare molti, anche nelle biblioteche pubbliche o su internet.