cosa bisogna sapere per programmare con arduino

Ciao a tutti. Da poco ho comprato arduino uno e per ora ho sperimentato solo il classico led che lampeggia. Ho in mente un bel progetto abbastanza semplice per uno alle prime armi come me, solo che sono completamente ignorante in materia "programmazione". Quale linguaggio devo conoscere per imparare a programmare con arduino? Sapete consigliarmi qualche buon libro o guida in italiano? Grazie in anticipo

Bisogna conoscere sostanzialmente il linguaggio C. Anche io sono alle prime armi e posso dirti che su questo forum sono ben lieti di dare una mano a chi ha voglia di mettersi in gioco ed imparare a creare con Arduino. Che progetto vorresti realizzare?

C'è da studiardi BENE il C.Ci sono tante guide in PDF gratuite ed in italiano, la prima cosa è scaricarsene una e studiarsela. Fatto questo, bisogna aprire il Reference: http://arduino.cc/en/Reference/HomePage

Qui ci trovi tutti i comandi e le funzioni specifiche di Arduino con i quali puoi interagire con l'hardware. A questo punto non resta che iniziare a sperimentare.

Grazie mille a tutti e due. Cercherò di studiare per bene qualche guida. Per supremo: pensavo ad un cubo led 4×4×4 o 5×5×5

Nel forum ci sono dei thread non molto vecchi con dei link a delle guide anche in italiano.

Cercate su google "arduino tiziana marsella", è una prof che ha messo disponibile una buona guida in ita sulla programmazione di Arduino.

Poi c’è sempre il topic “Link Utili” nella sezione Megatopic.

leo72:
C’è da studiardi BENE il C.Ci sono tante guide in PDF gratuite ed in italiano, la prima cosa è scaricarsene una e studiarsela.
Fatto questo, bisogna aprire il Reference:
http://arduino.cc/en/Reference/HomePage

Qui ci trovi tutti i comandi e le funzioni specifiche di Arduino con i quali puoi interagire con l’hardware. A questo punto non resta che iniziare a sperimentare.

be…non serve proprio tutti il “C” diciamo che arduino utilizza una versione moolto semplificata… io ti consiglio di leggere delle guide di programmazione SOLO per arduino se quello è il tuo obbiettivo e non tutto il “C” per non perderti in cose che per arduino sarebbero inutili…

se cerchi “programmazione arduino pdf” “primi passi arduino pdf” su google trovi di tutto e di piu’… :wink:

CASPA: be...non serve proprio tutti il "C" diciamo che arduino utilizza una versione moolto semplificata...

Completamente in disaccordo.

Arduino si programma in C e C++. L'IDE di Arduino e le librerie di supporto fornite dall'Arduino Team semplificano molto le operazioni di scrittura e programmazione, ma dire che non tutto il C serve è un po troppo. Giusto rimanderei gli argomenti riguardante i puntatori del C e le classi del C++, ma il resto serve. I comandi base, le iterazioni, i cicli, le funzioni con o senza restituzione, i parametri, le variabili, le costanti... sono tutti elementi del C. Certo che se ti vuoi fermare al blink... :sweat_smile:

PaoloP:

CASPA: be...non serve proprio tutti il "C" diciamo che arduino utilizza una versione moolto semplificata...

Completamente in disaccordo.

Idem.

CASPA: be...non serve proprio tutti il "C" diciamo che arduino utilizza una versione moolto semplificata... io ti consiglio di leggere delle guide di programmazione SOLO per arduino se quello è il tuo obbiettivo e non tutto il "C" per non perderti in cose che per arduino sarebbero inutili..

Non confondiamo il fatto che molte guide per il C sono fatte per imparare un linguaggio che è usato anche (anzi, inizialmente) su computer ma è comunque un linguaggio che, tole le lib per un sistema operativo e messe quelle per gestire un microcontrollore, è tale e quale a quello usato sull'Arduino. Sempre di C si tratta. Che poi uno lo usi per aprire un file o per leggere un dato dalla seriale, non cambia nulla.

leo72: Non confondiamo il fatto che molte guide per il C sono fatte per imparare un linguaggio che è usato anche (anzi, inizialmente) su computer ma è comunque un linguaggio che, tole le lib per un sistema operativo e messe quelle per gestire un microcontrollore, è tale e quale a quello usato sull'Arduino. Sempre di C si tratta. Che poi uno lo usi per aprire un file o per leggere un dato dalla seriale, non cambia nulla.

Concordo. Inoltre credo che spesso i principianti, prendono un po' sottogamba la questione software, come se nei microcontrollori fosse una cosa secondaria. In realtà secondo me l'approccio giusto sarebbe cominciare a studiare il C con un buon libro, realizzando i primi programmi che apparentemente sembrano stupidi e scontati ma che in realtà ti aiutano a vedere le cose sotto un altro punto di vista. Io cominciai a studiare il C con il Kernighan & Ritchie e mi sono trovato abbastanza bene anche se all'inizio sembra un po' criptico. Un altro ottimo libro che mi sento di consigliare è "Linguaggio C - Bellini & Guidi" che trovo sia più chiaro per chi si affaccia per la prima volta alla programmazione. Trovo inoltre che cercare di imparare a programmare modificando sketch di progetti trovati in rete senza capirne una virgola sia molto fuorviante e non fa altro che confondere le idee a chi già probabilmente ce le ha confuse. Detto questo mi unisco a chi ti ha già suggerito di prendere un buon libro e vedrai che alla fine i risultati arriveranno più in fretta di quanto non possano arrivare scopiazzando codice in giro per la rete...

Ok forse mi sono spiegato male... Non ho detto che non occorre il "C" volevo solo dire che partire con un librone di "C" Senza fare pratica con la Ide che ti semplifica la vita in alcuni aspetti, Arduino e gli sketch di esempio potrebbe sconfortare chi si affaccia a questo mondo. E' come imparare modellismo partendo dall'aereo e non dal carrettino. Almeno io sono abituato così... mi appassiono a una cosa e poi nel tempo la sviluppo e la approfondisco il piu' possibile ma prima la cosa mi deve appassionare e non sommergermi di dati che all'inizio non servono. ... se poi ti appassiona allora si che devi prenderti il librone di C del superesperto e farlo tuo... Io mi sono affacciato ad arduino 2 mesi fa.. (alcune basi di programmazione NON di C già le conoscevo.. questo devo ammetterlo) e in 2 mesi sono stato in grado di realizzare (uno schifosissimo per altri ma entusiasmante per me) controller per acquario (chi segue aquaportal mi conosce sono stato moderatore per una decina di anni ;-)) come piaceva a me... con i sensori che volevo io ... con le funzioni che volevo io... ora se voglio metterci menu e sensore ph ecc.. devo studiare ma quella basetta autoprodotta in casa... quello sketch di 50 righe che ho fatto... quella scatoletta funzionante mi spinge ad approfondire il discorso "C" e il discorso "elettronica" .. ma se non fossi arrivato a quella scatoletta funzionante in cosi poco tempo credo che mi sarei demoralizzato... non sottovalutate l'oggetto, la funzione, l'esperienza che ti porta ad approfondire.

Mi sto dilungando... scusate.. insomma... non è che "nuove elettronica" o "scuola radio elettra" vi diceva... studiatevi TUTTA la teoria dell'elettronica.. poi quando sapete cose è come funziona in teoria un (non mi viene in mente l'oggetto piu' complesso in elettronica)... cominciate a costriure interruttore con lampadina e batteria... o no ..

Ok, seguiamo il tuo ragionamento.
Prendo uno sketch e lo do ad un tipo che non conosce il C e non sa programmare, e poi gli chiedo di dirmi che cosa fa quel programma. :wink:

Anche tu avevi delle basi di programmazione, e sono quelle che ti hanno aiutato.
Se non hai neanche quelle, devi partire da zero. Se segui il forum avrai visto che puntualmente ci sono persone che pongono quesiti su cosa sia una funzione, sull’inversione dei simboli fra assegnazione e comparazione, sul perché un numero in virgola mobile assegnato ad una var di tipo int viene troncato. Queste sono quelle che si chiamano “basi”, e vanno studiate.
Può risultare noioso, può sembrare inutile, ma sono poi cose che ti aiutano non poco in seguito.

leo72: Ok, seguiamo il tuo ragionamento. Prendo uno sketch e lo do ad un tipo che non conosce il C e non sa programmare, e poi gli chiedo di dirmi che cosa fa quel programma. ;)

Anche tu avevi delle basi di programmazione, e sono quelle che ti hanno aiutato. Se non hai neanche quelle, devi partire da zero. Se segui il forum avrai visto che puntualmente ci sono persone che pongono quesiti su cosa sia una funzione, sull'inversione dei simboli fra assegnazione e comparazione, sul perché un numero in virgola mobile assegnato ad una var di tipo int viene troncato. Queste sono quelle che si chiamano "basi", e vanno studiate. Può risultare noioso, può sembrare inutile, ma sono poi cose che ti aiutano non poco in seguito.

si ma come dicevo nel primo post quelle basi le trovi nei vari libri "arduino da zero" e simili... poi semmai ... dopo dicevo che si puo' approfondire come dite voi con manualoni di programmazione "C" ma se smontate uno che inizia dicendogli di studiare il manualone... :D (mY opinions).. quello al 99% ci rinuncia e non si avvicina neanche alla cosa..

2 esempi...

a) il 99 percento di chi si avvicina alla acquariologia inizia con un piccolo acquario semplice poi con il tempo, approfondisce, cresce e si appassiona sempre piu' ... ci mette reattori di calcio, bomba con ormoni ecc.. :grin: ... solo dopo arriva il vero divertimento... XD

b) quando insegnavo pc (word, excel ecc... ) non partivo dal manualone di word e excel... ma i primi 2 giorni portavo un vecchio pc in classe e lo facevo smontare .. toccare il pc.. rendere REALE quell'oggetto sconosciuto... capire come funziona cose è quella scheda piena di componenti... la CPU, il floppy (... hehehe secoli fa..) aiutava moltissimo poi a capire tutto il resto... infatti tutti quelli che uscivano dai miei corsi erano anni luce avanti a altri che studiavano solo il manualone... come disse jobs.. a ogni oggetto bisogna dargli un'anima altrimenti rimane solo un oggetto :D

Io, concordo con Campa, ma la cosa piu' importante e' che non concorda solo TEstato, ultimo umile scrittore di questo forum, ma Banzi. Il libro di partenza da zero di Banzi spiega proprio questo, buttarsi, sporcarsi le mani, creare qualcosa di cui si capisce un x percento, e poi pian piano approfondire. Ho iniziato a leggere tante volte libri di programmazione ed avevo negli anni sempre abbandonato. La differenza con Arduino e' stata proprio in questa, realizzo qualcosa di fisico e funzionante, capendone una percentuale, poi pian piano mi metto a studiare per capire il tutto. Nel mio primo progetto, l'orologio a valvole che vedete a fianco, ancora oggi ho una tab, in cui ho buttato tutta la parte di conversione e smistamento dei numeri in BCD, che non capisco, prima o poi l'affrontero' (ci sono un sacco di asterischi, ed in genere sono brutta cosa, vedi puntatori) ma il resto l'ho progettato, l'ho pensato, l'ho modificato, l'ho studiato e capito.

Diciamo che in generale, così come accennato da CASPA, dipende dalle previsioni che uno fa sul proprio percorso. È ovvio che se uno utilizza Arduino solo per hobby o per piccoli progetti sporadici potrebbe evitare di scendere nei meandri del C dato che la maggior parte delle volte utilizzerà sempre gli stessi pochi strumenti imparati sul campo... Se invece stiamo parlando di uno studente che grazie ad Arduino si è avvicinato all'elettronica non più amatoriale ma proprio sotto forma di studio e pensa che in un lontanissimo futuro (soprattutto in italia) potrebbe diventare un mestiere allora è sicuramente meglio prendere i libroni e cominciare a studiare dalle basi. Mi sono sentito di consigliarti un buon libro in quanto io credo di essere più sul secondo tipo di utente medio Arduino...

In ogni caso considera che avere delle buone basi di C acquisite con un dato criterio è molto utile per entrambi i tipi di utenti e ti permette di essere un po' più indipendente dal punto di vista software...

nid69ita: Nel forum ci sono dei thread non molto vecchi con dei link a delle guide anche in italiano.

Cercate su google "arduino tiziana marsella", è una prof che ha messo disponibile una buona guida in ita sulla programmazione di Arduino.

... questa me l'ero persa... molto bella...

Ma chi ha detto di andare a fondo nel C? Io ho detto che bisogna almeno conoscere le basi del C. ;)

Per usare l'Arduino non serve conoscere struct/enum/puntatori ma almeno le fondamenta del linguaggio servono, altrimenti con l'Arduino non ci fai nulla. Concordo invece con voi che lo "Sporcarsi le mani" vale anche in campo informatico, perché leggere e basta non aiuta.

leo72: Ma chi ha detto di andare a fondo nel C? Io ho detto che bisogna almeno conoscere le basi del C. ;)

Per usare l'Arduino non serve conoscere struct/enum/puntatori ma almeno le fondamenta del linguaggio servono, altrimenti con l'Arduino non ci fai nulla. Concordo invece con voi che lo "Sporcarsi le mani" vale anche in campo informatico, perché leggere e basta non aiuta.

a quanto pare stiamo tutti dicendo la stessa cosa .... :D :D :D :D e avevo ragione io :D :D :D :D (scherzo! ]:))

Ho concordato con Paolo, questo è ciò che ha suggerito e ciò che ho ribadito ;)

PaoloP: Arduino si programma in C e C++. L'IDE di Arduino e le librerie di supporto fornite dall'Arduino Team semplificano molto le operazioni di scrittura e programmazione, ma dire che non tutto il C serve è un po troppo. Giusto rimanderei gli argomenti riguardante i puntatori del C e le classi del C++, ma il resto serve. I comandi base, le iterazioni, i cicli, le funzioni con o senza restituzione, i parametri, le variabili, le costanti... sono tutti elementi del C. Certo che se ti vuoi fermare al blink... :sweat_smile:

Se concordi su questo, allora stiamo dicendo la stessa cosa. :D

il blink è bello :stuck_out_tongue_closed_eyes: :stuck_out_tongue_closed_eyes: :stuck_out_tongue_closed_eyes: :stuck_out_tongue_closed_eyes: :stuck_out_tongue_closed_eyes: