Analog(D-PWM)out do> AnalogRead(Analog pin) filtr
Re: Analog(D-PWM)out do> AnalogRead(Analog pin) filtr
Jako masochistická hodnota za cenu tří drátů mě tedy pak napadá jedině / 3x digital in + 3 digital out/ pro každé takové zařízení, kde natvrdo bude na každém takovém zařízení trvale svítit / přijímat hodnoty čistě 0/1 x 3 = 8 stavů?
Re: Analog(D-PWM)out do> AnalogRead(Analog pin) filtr
V tom případě by možná bylo jednodušší nahradit sérii vysílaných impulsů jediným impulsem o délce odpovídající přenášené informaci (jako napětí v původním projektu). Vysílač by tento signál opakovaně vysílal ve svém volném strojovém času a přijímače by si v případě zájmu počkaly na první přijatý impuls a k jeho naměřené délce by přiřadily odpovídající hodnotu ze sedmi možných.
Re: Analog(D-PWM)out do> AnalogRead(Analog pin) filtr
Tohle se blíží, která klíčová slova mám hledat pro volný strojový čas?analytik píše: ↑25 srp 2020, 15:21V tom případě by možná bylo jednodušší nahradit sérii vysílaných impulsů jediným impulsem o délce odpovídající přenášené informaci (jako napětí v původním projektu). Vysílač by tento signál opakovaně vysílal ve svém volném strojovém času a přijímače by si v případě zájmu počkaly na první přijatý impuls a k jeho naměřené délce by přiřadily odpovídající hodnotu ze sedmi možných.
Re: Analog(D-PWM)out do> AnalogRead(Analog pin) filtr
Lidově - když mikroprocesor právě nemá do čeho píchnout. Možná i ta délka impulsu by se dala zachytit na kapacitě a nějaký čas ji tam uchovat coby napětí. Ale po každém přečtení by ji musel přijímací mikroprocesor vybít a do dalšího čtení nesmělo by přijít více než 1 impuls.
Re: Analog(D-PWM)out do> AnalogRead(Analog pin) filtr
Jo, děkuju za vysvětlení, to ja spiš myslel jak to užít v arduinu v procesu aby se mi toto dělo, konceptem jsem to pochopil. ale i tak díky za přístup, s arduinem jsem hodně začátečník, obecně základy mám.analytik píše: ↑25 srp 2020, 15:32Lidově - když mikroprocesor právě nemá do čeho píchnout. Možná i ta délka impulsu by se dala zachytit na kapacitě a nějaký čas ji tam uchovat coby napětí. Ale po každém přečtení by ji musel přijímací mikroprocesor vybít a do dalšího čtení nesmělo by přijít více než 1 impuls.
Obecně čas (moment) čtení jednoho a čas vysilání jiného arduina se může a nejspíš bude lišit (i ve větších poměrech násobků intervalů, řádově vteřiny), to v praxi znamená že by jednou vyslaná hodnota měla být i vícekrát čitelná (držená) do změny, a nebo naopak, jednou vyslaná hodnota by měla jít změnit, aniž by byla kdykoliv dříve přijímačem brána vpotaz. (tedy jsme koncepčně zpět u té nefunkční myšlenky s analogem)
Re: Analog(D-PWM)out do> AnalogRead(Analog pin) filtr
Mohu se zeptat : Z jakého důvodu nepoužít rs232 ? ... vysílací PIN jednoho arduina propojím s přijímacím pinem druhého -> jeden drát + GND .... a i takhle se do může dál řetězit, že přijatý znak pošlu dál až projde k poslednímu Arduinu, které ho odešle taky, ale do prázdna. Velmi snadno odešlu 0-7. Velmi snadno to na druhé straně přečtu.
Nevýhoda je že při nahrávání sketche je nutno mít tyto piny odpojené
Nevýhoda je že při nahrávání sketche je nutno mít tyto piny odpojené
Re: Analog(D-PWM)out do> AnalogRead(Analog pin) filtr
S tím přeposíláním abych nebyl nepochopen, tam nejde o to že to první jej pošle pro všechny až na konec.., První arduino odešle, to druhé si jej přečte a upraví (na jednu z těch sedmi hodnot, případně na stejnou, podle vlastního programu) samo se nějak zachová (vstupy + výstupy na ledky 1/0 atd) a jednu z těch sedmi hodnot dále stejnym způsobem pošle a tak dál (teoreticky do nekonečna, reálně těchto bloků, účastníků bude tak 10-12 maximálně).kiRRow píše: ↑25 srp 2020, 16:31Mohu se zeptat : Z jakého důvodu nepoužít rs232 ? ... vysílací PIN jednoho arduina propojím s přijímacím pinem druhého -> jeden drát + GND .... a i takhle se do může dál řetězit, že přijatý znak pošlu dál až projde k poslednímu Arduinu, které ho odešle taky, ale do prázdna. Velmi snadno odešlu 0-7. Velmi snadno to na druhé straně přečtu.
Nevýhoda je že při nahrávání sketche je nutno mít tyto piny odpojené
Zůstane mi při použití desek nano možnost během funkce monitorovat tuhle činost na debugu přes okénko sběrnice? s RS232 tipuji ne.
V případě že nedojde ke zpracování již přijatých hodnot, mam nějak možnost při každém čtení toho co přichází refreshnout abych měl v momentě zájmu o přijímanou hodnotu ty nejčerstvější informace?(aby mi tam v mezipaměti nevisela informace o jedno zpět)
něco takového jsem našel zde:
https://makezine.com/2012/12/03/how-to- ... ia-serial/
nicméně není mi moc jasné jak bych v kódu řešil případ, kdy první zmíněné arduino odešle už 3x hodnoty, teprve pak to druhé bude v momentu, kdy začne mít zájem o nějakou přijímanou hodnotu ale bude chtít tu nejčerstvější, ne ty první dvě. ale nebude si o ně řikat na vyžádání, protože zrovna to první už zas bude řešit jiné věci atd. Jestli se vyjadřuju čitelně.
Re: Analog(D-PWM)out do> AnalogRead(Analog pin) filtr
Vemeš převodník RS232 na USB a připojíš si ho kdekoliv do té komunikace potřebuješ. Prostě mít vyrobený monitorovací/servisní kabel a mít místečko kde ho připojíš. Třeba malou propojovací destičku s volnými piny pro ten kabel. Mužeš pak jak číst, tak i injektovat uměle vytvořenou komunikaci.
V momentě kdy se arduino dostane k čtení seriové linky, zjistí, že tam je 5hodnot v bufferu, tak první 4vyhodí a zapamatuje si 5tou. Spustíš cyklus čtení linky a budeš přepisovat jednu proměnou... na konci tam zůstane nejnovější hodnota.
Nicméně arduino, pokud o hodnotu nemá zájem, tak by pak mělo stejně přeposlat informaci dál, ale nic jiného neudělat. Co když má zájem někdo jiný ?
Ušetříš si hodně programování a vymýšlení kolem té komunikace a můžeš se soustředit na to co to má dělat.
Dokonce kdyby jsis vymyslel komunikační protokol a v něm omezil, aby se ti cyklovaly data (ten co to posílal musí umět poznat, že to poslal on a neposílat to po druhé), tak si může klidně kdykoliv kdokoliv na te lince zavolat o info jakéhokoliv jiného. Jen propojíš to poslední arduino zase na to první do kruhu. V podstatě posílat 4byte [KdoVysílá][KomuToMáBýt][příkaz/odpověď][dataPříkazu/dataOdpovědi].
Poslal jsem to já? neposílám to dal.
Je to pro mě? Neposílám, dál a udělám to co to chce, nebo pošlu odpověď.
Není to pro mě a neposlal jsem to já ? Pošlu to dál ...
V momentě kdy se arduino dostane k čtení seriové linky, zjistí, že tam je 5hodnot v bufferu, tak první 4vyhodí a zapamatuje si 5tou. Spustíš cyklus čtení linky a budeš přepisovat jednu proměnou... na konci tam zůstane nejnovější hodnota.
Nicméně arduino, pokud o hodnotu nemá zájem, tak by pak mělo stejně přeposlat informaci dál, ale nic jiného neudělat. Co když má zájem někdo jiný ?
Ušetříš si hodně programování a vymýšlení kolem té komunikace a můžeš se soustředit na to co to má dělat.
Dokonce kdyby jsis vymyslel komunikační protokol a v něm omezil, aby se ti cyklovaly data (ten co to posílal musí umět poznat, že to poslal on a neposílat to po druhé), tak si může klidně kdykoliv kdokoliv na te lince zavolat o info jakéhokoliv jiného. Jen propojíš to poslední arduino zase na to první do kruhu. V podstatě posílat 4byte [KdoVysílá][KomuToMáBýt][příkaz/odpověď][dataPříkazu/dataOdpovědi].
Poslal jsem to já? neposílám to dal.
Je to pro mě? Neposílám, dál a udělám to co to chce, nebo pošlu odpověď.
Není to pro mě a neposlal jsem to já ? Pošlu to dál ...
Re: Analog(D-PWM)out do> AnalogRead(Analog pin) filtr
Moc se stydím ;-(
Mám plný šuplík Arduin všech kalibrů, ale dosud mě nenapadl projekt, na který bych mohl nasadit více než dva kusy. Musím se ještě hodně učit!
Mám plný šuplík Arduin všech kalibrů, ale dosud mě nenapadl projekt, na který bych mohl nasadit více než dva kusy. Musím se ještě hodně učit!
Re: Analog(D-PWM)out do> AnalogRead(Analog pin) filtr
Zrovna u sebe nemam 3 arduina, jinak bych tu myšlenku hned zkusil. Moc nerad se nějak chlubím, ale tohle mi příjde opravdu jako dobrej nápad a řešení. Ani ta obsluha toho nebude nějak programátorsky náročná. Ještě bych přidal na konci jednoho vysílacího řetězce (dá se tomu říkat packet?) stop/oddělovací byte (třeba konec řádku) a rovnou bych data rozšířil aby celý packet měl 8byte + 1znak, že to je konec toho packetu ... nebo ještě lépe, ten znak může být kontrolní součet.
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 7 hostů