Programmare con Arduino – le basi

Inizio, con questo primo articolo, a scrivere sulla programmazione di Arduino, molto semplici e che possano aiutare chi ha grande conoscenza e dimestichezza con l’elettronica ma sente la necessità di approfondire la conoscenza della programmazione.

Come sappiamo Arduino è un prodotto incredibile, versatile e multiuso sopratutto perchè programmabile semplicemente.

Nello scorso articolo abbiamo preso confidenza con la barra degli strumenti dell’IDE di sviluppo:

Barra degli strumenti dell IDE Arduino

Barra degli strumenti dell IDE Arduino

Apriamo quindi il nostro IDE, io lo utilizzo su un MacBook:

IDE Arduino primo sketch

IDE Arduino primo sketch

in automatico, l’ide, ci suggerisce il nome del nostro primo programma, i programmi che scriveremo si chiamano sketch per cui li chiamerò indifferentemente programmi o sketch nei prossimi articoli; il nome che ci propone è semplice: sketch_jul04a ( programma, _, mese corrente jul, giorno corrente 04, lettera del programma a in quanto è il primo della giornata, i prossimi saranno b, c, d, … z ).

Per il resto il nostro foglio è vuoto, ma non farti prendere dal blocco del programmatore difronte a un listato tutto da iniziare, vediamo un po’ di sintassi utile:

Comando Significato
// Commento monoriga es.: // Il mio primo programma per Arduino
/* Apertura commento multiriga; 

es.:

/*

* Questo è il mio primo

* programma per Arduino

*/

*/ Chiusura commento Multiriga; es.: vedi sopra
void dichiarazione di funzione senza ritorno, ossia la funzione esegue delle operazioni ma non restituisce alcun valore dopo l’elaborazione
setup() funzione base (obligatoria) di ogni programma Arduino
loop() funzione base (obligatoria) di ogni programma Arduino
int dichiarazione di variabile di tipo integer (intero); utilizzato anche per dichiarare le funzioni che restituiscono valori interi
pinMode(pin,mode) funzione di configrazione di un piedino Arduino, in modo che sia utilizzabile come INPUT o come OUTPUT
digitalWrite(pin,level) invia un comando di output sul piedino selezionato (pin) di tipo digitale, pe cui 0 o 1; in sostituzione dello 0 e dell’1 si possono utilizzare le costanti LOW (0) e HIGH (1)
delay(second) funzione utile per introdurre un dalay (attesa) tra una istruzione e la successiva, il paramero second è esperesso in millesimi di secondo.

Ora che conosci i primi comandi possiamo passare a realizzare il primo programma, molto semplice, l’obiettivo è far lampegguare il led presente su Arduino con un intervallo di un secondo, questo ti permetterà di prendere confidenza con l’ide, provare subito un programma di esempio e collaudare la scheda Arduino che hai appena acquistato.

Passiamo al programma:

/*
Lampeggio
Accende e spegne il led collegato al piedino 13
di Arduino con un intervallo di un secondo,
ripetutamente.

Questo programma è di dominio pubblico.
*/

int ledPin = 13;                 // LED connesso al pin 13

void setup()
{
pinMode(ledPin, OUTPUT);      // imposta il pin come output
}

void loop()
{
digitalWrite(ledPin, HIGH);   // accende il led
delay(1000);                  // attende un seconso (1000 millisecondi)
digitalWrite(ledPin, LOW);    // spegne il led
delay(1000);                  // attende un secondo prima di ripartire
}

Descrizione del listato:

linee 1-8: contengono un commento iniziale, multiriga, che spiega ciò che il programma farà, è utile anche a chi lo ha scritto per ricordarsi cosa intendesse fare senza dover leggere tutto il codice. L’ultima linea (07) contiene una frase in  stile open-source che lascia chiunque libero di poter utilizzare il codice, modificarlo o diffonderlo. Ritengo che dato lo spirito di Arduino sia corretto riportarla sempre.

linea 10: definisco una nuova variabile di tipo intero (integer) ledPin il cui valore sarà il pin che desidero utilizzare per far lampeggare il led, siccome Arduino ha già collegato al pin 13 un led con la dovuta resistenza di protezione ho utilizzato quello come pin per il mio programma; una breve parentesi sulle variabili, a volte indispensabili, altre volte meno, in ogni caso alleggeriscono le modifiche dei programmi: se ad esempio in un secondo momento volessi collegare un led e relativa resistenza ad un altro pin di Arduino, ad esempio il pin 12, non dovrei far altro che variare il valore assegnato a ledPin da 13 a 12.

linee 12-15: definisce la funzione setup(), la prima delle funzioni obligatorie per arduino, quando Arduino inizia ad eseguire il programma caricato, cerca setup; in questa funzione puoi inserire le definizioni necessarie al programma, ad esempio definire che il pin 13 sarà utilizzato come pin di tipo OUTPUT, alla linea 14 con il comando pinMode indico ad Arduino di utilizzare ledPin ( in questo caso 13 ) come pin di OUTPUT. Nota che tutte le definizioni interne alla funzione setup() sono racchiuse tra parentesi graffe ( {} linea 13 e 15) questa sintassi è identica per tutte le funzioni che vedremo, da cui possiamo dire che una nuova funzione sarà definita con la sintassi:
definizione_di_funzione nome_funzione( eventuali parametri ) { … istruzoni e definizioni … }
void setup() { pinMode( ledPin,OUTPUT ); }

linea 17: definisco la seconda funzione obligatoria per Arduino loop, anche questa funzione non prevede la restituzione di alcun valore, per cui può essere dichiarata di tipo void e non attende parametri in input. Arduino eseguirà di continuo per tutta la durata del programma questa funzione.

linea 19: utilizzo il comando: digitalWrite impostandogli il pin 13 a livello logico alto. il comando digitalWrite accetta due parametri: il pin e il valore da inviare, in particolare siccome è un comando di tipo digitale potrai utilizzare come valore per il secondo parametro solo 0 o 1, anche nella notazione LOW o HIGH, se avessi avuto bisogno di inviare valori differenti al mio pin avrei dovuto utilizzare un altro comando come ad esempio: analogWrite.

linea 20: utilizzando il comando delay e passando come parametro 1000 in millisecondi ottengo una pausa di un secondo prima che Arduino esegua il comendo presente alla riga successiva.

linea 21: utilizzando nuovamente il comando digitalWrite imposto a 0 ( o LOW ) il valore del pin 13, ottenendo lo spegnimento del led.

linea 22: attendo un secondo prima di fargli rieseguire tutto il blocco contenuto nella funzione loop.

Non resta che cliccare sul bottone Test del programma per eseguire un test di sintassi del nostro programma, se il test risulta corretto e non ci sono errori di sintassi leggeremo in basso un messaggio di ok e l’indicazione del peso in byte del nostro programma.
Inviamo il nostro programma ad Arduino, utilizzando il pulsante di upload: upload to Arduino

Il risultato sarà quello mostrato nel video:

  • Questo sito ed i suoi contenuti è fornito "così com'è" e Mauro Alfieri non rilascia alcuna dichiarazione o garanzia di alcun tipo, esplicita o implicita, riguardo alla completezza, accuratezza, affidabilità, idoneità o disponibilità del sito o delle informazioni, prodotti, servizi o grafiche correlate contenute sul sito per qualsiasi scopo.
  • Ti chiedo di leggere e rispettare il regolamento del sito prima di utilizzarlo
  • Ti chiedo di leggere i Termini e Condizioni d'uso del sito prima di utilizzarlo
  • In qualità di Affiliato Amazon io ricevo un guadagno dagli acquisti idonei qualora siano presenti link al suddetto sito.

Permalink link a questo articolo: https://www.mauroalfieri.it/informatica/programmare-con-arduino-le-basi.html

74 commenti

2 ping

Vai al modulo dei commenti

    • Cristian il 20 Febbraio 2013 alle 10:44
    • Rispondi

    Ciao,
    mi chiamo Cristian, mi è bastato leggere le prime righe della tua guida
    su arduino per volerti subito ringraziare!
    Abito a Bergamo, lavoro a Milano e sono appassionatissimo di domotica.
    Non so come e perché ma mi è frullato per la testa di integrare nel mio
    sistema anche arduino.
    Attualmente il mio sistema domotico è basato su delle schede I/O che
    colloquiano con il server (su cui gira homeseer un programma di gestione
    domotica). Queste schede sono collegate tramite ethernet ed utilizzando il
    protocollo xAP.
    Inizierò a studiarmi le tue lezioni perché come hai scritto riesco a
    gestire la parte elettronica ma sono completamente a digiuno di
    programmazione.
    La mia idea sarebbe quella di realizzare dei moduli con arduino da mettere
    in ogni stanza in modo da non dover tirare cavi per ogni segnale I/O come
    faccio ora (cavo per l’interruttore, cavo per il carico luce, televisore,
    tapparelle ecc.). Sarebbe bello avere arduino ad esempio in camera da letto
    che gestisse ingressi ed uscite da collegare semplicemente al server con
    cavo di rete…

    Beh, ancora complimenti!

    Grazie

    Cristian

    1. Grazie Cristian,
      è per aiutare tanti appassionati come te che ho iniziato a scrivere questo Blog.

      Mauro

    • Federico il 19 Marzo 2013 alle 22:18
    • Rispondi

    Salve !! Innazitutto mi complimento per la fantastica iniziativa, c’è sempre bisogno di volenterosi e benevoli insegnanti !! Sto per acquistare anche io un arduino uno R3 ma come uso fare prima di spendere voglio provare e capire bene. Ciò mi porta ad una situazione imbarazzante….. Ho scaricato l’IDE e leggendo il tuo manuale ho iniziato a digitare le prime lettere di testo int ledPin = 13 ecc. ma non mi è ben chiaro come fare le parentesi graffe !!!! Alchè ho iniziato a dubitare che riuscirò a produrre un programma tutto mio…….. non è che potresti aiutarmi a capire come inserire sti codici ??

    1. Ciao Federico,
      il tuo problema mi sembra di natura informatica.
      Non scoraggiasti le parentesi graffe si fanno con una combinazione di tasti differente tra Win/Mac/Linux tu cosa usi?

      Se cerchi su google “parentesi graffe su Mac” sostituendo a Mac il termine Windows o linux sono certo gennaio troverai la ohm inazione che ti occorre.

      Forza forza forza … Non disperare 🙂

      Mauro

    • Federico il 20 Marzo 2013 alle 12:52
    • Rispondi

    In effetti mi è bastato chiedere a mia nipote e dopo aver riso mezz’ora della mia deficienza mi spiegato che per W7 si deve premere contemporaneamente Ctrl+Alt+Shift+ paretesi quadra !! Fatto questo ho proseguito con gli esercizi !! Ti ringrazio ancora per quello che fai, continua così !! A presto(spero con un mio progetto), Federico.

    1. Ciao Federico,
      prossimamente organizzerò un corso Base a Milano, se sei interessato continua a seguirmi.

      Mauro

        • Federico il 21 Marzo 2013 alle 19:25
        • Rispondi

        Se sono libero partecipo di sicuro !!! Il fatto è che tra meno di due mesi diventerò papà quindi fai presto !!! 😉

        1. Corro 🙂 congratulazioni !!!

  1. Ottimo tutorial, ora passo alle puntate successive!

    1. Grazie Ivan, buono studio.

    • davide il 30 Ottobre 2013 alle 10:44
    • Rispondi

    ciao sono davide,
    eeeeeeeh…vorrei farti eeeeh i compimenti per questa eeeh guida sei davvero eeeh volglio dire…eeeeh (?) il mio mito eeeeh ciao. davide!

    1. eeeeh grazie !!!

    • Mauro il 6 Dicembre 2013 alle 04:39
    • Rispondi

    Ciao Mauro,

    Innanzitutto complimento per l’egregio lavoro fatto con il corso per Arduino senza il quale io potrei solo conoscere le potenzialità, senza sperare di applicarle intendendomi di elettronica ma quasi niente di programmazione (unica esperienza con il basic del commodore 🙂 ). Tuttavia ho un dubbio: le schede aggiuntive di arduino sono sempre compatibili con le versioni successive ? Cioè ad una scheda Arduino Due, ad esempio, posso applicare schede e sensori compatibili con Arduino Uno, Duemilanove o Diecimila ?
    Grazie per la delucidazione.

    Mauro

    1. Ciao Mauro,
      grazie per i complimenti.
      Ti invito a leggere bene le caratteristiche delle board arduino che utilizzi prima di impiegarle in un progetto, dipende da ciascuna scheda e sopratutto dalla shield, in generale non sono sempre compatibili.
      Ad esempio l’Arduino due ha tutti i pin funzionanti a 3,3v per cui le shield che funzionano a 5v rischiano di bruciarti l’arduino due.

      Mauro

    • Francesco il 12 Dicembre 2013 alle 11:08
    • Rispondi

    Grazie, grazie, grazie…
    Ho una grande voglia di imparare ad utilizzare arduino ed il tuo blog è il posto giusto.
    Complimenti. 🙂

    1. Grazie Francesco.

    • Riccardo Matta il 6 Gennaio 2014 alle 12:32
    • Rispondi

    Congratulandomi per il tuo impegno per la formazione nel modo dell’elettronica vorrei portare la mia testimonianza la quale comprende la programmazione in assembler nei primi anni 90 della serie ST6 (quello con la finestrella per cancellare la Eprom con gli ultravioletti) per poi passare ai Microchip(quello che uso di più il 18f4550) programmato specialmente con compilatori della Mikroelettronica. Ora però dopo una certa riluttanza sto dando uno sguardo ad arduino (mi intriga che l’idea sia venuta ad un italiano e non a un americano o cinese).
    Tutto questo non per raccontare la mia vita di appassionato di elettronica ma per chiederti se secondo te in questo passaggio sto andando a guadagnarci o mi troverò difronte ad un impoverimento delle risorse a disposizione (penso per esempio a tutte le librerie che ho a disposizione su Mikroe).

    1. Ciao Riccardo,
      complimenti a te per il passato da elettronico specialista 🙂
      Io ho ritrovato la mia passione per l’elettronica con Arduino ed ho scoperto il mondo, anche se prima di arduino conoscevo pochissimo di elettronica da autodidatta.
      Posso senza dubbio dirti che troverai una community grandissima e con grande disponibilità alla condivisione di librerie e tutorial per questa piattaforma di prototipazione.

      Dal background culturale che hai dubito troverai difficoltà a contribuire qualora le risorse a tua disposizione fossero inferiori alle attese.

      Mauro

    • Luigi il 28 Settembre 2014 alle 19:44
    • Rispondi

    Salve ho dato una lettura veloce ai suoi tuorial e non posso fare altro che complimentarmi per la chiarezza e la semplicità con cui sono sviluppati.
    Mi sto avvicinando a questo fantastico mondo, ho programmato in passato per via dell’università in visual basic, quindi ho qualche nozione in merito, ma sono completamente digiuno in termini di elettrotecnica ed elettronica.
    Saprebbe consigliarmi delle giude o dei tutorial con cui iniziare? Vorrei seguire degli steps sensati, ed apprendere nozioni passo per passo, seguendo un percorso che sia un crescendo perchè sono dell’idea che troppe info tutte insieme creano solo confusione.
    Sentitamente la ringrazio, e rinnovo i miei complimenti.
    Luigi

    1. Ciao Luigi, hai già seguito il mio corso online GRATUITO su elettronica ed arduino?

    • Filippo Paniccia il 7 Ottobre 2014 alle 23:00
    • Rispondi

    Salve, sono un neofita,completamente digiuno di elettronica, ma mi piace l’idea di poter fare qualcosa con Arduino, per cui dopo aver scoperto il tuo sito, ho iniziato a muovere i primi passi.
    Ho terminato il primo programma, per il blink del led, dopo qualche correzione ho terminato il programma, ma non riesco a sbloccare il seguente messaggio di errore “avrdude: stk500_getsync() not in sync: resp=oxoo.
    mi sai dire che cosa significa?
    Grazie in anticipo ed ancora complimenti per sito, è utilissimo.

    1. Ciao Filippo,
      bene, sono contento che ti sia stato utile il mio corso arduino.
      Il messaggio si riferisce ad un errore di comunicazione con la scheda arduino, di solito si risolve scollegando e ricollegando arduino al pc.
      Ho anche scritto un articolo dedicato ai più comuni errori che si presentano quando inizi con arduino.

    • Livio il 6 Gennaio 2015 alle 17:50
    • Rispondi

    Buonasera
    Premetto di essere un po’ a digiuno per i micro controller
    Ai miei tempi non esistevano ancora , infatti oggi lavoro ancora tantissimo con circuiti logici
    La mia domanda che piattaforma di Arduino è consigliabile acquistare , diciamo per iniziare
    Da principianti solamente per quanto riguarda la parte di programmazione , ma non per l hardware
    Cordiali saluti
    Livio

    1. Ciao Livio,
      io ti consiglierei un kit da un rivenditore ufficiale per essere sicuro di avere sia arduino uno sia il manuale con i primi passi da seguire.

    • Jack il 6 Febbraio 2015 alle 16:56
    • Rispondi

    Ciao io mi chiamo Jack e ho 16 anni,
    nel programma hai selezionato come pin di uscita il 13 però si è acceso il led sulla scheda mentre sul pin non hai collegato nulla, volevo sapere perchè si accende quel led, e poi un’altra cosa: che differenza c’è tra scrivere
    int ledPin = 13;
    e
    #define LED 13;
    grazie

    1. Ciao Jack,
      sull’arduino è presente un led, denominato “L” connesso al pin 13. E’ il led “L” che hai visto accendersi.
      Quando dichiari un pin con il metodo
      int ledPin = 13;
      fai uso di una variabile che impegna 2 byte di memoria;
      Quando usi:
      #define ledPin 13;
      definisci una costante che non fa uso della memoria.

      Se vuoi conoscere meglio i comendi arduino puoi leggere il reference sul sito arduino in cui trovi ad esempio la spiegazione della define:
      http://arduino.cc/en/Reference/define

    • luciano il 7 Marzo 2015 alle 22:59
    • Rispondi

    Ciao ho partecipato al primo corso su Arduino mi è piaciuto tantissimo ma come pensavo la programmazione è l’ostacolo piu’ duro visto che la mia preparazione scolastica di molto tempo fa è delle medie.
    Comunque ho decisi di iscrivermi al corso due del 20/03/2015. ciao Luciano.

    PS mi consigli una buona lettura sul tema!

    1. Ciao Luciano,
      mi fa piacere che tu mi abbia scritto, denota che non vuoi mollare alla prima difficoltà e questo va premiato.
      Come lettura io ti consiglio di leggere il corso arduino gratuito presente nel blog, troverai molti argomenti approfonditi in aula e potrai rileggerli tutte lo volte che lo desideri. Ho realizzato il Blog anche con lo scopo di fornire un supporto extra corsi in aula.
      In ogni caso se prima del corso del 21/03/2015 se vuoi chiedermi dei chiarimenti sugli articoli del corso base che leggi, usa pure i commenti io provo a risponderti quanto prima.
      Mauro

    • Massimo il 11 Maggio 2015 alle 18:10
    • Rispondi

    Sto iniziando da poco e ho seguito la tua prima lezione e devo farti veramente i complimenti per come riesci a rendere chiara la Lezione .Grazie

    1. Grazie Massimo.

    • Lucio Quadri il 11 Giugno 2015 alle 13:04
    • Rispondi

    complimenti vivissimi
    per il lavoro della MADONNA che stai facerndo
    il tuo sito e gli argomenti trattati (arduino)
    mi sono di grande aiuto …
    ho preparazione tecnica elettronica del … 1979 … secolo, anzi millennio scorso …
    migrata ad informatica nel 1981 … ( quando avevo ancora i capelli .. )
    adesso riesco a congiungere i due “saperi” grazie ai tuoi articoli
    GRAZIE

    1. Grazie Lucio

    • Andrea il 23 Luglio 2015 alle 23:03
    • Rispondi

    Ciao sono andrea ho 16 anni e ho appena iniziato ad interessarmi di robotica . Essendo un principiante non ho idea di quale scheda arduino comprare .. mi potrebbe dare un consiglio ?
    PS le faccio i complimenti perchè pur essendo alle prime armi con la programmazione le sue parole mi fanno venir voglia di imparare… e si fidi non avviene spesso =)

    1. Grazie Andrea, mi fido 🙂
      io inizierei con una Arduino Uno, la più diffusa e quella per la quale trovi il numero maggiore di schemi,sketch ed esempi

  2. Ciao Mauro,
    mi chiamo Arrigo e già qualche volta sono ricorso ai tuoi preziosi consigli, ma prima debbo farti i complimenti per la dedizione CONTINUA (ebbene sì, l’ho gridato!)
    Molti tuoi articoli sono stati preziosi sia a me che a chi ha voluto cominciare a pasticciare con me con questa scheda stupenda.
    Io avevo fatto qualcosa con i PIC e avevo la comodità di creare un eseguibile che poi caricavo anche su tre di seguito senza dover compilare.
    Posso fare lo stesso con arduino, c’è un trucco, qualsiasi cosa che mi permetta di non dover ricompilare?
    Per me sarebbe utile specialmente per il piccolo mini che ne uso quattro e tutti con lo stesso programma (gichini da robot) e deve dire che è frustrante ad ogni modifica dover ricompilare quattro volte.
    Puoi gentilmente darmi una dritta? o dirmi anche così è e rimane (almeno mi tolgo il pensiero)
    Ancora complimenti per i tuoi splendidi tutorial che ci hanno permesso di crescere numerosi.
    Ciao

    1. Ciao Arrigo,
      fino a qualche tempo fa era possibile solo sfruttando le caratteristiche del programmatore AVR, dalla vesione 1.6.4 hanno introdotto un sistema da linea di comando per trasferire l’HEX direttamente nell’arduino con l’IDE stesso.
      Ti consiglio di leggere il mio articolo dedicato all’arrivo dell’IDE 1.6.4

    • Enzo il 17 Settembre 2015 alle 08:50
    • Rispondi

    buon giorno Mauro,ti volevo chiedere mi puoi dare un listato di arduino nel quale “listato accensione di un led”il led si accende a un ora prestabilita e si spegne dopo un ora?oppure mi puoi dare un consiglio dove posso acquistare i listati?ti ringrazio anticipatamente,enzo

    1. Ciao Enzo,
      chi si avvicina al mondo arduino e legge il mio blog lo fa con lo scopo di imparare da solo a scriversi i progetti ed i programmi.
      Per questo motivo ho creato anche un corso arduino on-line gratuito che puoi leggere.
      Se invece desideri commissionarmi un progetto puoi trovare la procedura nella pagina “sostienimi” del blog.

        • Enzo il 18 Settembre 2015 alle 15:47
        • Rispondi

        buon giorno mauro,non immaginavo mai una risposta cosi’ sollecita,ti ringrazio,son i miei primi approcci con arduino,sono certo che ci risentiremo,leggero’ la procedura nella pagina “sostienimi”e ti faro’ sapere,grazie.Enzo.

    • Enzo il 18 Settembre 2015 alle 20:16
    • Rispondi

    ciao Mauro,eccomi a spiegarti il mio curriculum sono un ex elettronico,ho lasciato circa 30 anni fa’,ho 2 figli che stanno nel campo dell’assistenza televisia ecc….che come tutti i figli non hanno mai tempo x i genitori,ho 77 anni sono pensionato, ti vorrei chiedere in attesa di conoscere arduino meglio, ti pregherei (per regolarmi economicamente)del costo del progetto xl’accensione di un led a un ora da programmare e rispegnerlo dopo un tempo da programmare,in attesa porgo sentiti saluti Enzo

    1. Ciao Enzo,
      il progetto che hai in mente non è complesso, richiede solo un po’ di tempo da dedicargli.
      In questo periodo sono impegnato con la realizzazione di progetti personali e professionali almeno fino a fine ottobre, dopo tale data potrei dedicare qualche giorno al tuo progetto.
      Ti chiedo la cortesia di scrivermi sulla casella info ( quella da cui ti arriva questa risposta ) in tale data.

    • enzo il 20 Settembre 2015 alle 09:04
    • Rispondi

    ti ringrazio mi faro’ risentire a fine ottobre,buon lavoro

    • mirko zanellato il 26 Settembre 2015 alle 14:16
    • Rispondi

    ciao ho provato a copiare e incollare il primo programma di esempio, riguardo al led del pin 13, però nel test mi da questo errore:
    Arduino:1.7.7 (Windows 8.1), Scheda:”Arduino Uno”

    sketch_sep26a.ino: In function ‘void setup()’:

    sketch_sep26a.ino:21:6: error: redefinition of ‘void setup()’

    sketch_sep26a.ino:1:6: error: ‘void setup()’ previously defined here

    sketch_sep26a.ino: In function ‘void loop()’:

    sketch_sep26a.ino:26:6: error: redefinition of ‘void loop()’

    sketch_sep26a.ino:6:6: error: ‘void loop()’ previously defined here

    Errore durante la compilazione

    Questo report potrebbe essere più ricco
    di informazioni con
    “Mostra un output dettagliato durante la compilazione”
    abilitato in “File > Impostazioni”

    1. Ciao Mirko,
      hai incollato il codice in uno sketch che già possiede la definizione delle funzioni setup() e loop(), per ogni sketch queste funzioni devono essere uniche.
      Lo puoi facilmente capire dal messaggio di errore:

      sketch_sep26a.ino:21:6: error: redefinition of ‘void setup()’
      sketch_sep26a.ino:1:6: error: ‘void setup()’ previously defined here

      e dal medesimo per la loop():

      sketch_sep26a.ino:26:6: error: redefinition of ‘void loop()’
      sketch_sep26a.ino:6:6: error: ‘void loop()’ previously defined here

    • Marco il 24 Novembre 2015 alle 16:59
    • Rispondi

    Buonasera, sono alle prime armi con arduino uno, vorrei creare dei blocchi di programma cioè mi spiego voglio che si accenda un led avendo però due ingressi alti cioè due pulsanti premuti in due porte d’ingresso separate.
    Come faccio?
    Spero in una risposta Saluti

    1. Ciao Marco,
      nel blog ci sono numerosi articoli in cui la doppia condizione è utilizzata.
      Continua a leggere il corso base e imparerai a farlo.

    • antonio il 8 Gennaio 2016 alle 17:17
    • Rispondi

    Ciao Marco,
    grazie per il tutorial che hai prodotto, molto semplice da capire. Utilizzo un arduino mega 2560 collegato usb ad un mac, il programma viene caricato ma il led non esegue i comandi, non si accende né si spegne, da cosa può dipendere?
    Grazie

    1. Ciao Antonio,
      mi chiamo Mauro, ma va bene lo stesso.
      Le ultime versioni Arduino Uno, dalla R3 in poi, non hanno bisogno di driver su Mac.
      Controlla nelle proprietà del mac se la scheda è stata riconosciuta tra le periferiche USB.

    • Leonardo Menegatti il 23 Aprile 2016 alle 16:36
    • Rispondi

    Buongiorno, le righe 01 a 08 e vanno tolte prima di caricare il codice da far eseguire alla scheda ?

    1. Ciao Leonardo,
      assolutamente no, i commenti sono ignorati dal compilatore.

    • Toni Ficarra il 1 Maggio 2016 alle 18:20
    • Rispondi

    Buongiorno, complimenti, veramente interessante. Ho da sempre avuto una tendenza per la domotica ma, mai messa in pratica. Per essere conciso, come comincio?
    Compro da subito un kit? se si quale?
    Grazie e ancora complimenti.

    1. Ciao Tony,
      non mi hai scritto che tipo di preparazione tu abbia, ti consiglio di iniziare dal mio corso on-line e successivamente potresti partecipare ad un percorso formativo in aula per approfondire le tue conoscenze su arduino.

    • Toni Ficarra il 5 Maggio 2016 alle 16:27
    • Rispondi

    Ciao Mauro, scusa la carenza della presentazione; più che una preparazione, sono da sempre stato affascinato dall’elettronica, quindi, se non per un impianto elettrico (anche se fatto bene), sono digiuno. Per il corso online, sicuramente, appena trovo un po di tempo da poterci dedicare, lo farò con estremo piacere (intendo un po di tempo senza avere distrazioni).
    Per il corso in aula credo che sia improbabile, vista la mia residenza in Sicilia in prov. di Caltanissetta.
    Lo frequenterei molto volentieri, nel caso ti decida a farlo nelle mie zone.
    Per quanto riguarda il kit, ti chiedevo informazioni circa il materiale che serve per mettere subito in pratica quello che si spiega, già da subito nelle lezioni. Credo che leggere e subito provare, sia il migliore metodo per assimilare meglio la teoria. Ti sarei grato se mi indicassi un kit o, una lista di quello che occorre per le prime lezioni.
    Grazie e, con piacere, rinnovo i complimenti
    Toni Ficarra

    1. Ciao Toni,
      puoi provare con il kit base arduino.cc ufficiale.
      Lo puoi acquistare sul sito ufficiale arduino.cc

    • marco il 16 Settembre 2016 alle 14:48
    • Rispondi

    Ciao Mauro, sono ai primi passi nell’elettronica ma leggendo questo blog mi ha affascinato e mi ha fatto pensare a tanti piccoli progetti da mettere in atto.
    il primo progetto nasce da una mia grande passione, la pesca, vorrei realizzare un contapesci a batteria.
    l’oggetto dovrebbe avere una fotocellula che al passaggio di un pesce/oggetto incrementa di 1 il display, mi sembra che arduino sia proprio adatto a questo progetto, mi sapresti dire quali componenti servirebbero per poter costruire questo fish counter?

    grazie

    1. Ciao Marco,
      mi fa piacere leggere che ti sia appassionato leggendo il blog.
      Di sensori ne esistono moltissimi e tanti li ho descritti proprio in questo blog.
      Non essendo un esperto di pesca e non conoscendo il tuo progetto posso suggerirti di cercare nel blog il sensore più adatto, leggere e comprendere come controllarlo ed utilizzarlo per il tuo progetto.

    • carlo il 19 Settembre 2016 alle 22:28
    • Rispondi

    Salve, innanzitutto ci tengo a dirti che ritengo doveroso farti i complimenti per la bellissima ed utilissima tua iniziativa.
    Non so se riuscirò a spiegare bene quello che voglio ottenere, in pratica vorrei sapere come si può fare per controllare a video i valori assunti dalle variabili del programma che sta girando su arduino, in modo da controllare quello che succede.
    Resto in attesa della tua risposta e ti ringrazio anticipatamente.

    1. Ciao Carlo,
      procedendo nella lettura del mio corso on-line gratuito arduino e genuino troverai la descrizione del monitor seriale e la descrizione di come usarla per leggere i valori che ti interessano dello sketch.

    • Ezio il 13 Novembre 2016 alle 19:45
    • Rispondi

    ciao Mauro
    complimenti per il tuo sito
    grazie ai tuoi insegnamenti ho compreso molto su arduino e dopo solo una qundicina di giorni partendo da un piccolo progetto di base lo stò ingrandendo per il mio scopo personale
    una serra automatizzata
    tante cose ho imparato la più importante è >che non troverai mai un progetto ottimizzato personale, se non sei tu che lo crei

    1. Grande Ezio !!!
      Spirito giusto e concordo con la tua massima “non troverai mai un progetto ottimizzato personale, se non sei tu che lo crei”

  3. Salve Mauro, come d’accordo scrivo in pbl così da dare anche agli altri la possibilità di conoscere. Da tempo appassionato di simulazione volo, ho iniziato ad armeggiare con arduino nell’intento realizzare delle periferiche.
    Premetto che di elettronica ne mastico poco ma non mi scoraggio. Primo lavoro fatto: controllo volume liquidi. ora vorrei realizzare alcune parti del cockpit del cessna 172 e con esso poter interagire con il programma di simulazione. Io ho X-Plane vers 10 e di recente la Vers. 11 regolarmente acquistati. Seguendo le indicazioni trovate, ho provato ad installare i plugins di ArdSimX sia in X-Plane e sia in arduino ma quando cerco di accedere alla periferica, X-Plane 10 o 11 mi dicono che deve essere installata la libreria. Ho provato e riprovato ma il risultato è sempre lo stesso… nulla. Dove sbaglio? Grazie infinite

    1. Ciao Bruno,
      non conosco l’X-Plane, è basata su arduino?
      Che errore ricevi dall’IDE arduino?

    • Calla il 17 Marzo 2017 alle 21:22
    • Rispondi

    Ciao, complimenti davvero per il tuo blog: finalmente ho capito com’è fatto Arduino e, pur se in minima parte, cosa può fare. Grazie! Io non so nulla di elettronica. Le mie domande ti potranno sembrare stupide, ma ti prego di portare pazienza. Attualmente i miei studenti elaborano (con excel) dati meteo scaricati in formato csv dal sito Arpa. Vorrei utilizzare Arduino per rilevare IN PROPRIO temperatura e umidità in ESTERNO (campo aperto, per capirci). 1° problema: ho capito che si può fare, ma non so esattamente quali sensori mi servono. 2° problema: come gestisco l’aggiornamento dei dati? provo a spiegarmi meglio: se la rilevazione dei dati avviene senza soluzione di continuità, come funziona dal punto di vista temporale la registrazione degli stessi dati in formato csv? 3° problema: posso inviare file csv da Arduino al server della scuola via wifi? Perdona la stupidità, ma ho bisogno di capire. Grazie anticipatamente!!!

    1. Ciao Calla,
      nessuna domanda è stupida a mio avviso, magari complessa per il livello di conoscenze posseduto, ma studiando tutto può essere colmato.
      Cerco di rispondere:

      1° i sensori sono milioni nel mondo dipende da ciò che desideri monitorare e con quali tolleranze oltre, ovviamente, a quanto vuoi spendere. In un FabLab di milano che frequento c’è un fisico che sperimenta sensori meteo specifici, ad esempio, e costosi o autocostruiti. Nel blog trovi tanti sensori che puoi usare e tanti esempi su come usarli: ad esempio i DHT11..22..ecc..

      2° non so se ho capito: vuoi segnare data ed ora per ogni rilevazione? userai un RTC, prova a leggere i miei articoli sulle centraline meteo;

      3° questa è una cosa più complessa che necessita di conoscenze non solo di arduino, ma anche di networking, server, database e interfacce. Si può fare in moltissimi modi ma devi definire bene quello che devi/puoi/vuoi fare e poi cerchi nel blog tutti gli articoli che ti possono aiutare.

    • aldo papalini il 27 Marzo 2017 alle 09:16
    • Rispondi

    ciao mauro
    ho l’esigenza di utilizzare delle librerie e vorrei avere delle indicazioni su come poterle inserire negli sketch.
    sarebbe gradita una modalità per non tralasciare nulla di quanto necessario per la installazione.
    ho ad esempio, un sensore ds18b20 per consentire la misura delle temperature su liquidi ma mi resta difficile caricare la libreria necessaria al suo funzionamento.
    mi sono permesso di disturbarti sull’argomento in quanto ritengo che sia un problema abbastanza generale.
    ringrazio anticipatamente per l’attenzione.
    aldo

    1. Ciao Aldo,
      trovi molti miei articoli in cui spiego come caricare ed utilizzare le librerie nell’IDE.
      Esistono almeno 3 modi di farlo e sono tutti descritti negli articoli che ho scritto.

    • Paolo C. il 25 Gennaio 2018 alle 18:57
    • Rispondi

    Ciao Mauro
    dopo aver acquistato arduino uno ho installato l’IDE e seguendo le istruzioni sono riuscito a caricare “blink” .
    Quando collego arduino alla usb il led interno L si accende e si spegne con il ritardo impostato, perciò fin quì tutto bene. Mi accingo a caricare un nuovo sketch preso dagli esempi e viene compilato poi inizia un lungo periodo di caricamento di parecchi secondi che termina con un messaggio in rosso che in inglese dice:
    avrdude:stk500_getsync () attempt 10 of 10 : not in sync.
    Ho letto qualche tutorial ma il mio inglese non è il massimo, ho reinstallato l’IDE ma non cambia nulla.
    Cosa sta succedendo?
    Grazie per la tua disponibilità.
    Paolo

    1. Ciao Paolo,
      che modello di Arduino hai acquistato ? E’ un prodotto originale ?

        • Paolo C. il 26 Gennaio 2018 alle 12:47
        • Rispondi

        Ciao Mauro
        Non è un prodotto originale Arduino unio R3 REV3 compatibile

        1. Ciao Paolo,
          potrebbe dipendere da come è stata realizzata l’interfaccia usb-seriale.
          Prova a verificare che tipo di interfaccia è stata utilizzata ed eventualmente chiedi al produttore delle specifiche sui driver da utilizzare

    • francesco il 10 Febbraio 2018 alle 14:25
    • Rispondi

    ciao! ma non esiste un programma per programmare in modo grafico arduino??

    1. Ciao Francesco,
      si ne esistono diversi, il più usato è scratch, ma non è l’unico.

    • Fabiano il 14 Novembre 2020 alle 14:47
    • Rispondi

    Ciao Mauro, grazie per la guida. Forse sono stupido io, ma non trovo nessun riferimento al tipo di linguaggio di programmazione che spieghi. Che linguaggio è?

    Grazie

    1. Ciao Fabiano,
      Arduino usa un linguaggio “C like” ossia simile al C ma con comandi specifici per questo microcontrollore.

  1. […] linea 14: dichiaro la funzione loop(), che questa una vecchia conoscenza, vedi tutorial precedenti […]

  2. […] 10: definisce le operazioni di impostazione della scheda arduino (in un precedente articolo ho definito meglio a cosa serve la funzione setup() ), NOTA: in questo esempio non abbiamo definito […]

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.