New Entry! Salve a tutti

Ciao a tutti, mi chiamo Alessio e stò per entrare nel mondo di Arduino :smiley:
Penso di ordinare l'ultimo uscito, Arduino UNO, mentre alcuni sensori e schede varie mi stanno già arrivando (LCD, sensore PIR, Schedina Ethernet, Capsule ad Ultrasuoni, Cavi vari, un modulo RADIO TX-RX in FM a modulazione ASK a 433MHZ per l'invio di segnali digitali, la Sensor Shield V5.0 ).
Non vedo l'ora di metterci le mani sopra, anche perchè è una materia che mi affascina molto e già provengo da programmatori in assembly per i PIC della Microchip :wink:
Spero di trovare aiuto e spunti e, perchè no, dare una mano a qualcuno se mai servirà...alla prossima :slight_smile:

Ciao e benvenuto.
Se hai già programmato con altri micro non troverai grosse difficoltà, anzi per certe cose forse sarai facilitato.

Se ha già programmato i pic, storcerai il naso davanti l'ide Arduino, ed il core ti lascerà perplesso. Io ho abbondonato il core Arduino per scrivere codice usando un'altra libreria molto più efficiente, usando il modo classico di programmare in C/C++.

Benvenuto.

Ciao.

Se ha già programmato i pic, storcerai il naso davanti l'ide Arduino,

Ehhhhhhh si, in effetti non si può dire che sia stata curata molto l'Ide di un prodotto cosi largamente diffuso, ma ovviamente questa è un opinione personale.
A differenza dei Pic che si programmano con il C di Mplab , o con il C di MikroC o con i vari Basic, trovo che Arduino più o meno si attenga al suo standard nativo (smentitemi se non fosse cosi) e cosi anche io ho abbandonato l'Ide di Arduino per scrivere gli scketch con Visual Studio.
Certo mi dispiace sempre di non poter usare un debugger, ma almeno vedo un poco di colori :slight_smile:
Vabbeh Alessio, buon inizio poi quando sei in "corsa" le risorse migliori te le scegli da solo secondo il tuo gusto personale.
Paolo

L'IDE è semplicistico e rivolto ad un'utenza di "principianti" così com'è lo spirito di tutta la piattaforma Arduino, una scheda facile da gestire e programmare.

Certo, se dobbiamo proprio dirla, l'IDE è inguardabile/inusabile, però il suo lavoro lo fa.

L'IDE è semplicistico e rivolto ad un'utenza di "principianti" così com'è lo spirito di tutta la piattaforma Arduino, una scheda facile da gestire e programmare.
Certo, se dobbiamo proprio dirla, l'IDE è inguardabile/inusabile, però il suo lavoro lo fa.

Hai fatto bene a specificare, perchè dal mio post sembra che io consideri L'ide ed il core negativi a priori. Io ho voluto specificare che è possibile usare il linguaggio C/C++ con le librerie standard e/o anche altre librerie sviluppando nel modo classico appreso con i pic.

Ciao.

MauroTec:
Hai fatto bene a specificare, perchè dal mio post sembra che io consideri L'ide ed il core negativi a priori. Io ho voluto specificare che è possibile usare il linguaggio C/C++ con le librerie standard e/o anche altre librerie sviluppando nel modo classico appreso con i pic.

Per dirla tutta diciamo pure che non appena uno comincia ad evolvere butta via l'IDE di Arduino e wiring per passare alla programmazione in C ANSI, il C++ buttatelo nella tazza se lavorate con piccole mcu a 8 bit, utilizzando come ambiente di sviluppo AvrStudio (caldamente consigliato), o Eclipse, o NetBeans a seconda dei gusti e del sistema operativo che utilizza.

No dai C++ nel cesso no. Il C++ si può usare anche in modo efficiente e torna comodo per lo sviluppo, del resto anche il C ha le strutture che sono molto simili alle classi. Poi anche la avr-libc è pesante in alcuni casi, basta sapere cosa usare e cosa evitare di includere.

Io penso che se si riuscisse a creare delle librerie minimali in C++ da ereditare e personalizzare il costo da pagare in efficienza sarebbe minimo. Ricondiamoci che il linker fa l'assemblatore di blocchi di codice già compilato quindi statico. Avere una seriale che eredita un buffer, un stream di output mi permetterebbe di ereditare la seriale e personalizzare lo stream di output se necessario. Oppure ricreare la seriale prendendo ciò che mi necessità scrivendo quello che manca. Però richiede una base (libreria) flessibile e ben documentata che altrimenti risulta tutt'altro che produttiva e divertente da usare.

Ci sarebbe da vedere nello specifico consa fa il linker quando unisce più file di libreria, e come si comporta il compilatore con l'ereditità. Io sto usando mhvlib che è basata su classi e fa uso dell'ereditarietà multipla e mi sembra ottima, c'è un RTC basato su unix timestamp, che parte dal 1970 lo si potrebbe allegerire facendolo partire dal 2000 o addirittura a partire dalla data di compilazione.

Ciao.

MauroTec:
No dai C++ nel cesso no. Il C++ si può usare anche in modo efficiente e torna comodo per lo sviluppo, del resto anche il C ha le strutture che sono molto simili alle classi. Poi anche la avr-libc è pesante in alcuni casi, basta sapere cosa usare e cosa evitare di includere.

E invece si, prova a vedere cosa combina il C++ analizzando i sorgenti in assembler, o se lo trovi più semplice quelli in C, tramite AvrStudio che poi ne riparliamo :slight_smile:

Quindi mi state dicendo che, oltre al compilatore gratuito che si scarica direttamente dal sito di Arduino, ce ne sono altri più intuitivi o graficamente migliori?
Io provengo da compilatori in assembly ( non in C quindi ), che risultano assolutamente stabili ed hai il pieno controllo su ciò che accade effettivamente nel PIC, ma lo svantaggio principale è la lunghezza del codice di programma che inesorabilmente viene creato ( pagine e pagine di codice, si programma con molta lentezza ).
Io il C lo conosco a grandi linee e leggendo in rete mi ha colpito Arduino perchè racchiude la semplicità di programmazione in C con l'uso dei Microcontrollori...correggetemi se sbaglio.
Comunque torno al primo punto...quali sono, secondo voi, i compilatori migliori da poter utilizzare dopo aver appreso una minima base con quello originale di Arduino? grazie

Ufficialmente riconosciuti c'è solo il software distribuito da Arduino stesso.

Con un plugin Eclipse supporta il linguaggio. Netbeans richiede un setup più complesso, ci sono tante guide in giro. Io ho provato a sistemare entrambi per poter usare il linguaggio di Arduino ma ho lasciato perdere.

Se hai Windows c'è inoltre AvrStudio che è l'IDE ufficiale di Atmel ma, purtroppo, come ho detto è solo per MS.
Poi Mauro sta lavorando ad una versione modificata di un'IDE (quale? non mi ricordo. QtDevelop?). Non mi ricordo neanche se aveva pubblicato tutti i passaggi per impostarla.

Astro non ho sufficienza conoscenza dell'assembly per poter giudicare cosa combina, più in la compenserò questa lacuna. Tuttavia io non avendo Windows non posso visionare il codice asm tramite AvrStudio. Al momento posso visionare i file temporanei generati durante il processo di compilazione, ma tra questi manca il file asm finale comprensivo del lavoro del linker.

Per visionare i file temporanei basta passare al compilatore il flag -save-temps, questi file sono ".ii" per vedere il lavoro svolto dal preprocessore, ".s" per visionare l'asm prodotto da ogni modulo sorgente. Io so che Avrstudio fa una analisi coff o simile, mi sai dire di più, magari riesco a fare la cosa manualmente.

@Alessio_89
Per capire qualcosa in più devi dare uno sguardo al main.c della libreria core di Arduino, così capisci che L'ide Arduino non è un compilatore ma un front-end al compilatore avr-gcc, lo stesso per tutti gli altri strumenti che sono esterni, come avr-size, avr-objcopy, avrdude ecc.
Altri compilatori per avr atmel ci sono, ma sono proprietari, questi sono al solito composti da compilatori esterni e da un IDE che usa questi strumenti proprietari.

Arduino non ha un suo compilatore e quindi neanche un linguaggio. Tutte le parole chiavi di Arduino sono implementate tramite codice C/C++, quindi sono delle librerie di estenzione del linguaggio C/C++. Es la parola chiave Serial è predefinita grazie ad un istanza di classe HardwareSerial, questa te la ritrovi in memoria anche se non usi la seriale, quindi diciamo che occupa ram senza motivo, le cose stanno peggio se il micro è quello montato sulla mega in quanto li ci sono quattro seriali e quindi quattro istanze diverse di HardwareSerial.

Una domanda: ma l'ambiente di sviluppo mplab non permette di scrivere codice in C?

Poi Mauro sta lavorando ad una versione modificata di un'IDE (quale? non mi ricordo. QtDevelop?). Non mi ricordo neanche se aveva pubblicato tutti i passaggi per impostarla.

No non ho più scritto nulla in merito. Il fatto è che non è pratico come Arduino, perchè le lib sono compilate staticamente e sai bene che devi avere un core compilato per ogni micro e per ogni frequenza, e quando crei il progetto devi dirgli a quale di queste lib vuoi linkare. Più tutta una serie di flags che devi conoscere per tirati fuori dai guai. Sono sempre disponibile a discuterne se c'è qualcuno che si attrezza con QtCreator su GNU/Linux possiamo provare pezzo per pezzo tutte le modifiche. Mettere tutto su un repo senza avere feedback mi scoccia anche perchè quasi sicuramente non funzionerà.

Ciao.

legacy:
Anche io ti consiglio AVRstudio, che gira molto bene nelle macchine virtuali come virtualbox.

Che Windows virtualizzi, per usare AvrStudio?
E come programmi il micro? Mi pare che VirtualBox non dia un accesso totale alla porta USB: tempo fa avevo provato con una distro Linux virtualizzata diversa da quella mia ma tramite l'IDE di Arduino non riuscivo a flashare il micro.

legacy:
Windows XP. Il programmatore parla seriale, virtualbox non ha alcun problema a virtualizzarmi la seriale.

Ah, Ok. Io uso l'Arduino con lo sketch ArduinoISP, quindi via USB: probabilmente è questo il motivo.