ho una gran interesse di iniziare a programmare in linguaggio "Arduino", quindi poter creare sketch.
So che non è una semplice passeggiata per chi, come me, non ha neppure un minimo di preparazione.
Ho però un gran bisogno e grande volontà di imparare, sia per motivi di cultura personale, sia per motivi di possibili esigenze di lavoro.
Chiedo a tutti voi, esiste un qualche corso (gratuito o a pagamento) dove poter imparare a programmare?
O forse posso imparare su qualche libro o online?
darioAVR:
Chiedo a tutti voi, esiste un qualche corso (gratuito o a pagamento) dove poter imparare a programmare?
O forse posso imparare su qualche libro o online?
Beh intanto toglimi una curiosità: tu qui hai già scritto 54 messaggi, di che hai parlato nei primi 53? Scherzi a parte, non credo che tu sia proprio al livello zero, quindi ora perché parli di "imparare a programmare"?
Comuque sia, se cerchi "corso programmazione arduino" su YouTube ne trovi parecchi, anche in italiano per cui ti basta iniziare a vedere qualche prima lezione per capire quale sia più adatta a te in base alle tue attuali conoscenze.
Ad esempio puoi vedere QUESTO corso generale su Arduino che tratta in parallelo hardware e progrtammazione, oppure QUESTO di alcuni ragazzi. Ma sono solo i primi esempi che mi sono capitati sottomano, sta a te scegliere quale ti sembri più adatto.
Ciao Speedyant, grazie per il consiglio.
Quindi qualche libro da studiare, dove vengani spiegate le nozioni di base (numeri binari, elettronica...) e partire dalle basi?
Premessa: ho le basi dell'elettronica, so cosa è la legge di ohm cosa è una corrente elettrica, una tensione elettrica, una resistenza, condensatori, diodi...
Ciao Docdoc, come gia appena specificato... ho le conoscenze di base dell'elettronica, ma non di programmazione.
Non ho mai sviluppato alcuno sketch, ho una volta soltanto modificato qualche riga dietro dettatura di qualche amico.
Proprio per il fatto che io voglio IMPARARE sto qui a chiedervi se esiste un libro o un corso su cui poter imparare le basi della programmazione.
Ho dato un'occhiata ai link che mi hai consigliato e li vedrò sicuramente, ma a me occorre anche il materiale cartaceo, voglio leggere ed imparare su un libro scritto da un PREOFESSIONISTA.
Io partirei da un manuale sul c, tenendo presente che al 99% dei casi sará "pensato" per i pc, ma i concetti di base valgono ugualmente anche per arduino.
Cercare su amazon.
Io partirei da un manuale sul c, tenendo presente che al 99% dei casi sará "pensato" per i pc
Ma quindi il linguaggio C è quasi identico a quello di Arduino?
Per poter sviluppare alcuni file (esempio i plugin) che servono a far interagire un software con Arduino, cosa occorre sapere/imparare?
darioAVR:
Ma quindi il linguaggio C è quasi identico a quello di Arduino?
Il compilatore che compila i programmi sorgenti che tu scrivi è avr-gcc (con l'ausiio di vari moduli) ed il inguaggio usato è C++.
Possiamo dire che C++ è un'estensione del C per cui, in realtà, in Arduino, tu puoi scrivere sia programmi C che C++. Quello che però caratterizza il mondo Arduino NON è tanto il linguaggio, ma il framework "wiring" che mette a disposizione tutta una serie di funzioni già pronte che ti nascondono la complessità del funzionamento delle MCU.
Cosa studiare? Sicuramente parti con il 'C', poi, ti è utile se ti guardi anche il C++ e quindi, di sicuro, il framework "wiring" le cui funzioni sono nel reference di Arduino.
Io avevo gia comprato questo... ma dopo aver letto le prime pagine... mi è venuto lo sconforto, forse difficile da apprendere perchè non ho neppure le basi o forse perchè il libro è difficile da capire..?
Ripeto, per me devi cercare di procedere gradualmente ma sempre cercando di focalizzarti sul liguaggio C/C++ di Aruino perché ne è un "sottoinsieme", soprattutto per i discorsi di puntatori, indirizzi, eccetera ma anche limitandoti a ciò che è parte del GCC di Arduino, inutile a mio avviso pensare di imparare da zero il C senza fare prima "esperimenti" anche minimi come accendere un led, farlo lampeggiare o leggere un pulsante.
Chiaramente gran parte dei tutorial su Arduino hanno come prerequisito un minimo di conoscenza del linguaggio C e della programmazione in generale (cose che, se non ho capito male, tu non hai affatto), ma devi cercare quelli che ti fanno fare i "passi iniziali", ossia sta a te vdere quale si avvicina di più alle tue conoscenze. Ce ne sono anche tanti altri, ti basta cercare, e ti assicuro che è più semplice, almeno per iniziare, seguire un tutorial video che ti fa fare cose passo-passo, che prendere un libro sul linguaggio C (ed anche tra questi ce ne sono molti che presuppongono una conoscenza seppur minima di programmazione).
Poi puoi anche "sperimentare" senza neanche dover avere Arduino o collegarne uno, puoi usare anche un emulatore via web come "TinkerCAD Circuits" dove puoi "disegnare" un circuito (anche composto dal solo Arduino, almeno per iniziare, poi aggiungerai led, pulsanti e quant'altro).
Insomma, se parti da zero come programmazione e pretendi di avere un libro (anche gratuito) che espone tutto quello che riguarda il C rischi di "spaventarti" (come è successo...), mentre andare per gradi con qualche base e "mettere le mani in pasta" è a mio avviso la cosa migliore.
Ripeto, per me devi cercare di procedere gradualmente ma sempre cercando di focalizzarti sul liguaggio C/C++ di Aruino perché ne è un "sottoinsieme"
Questo non ho ben capito, cioè: Il linguaggio per programmare Arduino è C/C++ o qualcosa di simile?
Se non erro, mi pare di aver capito che il linguaggio di Arduino è un "derivato".
Quindi per diventare un BRAVO programmatore di Arduino, cosa devo studiare?
Ho letto qualche post che un buon libro è quello scritto da Leo72 (uno degli admin del Forum)
Dico anche la mia che tanto nel mucchio male non fa...
Per come la vedo io, non esiste il linguaggio di arduino... Nell'ide usi di base il linguaggio c / c++ con alcune limitazioni rispetto alla versione standard e alcune aggiunte che riguardano solo arduino e non trovi nel linguaggio standard.
Poi riguardo la programmazione, sempre per come la vedo io, a programmare si impara indipendentemente dal linguaggio. Di principio puoi programmare anche in italiano o in dialetto bergamasco... Più che un insieme di istruzioni la programmazione è un modo di affrontare un problema per risolverlo.
Detto questo, contrariamente a quanto detto da altri, io partirei dalle basi della programmazione indipendente da arduino e dopo aver appreso le basi mi sposterei su arduino.
Per come sono fatto io (sono un pochino tardo) farei un corso vero e proprio con un insegnante che mi spiega e a cui posso fare delle domande se non capisco. Ma qui è questione puramente personale.
fratt:
Nell'ide usi di base il linguaggio c / c++ con alcune limitazioni rispetto alla versione standard e alcune aggiunte che riguardano solo arduino e non trovi nel linguaggio standard.
NO, usi il C/C++ standard senza alcune cose che, date le limitazioni di una microcontrollore, non vengono implementate, come, ad esempio, la console (che comunque si può simulare/implementare usando il monitor seriale).
Aggiunte NON ce ne sono, c'è un framework, "wiring" e una serie di librerie che ti nascondono operazione di base molto complesse che possono essere scritte in C/C++ o assembler.
Smettiamo di confondere le idee alla gente ... DEVE studiare fondamentalmente il C, poi il C++, poi il reference di Arduino e poi studiare/capire le varie librerie che incontrerà nel suo percorso.
darioAVR:
Ho letto qualche post che un buon libro è quello scritto da Leo72 (uno degli admin del Forum)
Si, io lo consiglio sempre ... è QUESTO, ma intanto comincia con lo studio di QUESTO e poi prosegui con QUESTO, quindi passi al libro di Leo72 e sperimenti mano mano quello che studi.
gpb01:
NO, usi il C/C++ standard senza alcune cose che....
Mi pareva di aver capito che alcune istruzioni non fossero disponibili appunto per le limitate capacità del micro. In questo senso intendevo "limitazioni". Ma potrei aver capito male.
Riguardo le "aggiunte" intendevo appunto le varie digitalWrite ecc, forse avrei dovuto specificare che riguardano wiring e non il c.
Più che altro NON sono disponibili alcune "risorse" che, tipicamente, esistono solo su un computer ed alcune "funzioni di libreria" sono state limitate per ridurre l'occupazione di memoria, ma ... il "linguaggio" è quello standard.
Non confondiamo il "linguaggio" con funzioni e librerie che vengono più o meno messe a disposizione.
Una solo c'è e semplifica moltissimo e riguarda la mancata necessità di dichiarare e poi definire, quindi si definisce e alla dichiarazione ci pensa l'ambiente.
Oltre le limitazioni ovvie, c'è la mancanza di modularità standard offerta dal linguaggio; cioè non puoi creare 2 o più file sorgente .cpp e questo fa fuori ciò che viene detto: static di modulo.
Poi il compilatore cambia in base alla piattaforma hardware, cioè se la scheda monta una MCU ARM l'IDE usa il compilatore ARM al posto di AVR. Entrambe sono cross-compiler e si intende che girano su una piattaforma e generano codice binario per un altra piattaforma (es. per AVR o ARM).
Ma soprattutto dobbiamo distinguere tra: programmatore arduino e sviluppatore arduino.
Il primo si limita ad usare le librerie, il secondo inoltre le crea se necessario.
Lo sviluppatore conosce bene sia Hardware che Software.
Maurotec:
Una solo c'è e semplifica moltissimo e riguarda la mancata necessità di dichiarare e poi definire, quindi si definisce e alla dichiarazione ci pensa l'ambiente.
Quella NON riguarda il "linguaggio" che è sempre C/C++, ma una facilitazione che introduce l'IDE creado lui, di nascosto, sempre per semplificare la vita all'utente principiante, i prototipi delle funzioni.
Come dicevo l'ambiente, grazie all'IDE, alle librerie, al framework "wiring", ecc. ecc. nasconde un'infinità di complicazioni ... la forza e la diffusione di Arduino è dovuta proprio a questo che permmette, anche al principiante, di fare cose in modo semplice nascondendogli tutte le parti difficili, dal altro lato ...
... io lo ritengo anche il punto debole perché, nascondendo tutte le difficoltà, NON prepara chi studia in tale ambiente alla "dura realtà" degli ambienti di sviluppo professionali dove nessuno ti nascone alcun'che