corso arduino

Ciao a tutti!

Da poco sto cercando di dedicarmi al mondo Arduino, finora ho letto il forum le varie guide che ci sono in giro, non capendo il perche' tutte le guide partono senza spiegare quasi nulla della sintassi del linguaggio, si da per scontato oppure chi ha creato Arduino l'hafatto per un preciso target di persone, a me sembra fatto per chi di elettronica e programmazione non ne voglia sapere piu' di tanto.

Si parla di linguaggio processing, simile al C, mi domando come per il C esiste il Brian W. Kernighan & Dennis M. Ritchie, per il linguaggio di Arduino esiste una Bibbia a cui far riferimento?

Io ti consiglio di prenderti un libro di C e non C++ o C.Net e studiatelo per bene, anche se è un linguaggio spiegato per il pc in quei libri ti insegnano le basi della programmazione, ti va bene anche un libro delle superiori...
in libreria sapranno consigliarti per bene :slight_smile:

Leggiti il libro di Brian W. Kernighan & Dennis M. Ritchie
La sintassi é quella; Il linguaggio col quale programmi Arduino é C con tante funzioni fatti per arduino o per dei Integrati collegati a Arduino.
Il compiler che usi con Arduino é quello ufficiale AVRGCC della Atmel per i ATmega e altri loro controller.
Arduino nasconde tante impostazioni e librerie aggiunte in automatico.

Ciao Uwe

caspita e io che credevo che bastava la guida d M Banzi!! Ok allora comprerò anch'io questo libro!

Beh, non è che il micro lo programmi parlandogli XD

Ciao a tutti
io conosco il C e il C++, ci ho programmato anche se sono anni che non lo uso ma i libri li ho sempre
Per programmare Arduino mi manca un libro che parli delle specifiche funzioni di Arduino, cosa fanno, come si richiamano ecc.
Ad es. la funzione analogread() legge un valore analogico su un pin ma sul C non la troverai mai.
Indicate un libro (possibilmente in Italiano) dove queste funzioni specifiche di Arduino sono spiegate.
Una volta capite queste funzioni si può prendere i prg scritti x arduino e cercare di capire qualcosa
Franco

Non è in italiano, ma il Reference del sito riporta tutte le funzioni specifiche di Arduino

ciao come te sono pienamente d'accordo sul fatto che in italiano esista poco di specifico,come sempre del resto! per una vera e propia espansione di arduino in larga scala anche in italia dovrebbero esserci. Piu' corsi insegnare le basi da 0 per poi progredire, di sicuro nascerebbero idee nuove da persone che sono scoraggiate dalla poca documentazzione che trovano in lingua madre. certo voi direte che sulla rete si trova di tutto e questo e' vero ma provate a pesare ad una persona che non conosce arduino sente che e'un vanto italiano fa delle ricerche su internet,e cosa trova tutorial in inglese i progetti piu belli spiegati in inglese,spagnolo,tedesco,francese video su youtube in inglese,tedesco,spagnolo in italiano ti fanno vedere come accendere un led oppure video senza spigazione e ti fanno vedere muovere un servomotore, uno che ne vuole sapere qualcosa se non sa l'inglese difficilmente si applica e si sforza di approfondire qualcosa che forse gli piacera'

Cmq sul sito grix.it fai la ricerca sulla sezzione tutorial troverai una traduzione del notebook arduino parla della programmazione e' molto utile

Purtroppo è vero non c'è un libro dedicato al linguaggio arduino, il motivo è semplice:
Il "linguaggio" usato da Arduino non è un vero linguaggio, un liguaggio presume sia stato sviluppato un compilatore.
Invece viene usato il compilatore avr-gcc che è basato su GNU GCC.

Le funzioni descritte nel reference sono disponibili all'interno di una libreria di funzioni e classi C++, "core".

Per evitare lo studio del C/C++ al principiante Arduino IDE preprocessa il sorgenti e poi avvia il compilatore avr-gcc.
Uno dei compiti del preprocessore di Arduino è quello di unire tutti i file sorgente in un'unico file con estensione .cpp che poi viene dato in pasto al compilatore e poi viene collegato alla libreria "core".

Questo comporta un certo disaggio perchè non risolvi studiando solo il libro C/C++, ma devi pensare a tutte le conseguenze che comporta il fatto di unire tutti i file sorgente in un solo file. Cioè tutte le variabili sono globali, se dichiari due variabili con lo stesso nome ma in file differenti dovresti ricevere errore durante la compilazione a meno che il preprocessore di Arduino ci metta una pezza prima.

Il linguaggio C usa un suo preprocessore e nel libro C questo è documentato, il preprocessore Arduino invece non si sa con precisione cosa fa.
Si concordo ci vorrebbe un libro totalmente orientato ad Arduino, specie per chi inizia e non ha idea di cosa sia un linguaggio, copilatore e microntroller.

Ciao.

MauroTec:
Il linguaggio C usa un suo preprocessore e nel libro C questo è documentato, il preprocessore Arduino invece non si sa con precisione cosa fa.
Si concordo ci vorrebbe un libro totalmente orientato ad Arduino, specie per chi inizia e non ha idea di cosa sia un linguaggio, copilatore e microntroller.

Ciao.

Concrodo in pieno quello che avete scritto, noto che le mie perplessita' sono le stesse di altri, in definitiva credo che se si voglia imparare il C Arduino sia il peggiore modo per farlo.
Personalmente mi sono avvicinato ad Arduino per capire, ma proprio non riesco a vedere il lato positivo del fenomeno cosa c'e' di tanto rivoluzionario? forse e' quello di portare l'automazione che puo' fare una scheda a microcontrollore ad altri campi, ma se fosse cosi' perche' si e' scelto uno pseudo linguaggio C che strutturalmente come fai notare anche tu non lo ' basti pensare al fatto delle varibili globali, poteva fare come per i PLC industriali che usano il ladder proprio perche' essenzialmete sono rivolti a chi di elettronica non deve sapere un granche'.

Io vorrei capire il fenomeno, se pensate che la stessa Microchip stia rincorrendo, proponendo schede per l'ambiente Arduino per ragioni che non comprendo, forse per marketing oppure perche' questo modo di programmare ha qualcosa che scusate se mi ripeto mi sfugge

Il "fenomeno Arduino" è stato spiegato bene tempo fa da un intervento personale di Massimo Banzi su risposta ad un thread simile al tuo aperto da Testato in cui poneva la domanda: "ma che cos'ha in più Arduino?".
Ti consiglio di ricercarla e di leggerla.

Dire però che Arduino è il peggior modo possibile di imparare il C non è corretto perché Arduino usa un linguaggio che NON è C puro, è un misto fra Wiring, Processing, C++ e C. E' come una persona di bocca buona che digerisce tutto.

Il compilatore di Arduino è gcc-avr, nulla di strano quindi. Wiring e Processing sono un insieme di librerie che rendono facili le comunicazioni con alcune parti dell'HW: ad esempio, se tu devi accendere un LED fai semplicemente un bel pinMode(pin, OUTPUT) e poi digitalWrite(PIN, HIGH). Senza Wiring/Processing dovresti scriverti tu la funzione per accedere a basso livello alla porta logica del micro che controlla l'uscita sulla quale hai il led e, sempre manipolando i registri del micro, attivarla come output e poi portarla allo stato logico HIGH. Tutto ciò si traduce in 2 semplici funzioncine mnemoniche, facili da ricordare.

La schedina poi è quasi uno standard e sai che "entrando" nel mondo Arduino hai accesso ad un sacco di risorse software, un sacco di HW prodotto da altri e compatibile, un sacco di schemi, sketch e siti, insomma.... una bella pacchia.

Il tentativo è quello di semplificare lo sviluppo all'utente che lo sviluppo e mantenimento del progetto software arduino.
Il Ladder non ha la flessibilità che ha il C/C++ e costrigerebbe l'utente ad usare un solo linguaggio.
Se non fosse chiaro la scheda è programmabile in C/C++/assembly, ma per fare questo devi usare AVR Studio di Atmel o un'altro IDE generico adattato per usare il compilatore avr-gcc.

Senza Wiring/Processing dovresti scriverti tu la funzione per accedere a basso livello alla porta logica del micro che controlla l'uscita sulla quale hai il led e, sempre manipolando i registri del micro, attivarla come output e poi portarla allo stato logico HIGH. Tutto ciò si traduce in 2 semplici funzioncine mnemoniche, facili da ricordare.

Io da questa spiegazione potrei capire che nel processo di compilazione interviene Wiring/Processing e questo mi porto fuori strada la prima volta che scoprì arduino. Processing è un altro mistero, dal momento che gira intorno a java io ne sto alla larga e penso da ignorante che sia una libreria java o un miniframework.

Quindi Processing/Wiring ecc non intervengono nel processo di compilazione, cio che interviene è il preprocessore Arduino (che è integrato nell'IDE), la libreria "core", che viene compilata e trasformata in static lib ogni volta che compiliamo il nostro progetto così è possibile usare -mmcu=mcu_name e la definizione di F_CPU=clock.

Il bello è che la libreria è rilasciata sotto LGPL e quindi puoi vedere come funziona, e puoi vedere che il main fa parte della lib stessa.

Le funzioni sono comode, così come le classi ed tutto il resto, poi se si ha motivo si può sempre usare AVR Studio, certo solo gli utenti Windows hanno questo privilegio.

Ciao.

Eh, no. Anch'io credevo che Processing fosse la piattaforma di sviluppo, invece Processing è anche un linguaggio.
Banzi lo spiegò bene il legame che c'era tra i vari linguaggi.

In origine nacque una schedina di prototipazione con un suo linguaggio, Wiring, il tutto progettato da uno studente dell'IDEA. Wiring derivava da Processing.

Da Wiring il team di Arduino ha ricavato il suo linguaggio, tant'è che fino alla versione 0022 hai i file Wiring chiamati così nel core di Arduino.