Il buon giorno inizia dal mattino... Arduino 1.0 RTM

http://arduino.cc/en/Main/Software direi che è da scaricare subito!

La cosa è da valutare: 1) una volta aperti gli sketch con la nuova versione, l'IDE salva il codice con un'estensione non più riconosciuta dalla vecchia, quindi se vuoi riaprirli con la 0022 o la 0023 devi ricambiare a meno questa estensione 2) molte delle librerie di terze parti non funzionano con la nuova versione 1.0 e vanno modificate a mano per caricare il file delle librerie aggiuntive di Arduino.

Ci stiamo avvicinando all'Arduino Due... :-)

2) molte delle librerie di terze parti non funzionano con la nuova versione 1.0 e vanno modificate a mano per caricare il file delle librerie aggiuntive di Arduino.

..quasi tutte non funzionano. Questo non è poca cosa.

Speriamo... sarebbe carino avere delle date di massima, per lo meno per programmare eventuali acquisti natalizi. A me piacerebbe provare la scheda ma devo anche comprarmi dei componenti per un nuovo progettino. Se sapessi che arriva, che so, entro 15 gg, eviterei l'acquisto e prenderei la Due. Ma se faccio l'acquisto mettiamo di 50€ poi altri €50/60 per la Due non posso spenderli a breve.

pitusso: ..quasi tutte non funzionano.

Perché usano WProgram.h invece di Arduino.h, basta modificare questa voce per risolvere, sicuramente in breve tempo tutte le librerie di terze parti verranno corrette, o resa disponibile la versione per il nuovo IDE, direttamente dagli autori visto che è arrivato l'IDE 1.0 in versione definitiva.

leo72: eviterei l'acquisto e prenderei la Due.

Secondo il mago Otelma la DUE non sarà disponibile prima di fine Gennaio inizio Febbraio 2012 :)

'Sti ca.... :cold_sweat:

bene, oggi faccio l'ordine a BN (Babbo Natale)

Piccolo-grande problema: non è più supportata la funzione Serial.print(xxxxx, BYTE). Provando questo banale sketch

void setup() {
  Serial.begin(9600);
}

void loop() {
  Serial.print(1234, BYTE);
}

ricevo il seguente errore;

sketch_dec01a.cpp: In function 'void loop()': sketch_dec01a:5: error: 'BYTE' was not declared in this scope

As of Arduino 1.0, the 'BYTE' keyword is no longer supported. Please use Serial.write() instead.

Ma porca miseria, ok andare avanti, ma bisogna comunque garantire la retrocompatibilità!!!!!!!!

Probabilmente perché ritenevano la cosa un doppione di Serial.write. Comunque lo avevano fatto intendere che questa versione 1.0 sarebbe stata un nuovo punto di partenza.

Ok che era un doppione, ma il problema è un altro: Arduino è nato per rendere facile la programmazione ai neofiti, e tale scopo mi sembra si stia perdendo...

A parte che le librerie non vanno perché c'è l'inclusione del file Wprogram.h, che si poteva risolvere creando semplicemente un file Wprogram.h con il seguente codice:

#include Arduino.h

ed ecco fatta le retrocompatibilità. Oltre a questo vengono cambiate anche le API, e quindi le librerie che ne fanno utilizzo non funzionano più. Ok, è una cavolata aprire il file di libreria e sostituire la Seria.print(xxxx, BYTE) con una Serial.write(xxxx), ma te mettiti nei panni di uno che entra ora nel mondo di Arduino, che non sa una cippa di C++ e che si vede fallire la compilazione. Quel povero disgraziato pensa a tutto meno che è fallata la libreria, o meglio, che il nuovo IDE l'ha resa tale.

Aggiungo che ci volesse delucidazioni sulle modifiche apportate da Arduino 1.0, il link di riferimento è questo:

http://code.google.com/p/arduino/wiki/Arduino1

[critica ON]
Non starebbe a me indicare tale link, dovrebbe essere inserito nella pagina Download della homepage…
[critica OFF]

Janos: A parte che le librerie non vanno perché c'è l'inclusione del file Wprogram.h, che si poteva risolvere creando semplicemente un file Wprogram.h con il seguente codice:

#include Arduino.h

Nulla vieta di scrivere questa cosa sul playground, così tutti sanno come risolvere rapidamente il problema senza ritoccare a mano tutte le loro librerie. :)

Oltre a questo vengono cambiate anche le API, e quindi le librerie che ne fanno utilizzo non funzionano più.

Non mi pare una cosa così grave l'eliminazione del tipo BYTE dalla serial.print, è da sempre che c'è la serial.write specifica per questa modalità, anzi è proprio da deprecare l'uso della serial.print per l'invio di dati in formato binario. Per quanto riguarda le librerie quelle ufficiali di Arduino, incluse con l'IDE, ovviamente sono tutte già adattate alla nuova versione, quelle di terzi parti è compito dei relativi sviluppatori adattarle al nuovo IDE, non è certo un lavoro di competenza dell'Arduino Team.

Janos: [critica ON] Non starebbe a me indicare tale link, dovrebbe essere inserito nella pagina Download della homepage... [critica OFF]

Quotatissimo

@astro Secondo me non è corretto cambiare le carte in tavola... O non ci si metteva dall'inizio la Serial.print(byte) o ci si lascia. Punto.

Che ci sia una ridondanza e che la serial.write sia più consona sono d'accordo, ma c'erano mille modi per aggirare il problema: si poteva togliere dalla guida la modalità BYTE della serial.print, si poteva prevedere che la serial.print(byte) internamente facesse una chiamata alla serial.write, ma in nessun caso andava tolta, appunto per la retrocompatibilità.

E' come se domani dicessero: non si vende più la benzina inquina troppo, ora tutto diesel. E io che ho la macchina benzina che me ne faccio?

Janos: Che ci sia una ridondanza e che la serial.write sia più consona sono d'accordo, ma c'erano mille modi per aggirare il problema:

Chiedo scusa ma.... il codice, di solito, non viene ottimizzato dal compilatore? Io so che in genere, quando ci sono ridondanze e cose simili il compilatore leva tutto.... ottimizza un pò il binario che ne esce.

Ci sono misteri all'interno del codice core della versione 1.0. Io non capisco alcune cose.

C'è un preprocessore? Si Il main non compilarlo nella lib ed usa il preprocessore per creare il main nella directory di build, si evita il for che chiama ripetutamente la funzione utente loop. Potevo capire se il preprocessore arduino non c'èra e si doveva scrivere, ma c'è.

La funzione loop viene modificata in while(true) ed inserita nel main creato dal prerpocessore, e dentro questa ci puoi aggingere quel che vuoi.

PS: lo avevo scritto, c'è un header file per ogni Board family che viene prelevato da una directory e copiato nella build insieme al core.

Secondo me non è corretto cambiare le carte in tavola... O non ci si metteva dall'inizio la Serial.print(byte) o ci si lascia. Punto.

Che ci sia una ridondanza e che la serial.write sia più consona sono d'accordo, ma c'erano mille modi per aggirare il problema: si poteva togliere dalla guida la modalità BYTE della serial.print, si poteva prevedere che la serial.print(byte) internamente facesse una chiamata alla serial.write, ma in nessun caso andava tolta, appunto per la retrocompatibilità.

E' come se domani dicessero: non si vende più la benzina inquina troppo, ora tutto diesel. E io che ho la macchina benzina che me ne faccio?

Questo raggionamento non puoi farlo per codice di libreria che una volta linkato finisce in un micro con ridotte risorse. A lungo andare si rischia di confiare il core di cose inutili che occupano risorse. Mentre lato PC una libreria deve fare il possibile per essere retrocompatibile a livello di API, su un microcontrollor le priorità sono altre.

Ciao.

leo72: 1) una volta aperti gli sketch con la nuova versione, l'IDE salva il codice con un'estensione non più riconosciuta dalla vecchia, quindi se vuoi riaprirli con la 0022 o la 0023 devi ricambiare a meno questa estensione

Ho visto adesso che nelle preferenze dell'IDE è possibile attivare o meno il rename automatico dei file, basta tenerlo disattivato fino a che non si decide di passare definitivamente alla 1.0 In compenso provando a compilare il software MultiWii 1.8, ma anche 1.9, salta fuori questo errore che sono sicuro mi farà perdere un sacco di tempo per capire la causa:

core.a(HardwareSerial.cpp.o): In function `__vector_19':
arduino-1.0\hardware\arduino\cores\arduino/HardwareSerial.cpp:192: multiple definition of `__vector_19'

Io continuo a rimanere dell'idea che Arduino è nato per i neofiti e che quindi la retrocompatibilità deve essere la priorità, fermo restando che secondo me reindirizzare la serial.print alla serial.write non avrebbe portato via grandi quantità di risorse. Inoltre non è da escludere che tale reindirizzamento possa essere fatto fare al preprocessore.

Ma a me il link manda ad una pagina di download dell'IDE com'è che voi state parlando di Arduino due?? :astonished:

Io vorrei comprare un arduino entro fine anno, già non sapevo se prendere la 2009 o la uno, perchè per 8€ di differenza mi pare che cambi sono il chip usato per programmarla giusto? ma c'è qualche news su questo arduino due? magari si potrebbe scrivere a massimo banzi per sapere quando uscirà :)