Arduino IDE verze 1.0

Posledního listopadu, tj. 30. 11. 2011, vyšla nová verze vývojového prostředí Arduina s označením 1.0. Tato verze je zajímavá především proto, že se jedná o první stabilní verzi. (Abych to trochu vysvětlil — to neznamená, že předchozí verze byly špatné nebo nestabilní. Označením 1.0 ale vývojáři dali najevo, že své IDE považují za „hotové” a jazyk i rozhraní už by se neměly nijak výrazně měnit.)

Oproti předchozím beta verzím obsahuje několik změn a novinek. V tomto článku popíšu nejdůležitější změny.

Většinu informací zde uvedených čerpám z Arduino Software Release Notes, článku na oficiálním blogu a pak z vlastních experimentů a zdrojových kódů.

Kosmetické změny

Tyto změny jsou na první pohled nejvíce vidět. Na vlastní funkčnost vašich programů nemají vliv.

Starší verze IDE ukládaly vaše projekty s příponou .pde, což bylo dědictví z programu Processing, ze kterého Arduino IDE vychází. Nová přípona ve verzi 1.0 je teď .ino, což jsou poslední tři písmena slova Arduino.

Dále se změnily ikonky u tlačítek, serial monitor se přesunul na pravou stranu a během kompilace programu se nově zobrazuje progress bar.

Arduino IDE ve verzi 1.0.
Arduino IDE ve verzi 1.0.
Pracovní prostředí Arduino IDE.
Pro porovnání — starší verze Arduino IDE 022.

Změny v jazyce a knihovnách

Mnohem důležitější jsou změny, které nastaly v jazyce a knihovnách Arduina. Kompletní a mnohem podrobnější výpis najdete v oficiálním release notes. Zde uvedu jen ty nejvýznamnější.

Třída String pro práci s řetězci je teď paměťově méně náročnější a robustnější. Metody této třídy (například trim() a toUpperCase()) již nevrací nové instance třídy String, ale pouze upraví původní řetězec.

Metody send() a recieve() ve třídě Serial byly přejmenovány na write() a read(). Toto se týká všech tříd odvozených od Print. Tedy i třídy WireEthernet.

Nově je třída Serial asynchronní. To znamená, že při odesílání se data pouze uloží do bufferu a samotné odesílání probíhá na pozadí. (Tohle jsem ještě detailně neprozkoumal, takže detaily neznám.)

Třída SoftwareSerial byla z větší části přepsána a obsahuje kód třídy NewSoftSerial, za kterou původně stojí autor Mikal Hart. Nově je tak možné vytvořit více instancí této třídy a komunikovat na více pinech (ačkoliv v jednom okamžiku lze přijímat data pouze z jedné instance a stále platí omezení pro softwarový UART).

Metoda print() ve třídách odvozených od třídy Print (opět jsou to Serial, Wire, Ethernet) nově odesílají byte jako posloupnost čísel v ASCII. Takže například:

byte value = 127;

// Odešle na UART rozhraní tři bajty odpovídající
// ASCII znakům pro '1', '2' a '7'.
Serial.print(value);

// Odešle jeden bajt s hodnotou 127.
Serial.write(value);

Metody write(), print() a println() ve třídě Stream (a ve všech jejích potomcích, což jsou např. Serial, Wire, Ethernet, …) dříve vracely void, nyní vrací počet odeslaných bajtů jako size_t. Takže pokud máte vlastní třídu, která přímo i nepřímo dědí od Stream, musíte zmíněné metody upravit.

Pro tvůrce vlastních knihoven (tříd) je tu ještě další změna. Hlavičkový soubor WProgram.h se nyní jmenuje Arduino.h. Pokud chcete, aby vaše třída byla kompatibilní s novou i starší verzí IDE, doporučený způsob jak tento hlavičkový soubor includovat je:

// V IDE verze 1.0 je konstanta ARDUINO == 100,
// ve verzi 022 je ARDUINO == 022 a podobně je tomu i
// u starších verzí.
#if ARDUINO >= 100
  #include "Arduino.h"
#else
  #include "WProgram.h"
#endif

Závěr

Novinek je ještě mnohem více, výše zmíněné jsou dle mého názoru nejzajímavější. Novou verzi IDE si můžete stáhnout z oficiálních stránek Arduina a jako obvykle je dostupné pro Linux, Mac OS a Windows. Samotný hardware nevyžaduje žádné změny a IDE 1.0 je možné použít i pro starší verze Arduina.