Arduino - jednoduché aplikace pro malá kolejiště.

Schémata, zapojení, návody, dotazy a postupy k využití v železničním modelářství.

Moderátoři: Michal Dalecký, Jarda H., Rudolf, 123.marek

Re: Arduino - jednoduché aplikace pro malá kolejiště.

Příspěvekod belgarat » ned 03 čer, 2018 3:58 pm

hopeter píše:Cyklem While jsem řešil možnost otočení motoru o více než 360°. Bohužel jsem zatím nezjistil jak to udělat lépe. Proto je tam v programu více otoček o určený úhel a k tomu ten for cyklus...

Ja nevim, vsak tak jak jsi to napsal (s vyjimkou formatovani :-D) je to pochopitelne dostatecne ... otocek krat otocit o zadany uhel. Pocet otocek zrejme souvisi s rozteci koleji. Uprimne, takhle po krocich zapsany program je mozna lepsi ;) protoze je jasne videt kam se ma hrabnout (zmena roztece, zmena mechaniky/motoru).
Belgarat (nemodelar, greenhorn, pseudoprogramator, pindac nesmyslu)
belgarat
 
Příspěvky: 674
Registrován: čtv 27 pro, 2012 9:36 pm
Bydliště: Hřebeč u Kladna

Re: Arduino - jednoduché aplikace pro malá kolejiště.

Příspěvekod Pater » ned 03 čer, 2018 4:54 pm

belgarat píše:Pater: kazdy ma svuj styl. Nechtel jsem do toho vrtat, protoze funkcne to nevadi -- kdyz se v tom autor vyzna.

Nekritizuji styl. Autor se v tom vyzná, ale já jsem se v tom chtěl vyznat taky.
belgarat píše:Male upozorneni - radky 62-70, Presuvna_opr.ino -- zmena semantiky oproti puvodnimu kodu. Puvodni kod UVNITR while provedl posunuti o urcity uhel (prevedeno ja kroky motorku), tzn. otocka * uhel. Zatimco novy kod ma cykly na stejne urovni, tedy se otoci o otocka kroku + uhel. Budto neni spravne tato uprava, nebo je treba rovnez opravit radky 48-55, kde jsou cykly vnorene.

Toto jsem přhlédl, cyklus for má být vnořen do while.
belgarat píše:Poznamka: to jsou ty {} a odsazeni prikazu, ktere je v Presuvna_opr.ino (panove prominou) stejne "blbe": vnorene prikazy na stejne urovni jako rizeni bloku (for, while). Je to hnidopiseni a nema smysl se tim zabyvat do doby nez na kodu zacne pracovat vice lidi (s jinyma ocima). Ale kdyz uz Pater zacal opravovat, tak aby to k necemu bylo.

Máte pravdu, je to "blbé". Oprava se nepodařila. Všem se omlouvám, nechtěl jsem do toho vrtat, jen jsem se chtěl v tom kódu vyznat.
Uživatelský avatar
Pater
 
Příspěvky: 28
Registrován: stř 20 črc, 2011 4:52 pm
Bydliště: Karviná

Re: Arduino - jednoduché aplikace pro malá kolejiště.

Příspěvekod hopeter » ned 03 čer, 2018 5:10 pm

Kluci v pohodě , jsem rád za každou radu. Jak jsem už několikrát napsal jsem samouk a mám radost z každého kroku, který vyřeším. :wink:
Určitě budu ještě na tom prográmku pracovat. Teď je na řadě mechanická část a pak praxe ukáže kudy dále...
TT a G , epocha III / IV , jen si tak hraju ... HOnza PETERa
Uživatelský avatar
hopeter
 
Příspěvky: 1387
Registrován: pát 20 pro, 2013 3:03 pm
Bydliště: Červený Kostelec

Re: Arduino - jednoduché aplikace pro malá kolejiště.

Příspěvekod belgarat » ned 03 čer, 2018 5:30 pm

Pater píše:Máte pravdu, je to "blbé". Oprava se nepodařila. Všem se omlouvám, nechtěl jsem do toho vrtat, jen jsem se chtěl v tom kódu vyznat.


V klidu -- jestli chces neco "blbumvzdorneho", tak si stahni C++ IDE (NetBeans, Eclipse, nebo CodeBlocks) nebo dobry textovy editor (Sublime ?), ktery umi formatovat (i podle Tvych zvyklossti) -- ten Ti text dost zprehledni, a pak se udela mene chyb pri upravach. Nektere Ti dokonce i doplni chybejici {} podle nastaveneho stylu. Dobre IDE Te bude i upozornovat na "podezrele" operace, jako cpani integeru do char promenne, nebo prirazeni do ridici promenne cyklu (oblibeny zdroj nekonecnosti)

Pri cteni ciziho kodu mimo (tvoje navykle) konvence je prehlednuti naprosto bezne. Arduino IDE bohuzel uzivatelskou privetivosti moc nevynika.
Belgarat (nemodelar, greenhorn, pseudoprogramator, pindac nesmyslu)
belgarat
 
Příspěvky: 674
Registrován: čtv 27 pro, 2012 9:36 pm
Bydliště: Hřebeč u Kladna

Re: Arduino - jednoduché aplikace pro malá kolejiště.

Příspěvekod sidlo » ned 03 čer, 2018 6:43 pm

Ještě bych doplnil Sloeber http://eclipse.baeyens.it/. Chvíli jsem ho používal. Dobře se v něm píšou programy, které se skládají z více zdrojáků. Ale vrátil jsem se k Arduino IDE, a to i přesto, že je poněkud spartánský.
Uživatelský avatar
sidlo
 
Příspěvky: 1499
Registrován: ned 27 dub, 2014 7:32 am

Re: Arduino - jednoduché aplikace pro malá kolejiště.

Příspěvekod hopeter » ned 03 čer, 2018 7:24 pm

No já asi zůstanu u ArduinoIDE... Když je něco blbě tak se ozve při kompilaci a vše co jsem zatím našel se k němu vztahuje ( příklady , knížky videa ). A hlavně to kecá česky. :) V šestapadesáti už se po americku učit nebudu. :wink:
Bohužel nemám poblíž nikoho tak se musím učit sám...
TT a G , epocha III / IV , jen si tak hraju ... HOnza PETERa
Uživatelský avatar
hopeter
 
Příspěvky: 1387
Registrován: pát 20 pro, 2013 3:03 pm
Bydliště: Červený Kostelec

Re: Arduino - jednoduché aplikace pro malá kolejiště.

Příspěvekod hopeter » pát 08 čer, 2018 8:17 pm

mechanika_přesuvna.jpg

Mechanika na pokusy... Než budu více investovat tak si udělám zkoušku s obyčejnou závitovou tyčí M10. Pro rozteč 44 mm to vychází na 29 otoček a kousek k tomu. S tímto zpřevodovaným motorem to bude asi na kafe než to přejede z polohy do polohy... :wink:

Další udělátko bych chtěl modul "cik-cak" s postupným rozjezdem a zpomalením na uvratích. Uvažuju použít Hmůstek L9110S případně L298N. Nemáte někdo zkušenost s použitím těchto můstků pro železniční modely ( analog ) ?
Algoritmus asi takto. Motor vyjede ze stanice A ( postupný rozjezd ) do stanice B , tam postupně zastaví , vyčká nastavený čas a vyjede ( postupný rozjezd ) zpět do stanice A , po vyčkání určité doby znovu vyjede do stanice B ...atakdále... V místo kde začne zpomalovat by bylo určeno jazýčkovým kontaktem ( impuls by byl akceptovám pouze ve směru do stanice ). No teď to ještě napsat jako program pro arduino... :?
TT a G , epocha III / IV , jen si tak hraju ... HOnza PETERa
Uživatelský avatar
hopeter
 
Příspěvky: 1387
Registrován: pát 20 pro, 2013 3:03 pm
Bydliště: Červený Kostelec

Re: Arduino - jednoduché aplikace pro malá kolejiště.

Příspěvekod fulda » pát 08 čer, 2018 8:53 pm

hopeter píše:Uvažuju použít Hmůstek L9110S případně L298N.
Já mám - L9110S se mi strašně hřeje, on má velký úbytek napětí (myslím 1,5V) a děsně se hřeje už když jezdí se želvou (cca 15mA).
L298N je celkem v pohodě a běžně je používám pro bipolární krokáče.
Za pravopisné chyby v této zprávě může moje učitelka češtiny.
Uživatelský avatar
fulda
 
Příspěvky: 3994
Registrován: pon 09 srp, 2010 8:08 am
Bydliště: Praha - Uhříněves

Re: Arduino - jednoduché aplikace pro malá kolejiště.

Příspěvekod hopeter » sob 09 čer, 2018 3:44 pm

Fakt topí už při 15 mA ? V popisu má udáno 800 mA trvale na jeden kanál. :?
V plánovaném provozu u mě by to mělo tahat TT sólo motor po rovině. Délka tratě cca 1,5 metru a v každé stanici cca 30 sec. odpočinek.
No připravené mám oba tak když bude L9110S moc topit, přejdu na L298N.
TT a G , epocha III / IV , jen si tak hraju ... HOnza PETERa
Uživatelský avatar
hopeter
 
Příspěvky: 1387
Registrován: pát 20 pro, 2013 3:03 pm
Bydliště: Červený Kostelec

Re: Arduino - jednoduché aplikace pro malá kolejiště.

Příspěvekod fulda » sob 09 čer, 2018 6:38 pm

hopeter píše:Fakt topí už při 15 mA ? V popisu má udáno 800 mA trvale na jeden kanál. :?
V plánovaném provozu u mě by to mělo tahat TT sólo motor po rovině. Délka tratě cca 1,5 metru a v každé stanici cca 30 sec. odpočinek.
No připravené mám oba tak když bude L9110S moc topit, přejdu na L298N.

On je problém v tom, že nikdy nevíš, co kupuješ. Možná mám blbou sérii, co já vím?
Za pravopisné chyby v této zprávě může moje učitelka češtiny.
Uživatelský avatar
fulda
 
Příspěvky: 3994
Registrován: pon 09 srp, 2010 8:08 am
Bydliště: Praha - Uhříněves

Re: Arduino - jednoduché aplikace pro malá kolejiště.

Příspěvekod Kajinek11 » ned 10 čer, 2018 8:31 pm

Ahoj, aniž bych měl jakékoliv zkušenosti s Arduinem, nebo programováním, jsem se rozhodl, že si zabezpečím stanici a skryťák. Můžete mi někdo prosím zběžně kouknout na můj program? Jedná se o zabezpečení stanice návěstidly v závislosti na výměnách. Zatím jsem to nezkoušel, neboť ještě to nemám na kolejišti zdrátované, ale zkoušel jsem již napsat program. Tak jen jestli tam nejsou vysloveně nesmysly, abych pak nebyl překvapen co to dělá, nebo nedělá. Popřípadě si něco nezničil. Díky..
Přílohy
ScreenHunter_236 Jun. 10 22.28.jpg
stanice
ScreenHunter_236 Jun. 10 22.28.jpg (34.1 KiB) Zobrazeno 297 krát
SZZ_Branisovice1_program3.zip
program
(3.16 KiB) 15 krát
Kajinek11
 
Příspěvky: 293
Registrován: stř 07 pro, 2011 11:12 pm

Re: Arduino - jednoduché aplikace pro malá kolejiště.

Příspěvekod belgarat » ned 10 čer, 2018 8:55 pm

jaky je to typ arduina ? Mega 2560 ?

Jako prvni -- v podmince pouzivas = (prirazeni) namisto == (porovnani). I kdyz se takhle nekdy zkracuje zapis, asi to bude preklep.
Nerozumim tomu, co presne precte "digitalRead(L)" -- L je "navestidlo L", kdy je signal 1 a kdy 0 ?

Update: "L1a = LOW" je asi take chyba: L1a je podle vseho konstanta - cislo nozicky. Mozna se ma jednat o "digitalRead(L1a)", jako precteni soucasneho stavu.

Co znamena V1 == LOW: vyhybka 1 rovne? do odbocky ? Je to stejne u vsech Vx (viz postaveni pro vjezd na 1. kolej, radek 209) ?
Belgarat (nemodelar, greenhorn, pseudoprogramator, pindac nesmyslu)
belgarat
 
Příspěvky: 674
Registrován: čtv 27 pro, 2012 9:36 pm
Bydliště: Hřebeč u Kladna

Re: Arduino - jednoduché aplikace pro malá kolejiště.

Příspěvekod Kajinek11 » ned 10 čer, 2018 10:00 pm

belgarat píše:jaky je to typ arduina ? Mega 2560 ?

Jako prvni -- v podmince pouzivas = (prirazeni) namisto == (porovnani). I kdyz se takhle nekdy zkracuje zapis, asi to bude preklep.
Nerozumim tomu, co presne precte "digitalRead(L)" -- L je "navestidlo L", kdy je signal 1 a kdy 0 ?

Update: "L1a = LOW" je asi take chyba: L1a je podle vseho konstanta - cislo nozicky. Mozna se ma jednat o "digitalRead(L1a)", jako precteni soucasneho stavu.

Co znamena V1 == LOW: vyhybka 1 rovne? do odbocky ? Je to stejne u vsech Vx (viz postaveni pro vjezd na 1. kolej, radek 209) ?


Ano Mega 2560,
= namísto == myslíš kde?
digitalread(L) je čtení tlačítka pro změnu vjezd.návěstidla L. Já jsem se dočetl někde v manuálu, že digitalread, čte pouze 1, nemá opačný stav. Stav 1 je tedy když je tlačítko zmáčknuté.

Ano L1a=LOW má být opravdu "digitalRead(L1a)", jako precteni soucasneho stavu. Tady mám právě nejasnost. Mohu takto číst hodnotu současného stavu na pinu nastaveném jako OUTPUT?

V1 = LOW je myšleno digitalread pro stav výhybky buď do odbočky nebo rovně. Bude tam vypínač na 5V, kterým bude hýbat servo. Jestli bude HIGH rovně nebo do odbočky to ještě nevím (nudu ladit později). Asi to bude mít každá vexsle jinak podle toho na kterou stranu serva se mi podaří dát spínač. Nejde mi teď o detaily, spíš o to jestli jsem to celé programování pochopil správně. :)
Kajinek11
 
Příspěvky: 293
Registrován: stř 07 pro, 2011 11:12 pm

Re: Arduino - jednoduché aplikace pro malá kolejiště.

Příspěvekod belgarat » ned 10 čer, 2018 10:15 pm

Kajinek11 píše:= namísto == myslíš kde?

Narpriklad:

radek 223 píše:if ((digitalRead(L)) &&(V1 = LOW) && (V2 = LOW)&& (V3 = HIGH)&& (V12 = HIGH) && (V14 = HIGH)&&(V15 = HIGH) &&(S13 = LOW) && (L1a = HIGH)){

priradi LOW do V1 (=) a vzapeti ukonci vyhodnoceni podminky, protoze LOW je 0, tudiz logicka "nepravda". Domnivam se, ze spravne ma byt "&& (V1 == LOW)" coz porovna hodnotu V1 s LOW. Stejne jsou asi neumyslna dalsi prirazeni v podmince.

Kajinek11 píše:digitalread(L) je čtení tlačítka pro změnu vjezd.návěstidla L. Já jsem se dočetl někde v manuálu, že digitalread, čte pouze 1, nemá opačný stav. Stav 1 je tedy když je tlačítko zmáčknuté.

Jiste ze ma opacny stav. Pokud mas prislusnou nohu napojenou na tlacitko, tak zavisi na tom JAK mas to tlacitko zapojene. Pokud spina proti "GND", musis prislusny vstup nastavit jako pinMode(noha, INPUT_PULLUP). Jinak pri rozepnuti tlacitka bude vstup "viset ve vzduchu" a chytat nahodne vzruchy -- jako by se Ti tlacitko nahodne samo spinalo. INPUT_PULLUP znamena zapnuti interniho odporu proti +5V (VCC).
Pokud Ti bude tlacitko spinat +5V, musis dat na vstupni nohu nejaky vetsi odpor (47k ?) proti GND, aby byl definovany rozepnuty stav.

V zavislosti na tom, zda tlacitko spina GND nebo +5V bude pri sepnutem tlacitku LOW nebo HIGH.

Kajinek11 píše:V1 = LOW je myšleno digitalread pro stav výhybky buď do odbočky nebo rovně. Bude tam vypínač na 5V, kterým bude hýbat servo. Jestli bude HIGH rovně nebo do odbočky to ještě nevím (nudu ladit později). Asi to bude mít každá vexsle jinak podle toho na kterou stranu serva se mi podaří dát spínač. Nejde mi teď o detaily, spíš o to jestli jsem to celé programování pochopil správně. :)


Detaily jsou dulezite (Jirka_US promine za slovickareni), zda se mi pri zbeznem cteni, ze nektere ty podminene bloky se mohou aktivovat zaroven (tzn. vyhovi vice podminek), zatimco z toho, jak je ten program napsany, mi plyne ze bys asi chtel, aby vzdy probehl nejvyse jeden z nich. Resp. vice jen, pokud bude stisknuto vice "funkcnich" tlacitek. Muzu se plest. Na overeni bych se ale potreboval vyznat v tom ktery vstup co znamena, ktere jsou (z podstaty veci) vzajemne vyloucene. Jde to zapsat i jinak, tak, aby bylo bezpecne jiste, ze probehne jen jedina vetev.
Belgarat (nemodelar, greenhorn, pseudoprogramator, pindac nesmyslu)
belgarat
 
Příspěvky: 674
Registrován: čtv 27 pro, 2012 9:36 pm
Bydliště: Hřebeč u Kladna

Re: Arduino - jednoduché aplikace pro malá kolejiště.

Příspěvekod Kajinek11 » pon 11 čer, 2018 7:02 am

Díky, ano to mi nedošlo. Spínače polohy výhybek jsou jasné. Tam musím dát např: V1==HIGH.

Ovládací panel už mám zapojený. Mmám ovládací tlačítka (celkem 7) připojena na +5V externího zdroje.Současně by měla být zmáčknutá maximálně 2. To znamená, že za každé tlačítko musím tedy dát odpor 45k Ohm? Pokud nechci připojit odpory a chci použít interní tak musím tlačítka společně připojit na GND? Chápu to dobře?

Může nastat více stavů najednou. Ale neměli by se navzájem ovlivňovat. Zkusím to popsat.

Základní stav po startu nebo reset.

Vše svítí červeně.

Po stisknutí tlačítka L se nastaví žlutá nebo dvě žluté podle postavených výměn, nebo nic pokud výměna není v pořádku. Zároveň se přepne Se1 na STOP. Pokud je na odjezdovém L1 zelená a výměna na 1. kolej sepne se na návěstidle L zelená
Současně se můžou tlačítky L1, nebo L2, nebo L3 nastavit zelené na odjezdových návěstidlech. Vylučuje se pouze současný odjezd z L1 a L2 nevylučuje. Tlačítko L1 vždy přepne návěstidlo L2 na STOP a naopak. Dále si funkce odjezdu hlídá jestli není na vjezdovém S nebo SB povolen vjezd. Odjezdová návěstidla vrací zpět na červenou kolejový kontakt K2 nebo K3 (také odpor 45, že k?), popřípadě příslušným talčítkem L1,L2.L3 (pokud svítí zelená na odjezd - přepni na červenou).

Vjezdové návěstidlo L se zase přepíná na červenou kolejovým kontaktem K1 nebo opětovným stiskem tlačítka L.

Posun se zapíná současným stiskem tlačítka Po + příslušné návěstidlo. Vrací se na červenou opět K1-K3 popřípadě opětovným stiskem tlačítka příslušného návěstidla.

V téměř každé funkci je vždy pro sychr vloženo přepnutí ostatních návěstidel do základní polohy, tak aby právě nemohli nastat současně stavy, které by neměly. DÁ SE TO POCHOPIT?

Vjezdová návěstidla S a SB zatím nejsou řešena neboť ty budou dodělána až dalším dílem kolejiště. Prozatím je to koncová stanice.
Kajinek11
 
Příspěvky: 293
Registrován: stř 07 pro, 2011 11:12 pm

PředchozíDalší

Zpět na Elektrika a elektronika

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 3 návštevníků