Io non sono d'accordo con il fatto che Arduino sia "semplice" in maniera assoluta. Anzi, questa pubblicità che spesso gli viene fatta è ingannevole, a mio avviso, ed è la causa principale per cui un sacco di gente viene qua quotidianamente con la famosa Sindrome di Gundam. Gente che senza avere la benché minima conoscenza di informatica, né di elettronica, pensa di poter costruire un robot che gioca a pallone mentre suona la chitarra in quattro e quattr'otto. Di per sé non sarebbe nemmeno un problema, sono del parere che, studiando e applicandosi, chiunque possa raggiungere qualunque risultato, ma purtroppo un sacco di gente si fa un'idea sbagliata e nonappena gli si suggerisce di impiegare un po' di tempo a fare proprie le nozioni basilari, sbotta e continua ad essere convinta di poter ottenere quanto desiderato copiando e incollando assolutamente a caso cose di cui non ha la benché minima comprensione.
Morale: come dice pablos, l'80% dei thread qua sono tutti uguali, trattano di quelle che alla fine sono baggianate (qualcuno ha detto millis()?) ma dopo pochi post cadono nel dimenticatoio, senza che nessuno concluda alcunché. Certo, ci sarebbe da studiare un po' di più questo fenomeno, perché io non mi sono mai sognato di poter fare bene qualcosa senza la dovuta applicazione, costanza e pazienza, ma vabbeh, poi diventiamo OT.
Trovo piuttosto che Arduino eccella nel permettere a chi ha una mente "matematica" e un minimo di conoscenze di programmazione software di passare facilmente e rapidamente a programmare hardware e a fare cose anche abbastanza complesse. Tutto questo è permesso da quanto già detto da pablos, ovvero ampia documentazione, strumenti semplici ma potenti al punto giusto, enorme numero di librerie, ma anche il fatto di rendere la gestione dell'hardware più simile a quanto si farebbe in un'applicazione di alto livello, invece che a quanto è solito fare chi smanetta quotidianamente con firmware e hardware. Intendo che:
pinMode (2, OUTPUT);
digitalWrite (2, LOW);
è immediatamente comprensibile ed intuitivo per chiunque abbia visto un minimo di C, sicuramente più di:
DDRD |= (1 << PD2);
PORTD &= ~(1 << PD2);
Mi spiego? E se dovessimo darci a cose più complesse come la lettura dell'ADC o la trasmissione SPI/i2c il paragone sarebbe ancora più sbilanciato. Ma il bello è che, una volta che ci si è avvicinati all'hardware tramite questa semplificazione, chi vuole è libero di scavare in profondità e arrivare alla forma più complessa, facendo il tutto in maniera graduale e intuitiva, invece che trovandosi fin dall'inizio di fronte a una montagna da scalare.
A riprova di questo, posso dire che, pur essendo ingegnere informatico con spiccate propensioni al basso livello, nonché programmatore "senior" di lavoro e, ormai, smaliziato arduinista, pur conoscendo diversi linguaggi di alto e medio livello, oltre che diversi assembly, ancora non sono riuscito a scrivere un programma stupido come il Blink per PIC, sebbene ci abbia provato più volte. Lì è tutto dannatamente complicato e prima di arrivare a fare anche le cose più semplici occorrono settimane di studio e tentativi. Quando ho iniziato con Arduino, in 2 settimane avevo scritto un webserver.
Vabbeh, forse ho divagato un po'...
Puoi usare l'IDE che vuoi, ma alla fine devi dare i sorgenti in pasto al compilatore di Arduino.