Také se přidávám, díky.
Jsem rád, že i další vidí v této platformě krok dopředu. Už kvůli tomu, že spřístupňuje HW širší mase programátorů, já se vždy od HW držel dál, ale arduino a esp a dostupnost periferií pro tyto platformi stylem prostě to spoj dráty, nebo mezi to vraž odpor případně tranzistor mi přijdou jako skvělé, pro nás co se zabíváme spíše programem a výpočty odporů, kondenzátorů, cívek .... nám moc neříkají.
Také je zajímavé a takzvaní profíci by si to měli uvědomit jak moc lidí prahne po inteligetnější regulaci, kdy už i mi obyčejní lidé tušíme, že regulace topení přes jedno čidlo za 2000-5000kc v obyváku asi není nic extra.
grammar nazi... na nekterych vebech vas nevybourene magory bez smyslu zivota a bez radosti jiz mazou... nechapu jak je mozne ze na tak technickem webu a u tak vynikajiciho clanku vas okamzite nesmazou a vase IP nazabanuji... nechapu... vy jste dokonaly priklad absolutniho odpadu lidstva... my ale potrebujeme lidi kdo pisi tyto clanky...vy jste ZBYTECNY
Já se taky připojuji k poděkování. A jako člověk který prvně zkoušel programovat vlastní věci na ATtiny a s Arduinem se setkal až později v řídící elektronice k reprapu, děkuji i za tu vsuvku o Arduino IDE.
-Yenya, http://www.fi.muni.cz/~kas/blog/
Zrovna včera jsem si přidával podporu pro ATtiny do Arduino IDE, protože jsem si koupil DigiSpark Tiny85 a nejjednodušší bude zkusit ho naprogramovat v tom, v čem to znám (= Arduino IDE, Arduino API).
Tento odkaz mi v článku v odstavci o otevírání IDE vyloženě chybí: http://playground.arduino.cc/Main/ArduinoOnOtherAtmelChips
Tady je ukázáno na screenshotech, jak jednoduché je teď přidat podporu pro další desky/procesory: http://highlowtech.org/?p=1695 (podle toho jsem přidával tu ATtiny).
"A jakmile dozraje k přehození svého desktopového operačního systému za svobodný..."
To jako za kazdou cenu si musite rypnout? Vsichni co nepouzivaji svobodny OS, predpokladam, ze mineno Linux, tak jsou nedozrali? Jak uz jsem tady na rootu uz psal, ja jsem "dozral" k opacnemu rozhodnuti a presel jsem od Linuxu k Windows. Linux je dobry OS a jsem rad, ze jste s nim spokojen. Nemam zadnou averzi vuci Unix systemum, mame tu v praci QNX na minimalistickem hardwaru a je obdivuhodne jak to dobre to plni svoji funkci a nenadavam u toho kdyz musim upravovat config v terminalu. Lidi pouzivaji ruzne operacni systemy, ruzne telefony, mluvi ruznyma jazykama, maji ruzne zvyky a jsou z ruznych zemi a neni nutno je hned kvuli tomu odsuzovat ci ponizovat. Mam v praci kolegyni, ktera ma rada prirodu a ridi se pravidlem, ze se nema odtrhnout ani listecek pokud k tomu neni duvod. Jo, muzu nad ni mavnout rukou ze je to hukra (hubena krava) anebo se muzu nad tim zamyslet... Sorry, nechal jsem se unest.
Lososi, mrzí mě, že vám přechod od Linuxu na Windows působí takový vnitřní zmatek.
Můj článek se snažil sdělit dvě věci:
1) díky Arduino IDE není nutné na Windows složitě shánět toolchain a avrdude. Arduino IDE to pro windowsáky elegantně řeší. Dobře pro ně!
2) Arduino IDE je v Javě, je díky tomu multiplatformní a to je dobře pro všechny - nikdo není nucen měnit OS, a zároveň aplikace nezamyká člověka na určité platformě.
Zkuste si přečíst tu větu po svém, tj. "roky dělal v Linuxu v Arduino IDE, ale jakmile přecházel na Windows, nic nemusel měnit, neboť Arduino IDE běží i tam". Je to OK?
Ono to asi bez rypani fakt nejde. Ted je ze mne pomateny clovek.
Asi jsem se nevyjadril spravne. Prislo mi zbytecne a detinske, ze za kazdou cenu musite rypat do tech kdo pouzivaji Windows. Pokud jsem spravne pochopil to co jste napsal, tak clovek musi "dozrat" k prechodu s Windows na Linux. To znamena, ze jenom nedozrali pouzivaji Windows. A taky je uveden ten spravny smer: z Windows na Linux.
Pokud uz chcete poukazovat na multiplatformnost, tak bych videl daleko vetsi vyhodu v tom ze je snadne vyvvijet produkt na ruznych platformach zaroven (jiny OS doma/v praci/desktop/notebook...) anebo vyvijet produkt na jedne platforme a v pripade nutnosti pouzit jiny OS ktery je po ruce.
Obecne, a tohle neni mineno primo vuci vam, je mi lito ze nekteri az fanaticky brani jediny spravny OS - Linux, vsichni ostani a zejmena uzivatele Windows jsou ovce, bfu a pod. A taky si myslim, ze to samotnemu Linuxu dost skodi. Nejsem autor zadneho podobneho clanku, ale snad vas muzu upozornit na to, ze vami pouzita formulace nebyla prave nejstastnejsi a muze vas prirazovat k visezminenemu klubu fanatiku.
ja som na vyvoj pouzil: http://arduinodev.com/codeblocks/
obsahuje vsetko, co som od modernejsieho IDE ocakaval
navyse funguje na oboch platformach Win/Lin
Nu já jsem od Windows přešel k MacOS a pak obloukem před Ubuntu k Win (abych si jich užil, dokud tu jsou) takže teď nevím, zdali jsem vyspělejší. Pravděpodobně se zeptám přímo pana BLACKa na soužití osoby se schizoidní poruchou s počítači na platformách Win,Lin,Max,..
Mimochodem synek mi ukazoval, jak programuje arduino pomocí tabletu s Androidem (stejné IDE, naprosto stejná pohodová práce za pomoci knihoven a "template příkladů". Luxusní!
Nemá cenu ze vzrušovat. Autor nemá dostatek zkušeností, jinak by věděl že každý kdo to s vývojem HW myslí vážně potřebuje několik různých vysoce specializovaných software a hardwarových přístrojů kterých se prodá málo, takže ovladače a software jsou jenom pro Windows a na Linux se*e bílý tesák.
Asi nikdy nejel s GCC + GDB na hardware s FT2232D...
Na FPGA je to výrobce od výrobce, ale třeba Lattice Diamond má verzi pro Widle a pro RHEL... Jedna z oficiálních možností vypálení do brouka je s pomocí FT2232D...
Jediný, co z mýho pohledu chybí: Altium Designer pod Linuxem ;(
Ja jsem se minule zapomel podivat na clanek a rozjel se tam pomerne obsahlej thread ohledne tech ochran, tak bych jen rad podotk, ze bezny transil ma kapacity nekde okolo stovek pf, obvykle mene nez 1nf. Dajui se koupit high speed veci, co maji kapacitu vyrazne nizsi. Maximum C sbernice je nekde u 1wire (pro kazdy devici zvlast) nekde na urovni 1nf, takze pokud tech cidel na dratu neni moc, transil nepusobi problem. Jinak je pak cela rada dalsihc moznosti, ikdyz krapek drazsich (misto 5 kc stoji 30). Typicky tyristory (SIDACy), ktere maji kapacity 30-50pf, high speed verze jeste nizsi. Pripadne existuji MOVy, ktere maji kapacity jeste nizsi. Ale pro zmenu vetsi clamp napeti. SIDACy se daji pouzit jen pokud bude v panetove vetvy neco, co pri nadmernem proudu na chvilku odpoji zdroj (treba TBUcko a podobne) nebo to mit napajene skrze parasitne (reset 1wire pak uklidni tyristor), protoze jakmile tyristor sepne prepetim, zustal by sepnutej. Pokud prijde primej uder, nezachrani te skoro nic. Aby byla zarucena nejaka uroven zabezpeceni proti primemu uderu blesku (a zde je podotykam, ze veskere normy a znalci vychazi se STATISTIK, ale sem tam se najde blesk, i u nas, kterej je MIMO veskere statystiky, takze vsechno je to o pravdepodobnosti) tak by to stalo balik, nejde jen svernici, ale komplexne celou budovu. V tomto ohledu je lepsi pouzivat failure safe rizene regulatory... Poznamky PetraM bez reseni muzes v klidu ignorovat, obvykle kazdej, kdo dela v nejaky oblasti je precenuje nad ostatnima. Tyhle regulatory/serva maji vlasnost, ze pri preruseni napajeni se proste otevrou. Jasan, muzem namitnout, ze nam zustane zdroj pod napetim. Tak se to da resit jednoduchou logikou primo u serva, kde pokud nenastane nejaka komunikace na smernici, tak se odpoji napajeci napeti do serva. Jasan, i tento "pasivni" (ve smyslu CPU logiky a tak) obvod muze selhat. Obvykle se bere metoda jedne poruchy. Ikdyz pripustime dve nezavisle poruchy, potom by to slo resit doheldovanim audrina, tj. kdyz chcipne, prestane reagovat, jinej system, umistenej treba o ocelove uzemene krabici posle zpravu "ty vole prijed sem". No, ale protoze z toho cumi antena, i ta muze EMP odejit. Takze by to chtelo tu krabici mit mimo budovu, spojenou optikou s vlastni baterii :) Nojo, ale co kdyz ti na barak spadne mereorit ? :) Vsechno ma sysl resit jen ocamcadpocamcad. Jinak asi bude resenej barak a jinak vyrobna, kde se michaj vybusniny. Tam je pocuc resit ochranu proti bleskum a tak... :)
Tot vse, sorry ze jsem to zapomel napsat pod minulej dil (o:
R.
Kdysi jsem v jednom bytu montoval pokojový termostat (náhrada původního, takový kokot, abych tak řešil regulaci, nejsem), když se topilo, pořád ukazoval 22 °C, ale mně byla furt kurevská kosa! Už jsem měl domluvenou reklamaci u výrobce, pak mě napadlo změřit teplotu u podlahy (nezateplená nad sklepem, starý barák), tam bylo 18 °C! Na výšce 1,3 m to byly 4 stupně. Tohle běžně dělávají nezateplené podlahy - můžete topit jak protržení a stejně vám pořád bude kosa.
Díky za pěkný článek. Přinutil mě pokračovat ve stavbě automatického krmítka pro rybičky.
Jen s přimlouvám vždy za jeden článek pro lamy jako jsem já. Například shánění ovladače pro Arduino a zprovoznění spojení už je dneska celkem snadné, ale s Arduino Nano mi to tak v pohodě nepřijde.
Trokare, přiznám se, že netuším, co to znamená "shánět ovladač pro Arduino XXX". Všechna USB Arduina, která jsem kdy potkal (Uno, Mega, Nano, Micro) mi vždy v Ubuntu GNU Linuxu fungovala bez jakýchkoliv přídavných ovladačů. Prostě zasunu a jedu (plug & play). Takže i kdybych měl psát článek speciálně pro lamy, tohle bych tam nezmínil, neboť to není žádný problém.
Upřímně řečeno, vím o problémech s kopiemi Arduino Nano, kde zespodu přilepený převodník z RS232 na USB pomocí kopie FT232 přestal v MS Windows fungovat, protože výrobce originálů FT232 se rozhodl zaútočit proti plagiátorům tím, že začal šířit ovladač pro MS-Windows, který úmyslně ničí kopie FT232. Ani se mě neptejte, co si o tom myslím. Moje nejslušnější odpověď na tuto aféru je "programujte v Linuxu".
Jinak Arduino Nano je docela nešikovná věc - je to vlastně Arduino Pro Mini s vestavěným převodníkem RS232-USB, který není v produkci potřeba, a proto Nano nekupuji a nepoužívám. To je lepší odladit vše na Uno (které má lepší převodník) a pak použít Pro Mini, které jde naprogramovat přes externí převodník s čipem např. CP2102. Více vizte http://joysfera.blogspot.cz/2013/09/arduino-novy-usb-prevodnik-s-cp2102.html
Ad Proč, když jsou složitější? - protože pod windows máte skutečně k dispozici mnohem větší škálu kvalitnějších vývojových nástrojů než v linuxovém prostředí. Jmenovitě například Atmel studio postavené na základu microsoft visual studia, CS Eagle společnosti CADSoft nebo NGspice. Jistě, můžete mi namítnout, že máde ve svém oblíbeném ubuntu software centru spoustu obdobných aplikací, jenže to je jako srovnávat moderní profesionální závodní kolo a nějaký starý velociped, který navíc ztloukla dohromady parta nadšenců v garáži ve svém volném čase, kdy jeden si už stihnul napsat domácí úkoy a druhému odpadlo odpolední doučování češtiny.
Navíc windows jsou prostě od základu svého designu stavěné tak, aby si s nimi uměl poradit skutečný začátečník - to je něco, co o linuxu říci prostě nelze. Kdybyste dal BFU navýběr mezi i třeba nechvalně proslulou plochou metro společnosti microsoft a nějakým tím vaším odporným a nepřehledným příkazovým řádkem je jasné, co si vybere.
Navíc microsoft u windows 10 již dávno proklamoval, že se stanou nástrojem různých bastlířů a vývojářů elektronických zařízení. Budoucnost je tedy jednoduché predikovat. Pro začátečníka bude windows mnohem lepším vývojovým nástrojem, než kdy třeba nějaké to vaše ubuntu bylo.
Server s windows určitě lépe obslouží i jmenovanou 1-wire sběrnici, než server s linuxem. Pokud například dojde na sběrnici k vyskratování drátku, dovedu si představit že Vám to položí celou infrastrukturu. Server s windows by se v tomto případě izoloval od vnějších vstupů a vyslal by varovný signál. Myslím, že nemusím říkat, co je lepším řešením.
Zrovna ten CS Eagle je dávná prehistorie. Profesionální HW návrháři se mu vyhýbají obloukem. Už i ten OpenSource KiCAD, na jehož vývoji se teď podílí i CERN, je na tom lépe a je i pro unix.
Zmínku o "nepřehledném příkazovém řádku" ani nekomentuji. Jelikož zřejmě ani nechápete k čemu je určen a kolik práce může ulehčit/urychlit.
Mozna bych takove veci radsi delal na cistem Atmega, ale arduino s atmega328 furt stoji ty same penize, nebo dokonce i min nez samotnty atmega328. A to arduino ma navic, regulator napeti a dalsi uzitecnosti, ktere bych stejne musel dodelavat. Zahady cinskeho trhu :)
Co se tyce Arduino IDE - je dost uboha hracka. Normalne editovat texty se v tom neda. Preferuji vim a k tomu Arduino-Makefile
Osobně mne přijde, že Arduino IDE je největší brzdou možností Arduina. Přesněji řečenou, tou brzdou je návrh knihoven a způsobu programování.
Arduino IDE přímo učí programátory špatným návykům. Nutí je, aby vše programovaly sekvenčně v nekonečných smyčkách. To nejlepší, co nabízí, jsou dotazy na to, zda nějaký modul (např. sériový port) má k dispozici data.
Se základními knihovnami nelze programovat paralelně. A pokud se o to pokusíme, a chceme použít jen vybraná volání, knihovny nám aktivně házejí klacky pod nohy. Například nikde není zdokumentováno, že některé funkce nám přeprogramují časovače. O čekání na změnu stavu pinu v úsporném režimu si můžeme nechat jen zdát.
Takže představa, že třeba pomocí Arduino IDE naprogramujeme program, který čte z teploměru a paralelně posílá předchozí data na displej, je lichá. Když čte teplotu, nemůže obsluhovat displej, a naopak.
Stejně tak třeba nemůžeme řídit krokové motory a přitom posílat data po sériovém portu. Musíme krokové motory nejdřív zastavit, a až pak teprve komunikovat.
A přitom ATMega jsou procesory, které mají časovače, přerušení, úsporné režimy, watchdog…
U nejstarších verzí šel dokonce předpoklad programování v nekonečných smyčkách až do návrhu hardwaru. Byl použit stabilizátor, který měl vysoký minimální proud, a pokud šel procesor do úsporného režimu, stabilizátor nedokázal správně fungovat, a mohlo dojít až ke zničení procesoru.
A to ani nemluvím o pomalosti a velikosti výsledného kódu. Třeba zmíněný přenositelný digitalWrite() je 28× pomalejší, než by mohl být, kdyby byl napsaný s ohledem na rychlost.
To není vysokoúrovňové programování. To je naopak ta nejnižší úroveň, sahající až na hardware.
A má smysl se o to pokoušet:
- Když místo digiralRead() ve smyčce použijeme přerušení, lze snížit příkon čipu tisícinásobně.
- I jednoduché programy fungují s paralelizací lépe. Lze například točit s krokovými motory a přitom číst data z portů, lze posílat data na displej a přitom nepřijít o události na GPIO.
- Když místo počítání ve smyčce použijeme časovač, opět lze snížit příkon čipu tisícinásobně. (Pravda, některé funkce na čekání v Arduino IDE časovač používají. Ovšem vzhledem k tomu, jak špatně je to zdokumentované, a jak široce se tyto funkce používají v jiných knihovnách, tak je to spíš na škodu, protože nikdy nevíte, kdy vám nějaká funkce časovač zresetuje.)
- Možnosti přesně časovat kritické události, bez ohledu na to, v jaké části nekonečné smyčky se udály. Krokové motory budou mít plynulý chod, generátory budou generovat čisté signály, digitální signály budou mít přesné časování atd.
Ono je to kupodivu velice jednoduchý. Jediný problém je, že se začátečník naučí syntaxi C, nekonečnou smyčku v main(), potom nastavovat a číst bity v registrech a nikde nenajde, co hodit mezi to... Přitom tohle zrovna patří k základům, který by měl umět každý jednočipář.
Paralelně běší skoro všechno. I blbej tachometr v autě - hýbe ručičkou při tom počítá kilometry, zobazuje je a světe, div se, komunikuje u toho po CANu... A to vše současně. Dálkový ovládání k telce zvládne blikal LEDkou během čtení klávesnice,... Kde je jednočip, tam je paralelní úloha.
Ahojky Peťulko, nedej se zviklat a znechutit. Článek je pro myslící bastlíře a pokud si chce někdo léčit mindráky typu widle či cokoliv jiného, tak pláče sice dobře, ale na špatném hrobě a ať si čmárá třebas na papír a programuje třebas přes tlačítka. I pro mne docela zajímavý článek o něčem jiném než o placení něčeho co nevyužiju. Zrovna u termostatu nepotřebuju časy v pikosekundách, takže wocogo?
Pikosekundám ne, ale mikrosekundám již ano.
Právě kvůli pocitu, že u teploměru o mikrosekundy nejde, se mi nepodařilo odladit parazitní napájení teplotního čidla DS1820. Pomalá a špatně napsaná volání Arduino IDE nestačila poslat do čidla včas energii pro měření. Viz diskuse k článku Internetový termostat: stavba sítě teplotních čidel na 1-Wire sběrnici.
To ovšem nebyla výtka ke článku, ale výtka směrem k Arduino IDE: http://www.root.cz//clanky/internetovy-termostat-stavba-site-teplotnich-cidel-na-1-wire-sbernici/nazory/544961/
V tomto konkrétním případě nešlo ani tak o přerušení, ale o pomalost funkcí Arduino IDE.
Projekt Fast digitalRead existuje. To je ale jen malý střípek do mozaiky.
Problém celého Arduino IDE je nejen v tom, že programátory nevede ke správnému programování pomocí přerušení, ale i v tom, že knihovny jsou k takovému programování nepřátelské. Aniž by to nějak bylo dokumentováno, resetují čítače časovačů. A jsou psány tak, že nepředpokládají, že by jejich uživatel chtěl aktivně používat přerušení.
Dokonce i ukázkový příklad přerušení v dokumentaci je napsán tak, jak se to nemá dělat. (Blikač lze za pomoci přerušení napsat zcela bez potřeby čehokoliv v loop().)
Tím pádem máte jen dvě možnosti:
1) Můžete v daném okamžiku použít jen jednu takovou funkci.
2) Musíte si to přepsat.
Proč? Protože funkce použitelné paralelně se musí psát úplně jinak. Není to lineární sekvence čekání na určitou událost, ale sada funkcí, které si můžete zaregistrovat pro obsluhu určité události. Funkce pro paralelní programování musí mít úplně jiné API:
základ API pro programování ve smyčkách:
čekej_na_událost_a_pak_vrať_hodnotu()
základ API pro paralelní programování:
registruj_funkci_pro_obsluhu_události()
obsluž_událost()
Zatímco pomocí API pro paralelní programování lze napsat API pro programování ve smyčkách poměrně snadno, obráceně to nejde. Arduino IDE ovšem nabízí jen API pro programování ve smyčkách.
Pokud chcete používat časovače, musíte si ověřit, že vaše funkce nevolá např delay(). Což vylučuje většinu knihoven. (A nejhorší je na tom to, že delay() nepoužívá časovač na to, aby na chvíli uspalo CPU, ale na to, aby ho v nekonečné smyčce neustále dokola testovalo na správnou hodnotu.)
Nevím o jiné podobně komplexní sadě knihoven pro jednočipy, která by byla rychlá a přátelská k programování přerušení a obsluhy událostí.