Ježkovy voči ještě tyhle skriptovací jazyky tahat do embedded světa... :-O Co třeba přeportovat pro osminožičková AVRka php?
Mně přijde absurdní snažit se psát pro tyhle minimalistické platformy a pak tam tahat x úrovní abstrakce a odstínění od hardware, které požerou spoustu zdrojů. To vše jen v zájmu toho, aby to zvládl každý Pepek Vyskoč bez toho, aby se nedej Bože musel něco naučit o tom, jak ty microcontrollery vlastně fungují.
Pokud bychom se bavili o vývoji webových aplikací v c# vs v assembleru, tak ok, tam ty abstrahující vrstvy smysl dávají. Ale u věcí, které se typicky implementují na malých microcontrollerech to považuju za opravdu šílené.
Občas se říká, jek skvělé je to pro začátečníky. Jenže oč je složitější napsat (PINB << 3) oproti digitalRead(3) resp PORTB |= (1<<3) proti digitalWrite(3)? Přitom ten přímý přístup je ca padesátkrát(!) rychlejší. Ať se na to dívám, jak chci, tak takováhle úroveň abstrakce už mi přijde zbytečná až úchylná.
Některé další konkrétní výtky, které k Arduinu mám:
- odstínění od železa znamená, že člověk je zároveň výrazně odstíněn od dokumentace, kterou poskytuje výrobce microcontrolleru. Hodně, možná i většina nadšenců do Arduina, které jsem potkal neumí ani pořádně přečíst datasheet od jednoduchého integrovaného obvodu. Děsím se toho, až si budu za deset let kupovat třeba pračku či myčku, zkonstruovanou a naprogramovanou podobnými „experty“.
- přizpůsobování se výše zmíněným Pepkům Vyskočům jde tak daleko, že většina lidí, používajících Arduino, už není schopná ani číst klasické elektronická schemata a místo toho se jak mor šíří ty jejich pestrobarevné malůvky ve stylu „natáhni žlutý drát od třetí dírky v konektoru na pátou dírku ve druhé řadě breadboardu“.
- naprostá absence jakékoli možnosti debuggingu s výjimkou obligátního Serial.print() je IMHO jednoznačný show-stopper pro výukové použití. Jak se má někdo naučit jak program funguje, když si ho ani nemůže odtrasovat, podívat se na obsahy proměnných apod.? :-O
Summa summarum: používáním Arduina vede k osvojování návyků přinejmenším velmi problematických, což mi zejména u dětí přijde jako docela slušný průšvih. Jeví se mi jako daleko přinosnější, když si dítě tu LEDku rozbliká po půl dni a zároveň se učí rozumné návyky, než když ji rozbliká za hodinu a o tom, proč se tak děje, ví kulové.
Ale já vím, jsem nechutně staromódní a nová pokroková doba si žádá instantní řešení a rychlé výsledky.
Určitě máte v mnohém pravdu, ale cílem je hlavně někoho do oboru přivést a vzbudit zájem o techniku jako obor.
Váš názor, cituji: "Jeví se mi jako daleko přinosnější, když si dítě tu LEDku rozbliká po půl dni a zároveň se učí rozumné návyky, než když ji rozbliká za hodinu a o tom, proč se tak děje, ví kulové" má jednu velkou chybu - žádné dítě Vám nevydrží půl dne rozblikávat LEDku. Jestli máte děti, tak to víte.
Hezký den.
Tak nevím, zrovna zkouším něco s CAN sběrnicí a nějak moc mi nevadilo, že s Arduinem jsem to měl za půl hodinky vyzkoušené bez nutnosti zkoumat co do kterého registru zapsat a nakonfigurovat.
Takhle mám HW ověřený a můžu se případně věnovat zmenšování kódu či zvyšování rychlosti přepsání jen do Céčka. Pokud to ovšem bude potřeba.
Všechny ty vychytávky s přímým přístupem k portům apd. v prostředí Arduina fungují taky, stejně to na konci překládá gcc.
Používám AvrStudio, WinAVR, ale navadí mi když spěchám šáhnout i po sw k Arduinu.
A psát složitější věci i pro tyhle prcky jen v assembleru je opravdu masochismus.