Popisované vývojové prostředí pro Arduino ovšem není nijak pokročilé. Na hraní s piny a sběrnicemi stačí, ale už ne na rozumný návrhu skutečných jednočipových řešení. Neumí rozumně používat přerušení, neumí rozumné čekání na událost, a tak většina navržených aplikací používá nekonečnou smyčku. Takže například napsat program, který pravidelně čte data na vstupech, zpracuje je a pošle zpracovaný výstup na displej, je s ním téměř nemožné. O část událostí na vstupech přijdete.
Ale to celkem nevadí. Pokročilý uživatel sáhne po avr-gcc, které je v pozadí vývojového prostředí, nebo po assembleru. Znamené to ovšem zahodit všechny předpřipravené knihovny, a ovladač pro displej přepsat.
Pak ještě může (podle verze Arduina, kterou má) narazit na omezení hardware. Příkon uspaného procesoru je tak malý, že použitý stabilizátor může mít problémy udržet napětí.
Poslední problém se týká způsobu návrhu shields a statického propojení pinů. Vše se zdá krásné až do okamžiku, kdy potřebujete speciální funkci některého z pinů, které shodou okolností obsadil některý shield pro obyčejné I/O. Pak není cesty, jak propojení změnit, pro danou konstrukci obsadit jiné piny.
Již delší dobu přemýšlím o inteligentnějším řešení. Třeba kdyby existovaly standardizované konektory pro připojení SPI, UART, I2C k podobným deskám. Třeba pomocí kabelů a konektorů, jejichž provedení by reflektovalo specifika dané sběrnice (např. samostatná CS linka pro každou SPI periférii). Takový konektor by obsadil jediné možné piny dané sběrnice, a pak by si nějakým způsobem „ukousnul“ potřebné obecné GPIO linky.