Picaxe-naprogramovaní tlačítka

Dneska se procesory objevují všude, pokud máte nějaký nápad, či udělát, tak se neváhejte pochlubit.
Odpovědět
Zpráva
Autor
galOs
Příspěvky: 5
Registrován: úte 24.02.2015 23:04

Picaxe-naprogramovaní tlačítka

#1 Příspěvek od galOs »

Dobrý den, mám za úkol sestavit model vrat, které se otvirají pomocí motorku a v koncových polohách jsou spínače na zastavení. Když zmáčknu tlačítko, tak se vrata začnou otvírat nebo zavírat záleží na výchozí poloze. Potřebuju zajistit, že když jsou vrata v pohybu (otviraní i zavíraní) tak pokud znovu zmáčknu tlačítko(stejné) tak chci aby se zastavily. Po té co znovu zmáčknu tlačítko, tak se znovu rozjely směrem, ve kterém se pohybovaly předtím.

Kód: Vybrat vše

start:
   low C.1
   low C.0
   if pinB.5 = 1 then goto smer
   goto start

smer:
   if pinB.7 = 1 then goto zavirani
   if pinB.6 = 1 then goto otvirani
   goto start

otvirani:
   high C.1
   low C.0
   pause 150
   if pinB.7 = 1 then goto start
   goto otvirani

zavirani:
   high C.0
   low C.1
   pause 150
   if pinB.6 = 1 then goto start
   goto zavirani

Zde je začátek a potřebuju tam vložit nějaký příkaz, který by mi zajistil, aby se vrata zastavili na zmáčknutí tlačítka a po dalším zmáčknutí zase rozpohybovala. Už jsem i něco zkusil naprogramovat, ale vždycky se mi to jen sekalo nebo se to nechtělo rozpohybovat.
Děkuji.
Uživatelský avatar
jova
Příspěvky: 1117
Registrován: ned 15.02.2009 0:00
Bydliště: Chýnov - to je kousek od Tábora
Kontaktovat uživatele:

Re: Picaxe-naprogramovaní tlačítka

#2 Příspěvek od jova »

Nešel by na to použít příkaz gosub a return? Gosub provede odskok na "stop" podprogram. Tam se udělá cyklovací smyčka s výběrem tlačítek a bude čekat na stisk tlačítka. Poté ho return vrátí zase na další řádek zpět v hlavním programu. Dalo by se tím klidně i změnit směr pohybu vrat při stisku opačného tlačítka.
Možná by do poznámky za středník chtělo dát vysvětlení co jsou které výstupy a tlačítka zač, aby bylo jasné jak to máš propojené.
EPP samokřídla
fotky: https://mapy.cz/fotografie?fotomapy&x=15&y=49&z=8&aid=861
Uživatelský avatar
JosefSvejk
Příspěvky: 6483
Registrován: pát 29.04.2011 0:00
Bydliště: ČR

Re: Picaxe-naprogramovaní tlačítka

#3 Příspěvek od JosefSvejk »

Je tam ale jen jedno tlačítko, takže směr budeš muset uložit do proměnné. A tlačítko ošetřit časově, aby ti to nepřepínalo víckrát na jedno zmáčknutí.
Člověk je tak složitá bytost, že o tom lidstvo nemá ponětí.
Uživatelský avatar
jova
Příspěvky: 1117
Registrován: ned 15.02.2009 0:00
Bydliště: Chýnov - to je kousek od Tábora
Kontaktovat uživatele:

Re: Picaxe-naprogramovaní tlačítka

#4 Příspěvek od jova »

Když použije ten příkaz gosub v těch podprogramech otvírání, zavírání, tak by se mu to mělo vrátit zpět zase do toho samého podprogramu a normálně pokračovat. Pak nemusí nikam nic ukládat ani časově ošetřovat. :D
Já takový podprogram řeším třeba takto:

Kód: Vybrat vše

...
if pin1=0 then gosub pauza  ; pozastavení programu při stisku tlačítka na pinu 1
...
pauza:                     
if pin1=0 then pauza    ; ošetření stisknutého tlačítka
pauza1:
if pin1=1 then pauza1   ; čeká na opětovný stisk tlačítka
return                  ;  vrátí na místo vyvolání podprogramu a pokračuje dál
EPP samokřídla
fotky: https://mapy.cz/fotografie?fotomapy&x=15&y=49&z=8&aid=861
galOs
Příspěvky: 5
Registrován: úte 24.02.2015 23:04

Re: Picaxe-naprogramovaní tlačítka

#5 Příspěvek od galOs »

Vstupy jsou:
B.5-Tlačítko
B.6-Koncový spínač zavřený
B.7-Koncový spínač otevřený

O Gosubu jsem se dozvěděl dneska takže to mohu upravit, ale nějak nechápu ten váš program.

Kód: Vybrat vše

start:
   low C.1
   low C.0
   if pinB.5 = 1 then goto smer          ;podminka na zmáčknutí tlačítka
   goto start

smer:
   if pinB.7 = 1 then goto zavirani   ;pokud je otevřeno tak at se zavře
   if pinB.6 = 1 then goto otvirani   ;opak přechozího
   goto start

otvirani:
   high C.1               ;roztočení motoru
   low C.0
   pause 150               
   if pinB.7 = 1 then goto start   ;pokud dojel na konec tak at se zastavi   
   if pinB.5 = 1 then gosub pauza ;podmínka zmáčknutí tlačítka v cyklu (mělo by to skočit někam kde by mělo čekat na opětovné zmáčknutí tlačítka)   ;
   goto otvirani

zavirani:
   high C.0               ;roztočení motoru
   low C.1
   pause 150
   if pinB.6 = 1 then goto start      ;znovu akorát na opak
   if pinB.5 = 1 then gosub pauza
   goto zavirani

2952
Příspěvky: 1733
Registrován: ned 11.09.2011 20:06
Bydliště: ČR ,Slapy nad Vltavou

Re: Picaxe-naprogramovaní tlačítka

#6 Příspěvek od 2952 »

..jestli to chceš ještě vylepšit , bylo by dobré použít optické hlídání prostoru pod závorou:
V případě , že se něco(auto) objeví pod pohybující se závorou, závora jede nahoru...
galOs
Příspěvky: 5
Registrován: úte 24.02.2015 23:04

Re: Picaxe-naprogramovaní tlačítka

#7 Příspěvek od galOs »

Tak maji to být ovládane vrata například u domu s tím rozdílem že na B.5 bude připojeno dálkové ovládani a chtěl bych tam přidat tu podmínku toho zastaveni když se to rozjede. Ale když jsem to zkoušel tak to bylo moc rychlé a v podstatě to skákalo zpět do podprogramu otvirani/zavirani ( takže se to sekalo) a s tím co mi poslal jova tak tomi moc nerozumím.
Uživatelský avatar
jova
Příspěvky: 1117
Registrován: ned 15.02.2009 0:00
Bydliště: Chýnov - to je kousek od Tábora
Kontaktovat uživatele:

Re: Picaxe-naprogramovaní tlačítka

#8 Příspěvek od jova »

Myslel jsem to třeba takhle. Je to jen rychlovka, určitě se to dá vymyslet i lépe :?
Ještě jsem se chtěl optat, jak máš ošetřené vstupy? Neustále by na nich mělo být definované napětí. Já to dělám tak, že na vstupy mám přes rezistor 4K7 přivedeno +5V a spínače, koncáky, pak přivádí nulový potenciál. Takže to ovládám 0 a ne 1 jako ty. Ty rezistory jsou i uvnitř procesoru a dají se zapnout softverově.

Kód: Vybrat vše

start:
   low C.1
   low C.0
   if pinB.5 = 1 then goto smer          ;podminka na zmáčknutí tlačítka
   goto start

smer:
   if pinB.5=1 then smer    ; ošetření stisknutého tlačítka
   if pinB.7 = 1 then goto zavirani   ;pokud je otevřeno tak at se zavře
   if pinB.6 = 1 then goto otvirani   ;opak přechozího
   goto start

otvirani:
   high C.1               ;roztočení motoru
   low C.0
   pause 150               
   if pinB.7 = 1 then goto start   ;pokud dojel na konec tak at se zastavi   
   if pinB.5 = 1 then gosub pauzaot ;podmínka zmáčknutí tlačítka v cyklu (mělo by to skočit někam kde by mělo čekat na opětovné zmáčknutí tlačítka) 
   goto otvirani

zavirani:
   high C.0               ;roztočení motoru
   low C.1
   pause 150
   if pinB.6 = 1 then goto start      ;znovu akorát na opak
   if pinB.5 = 1 then gosub pauzaza
   goto zavirani

pauzaot:
   low C.1
   low C.0                     
if pinB.5=1 then pauzaot    ; ošetření stisknutého tlačítka
pauzaot1:
if pinB.5=0 then pauzaot1   ; čeká na opětovný stisk tlačítka
pauzaot2:                     
if pinB.5=1 then pauzaot2
return                  ;  vrátí na místo vyvolání podprogramu a pokračuje dál

pauzaza:
   low C.1
   low C.0                   
if pinB.5=1 then pauzaza    ; ošetření stisknutého tlačítka
pauzaza1:
if pinB.5=0 then pauzaza1   ; čeká na opětovný stisk tlačítka
pauzaza2:                     
if pinB.5=1 then pauzaza2
return 
EPP samokřídla
fotky: https://mapy.cz/fotografie?fotomapy&x=15&y=49&z=8&aid=861
galOs
Příspěvky: 5
Registrován: úte 24.02.2015 23:04

Re: Picaxe-naprogramovaní tlačítka

#9 Příspěvek od galOs »

Tak tady to je

Kód: Vybrat vše

start:
   if pinB.6 = 1 then goto zacit
   if pinB.7 = 1 then goto zacit
   high C.0
   low C.1
   goto start

zacit:
   low C.1
   low C.0
   if pinB.5 = 1 then goto smer          ;podminka na zmáčknutí tlačítka
   goto zacit

smer:
   if pinB.5=1 then smer    ; ošetření stisknutého tlačítka
   if pinB.7 = 1 then goto zavirani   ;pokud je otevřeno tak at se zavře
   if pinB.6 = 1 then goto otvirani   ;opak přechozího
   goto start

otvirani:
   high C.1               ;roztočení motoru
   low C.0             
   if pinB.7 = 1 then goto zacit   ;pokud dojel na konec tak at se zastavi   
   if pinB.5 = 1 then gosub pauzaot ;podmínka zmáčknutí tlačítka v cyklu (mělo by to skočit někam kde by mělo čekat na opětovné zmáčknutí tlačítka)
   goto otvirani

zavirani:
   high C.0               ;roztočení motoru
   low C.1
   if pinB.6 = 1 then goto zacit      ;znovu akorát na opak
   if pinB.5 = 1 then gosub pauzaza
   goto zavirani

pauzaot: 
low C.1
low C.0                   
if pinB.5=1 then pauzaot    ; ošetření stisknutého tlačítka
pauzaot1:
if pinB.5=0 then pauzaot1   ; čeká na opětovný stisk tlačítka
pauzaot2:                     
if pinB.5=1 then pauzaot2
return                  ;  vrátí na místo vyvolání podprogramu a pokračuje dál

pauzaza:
low C.1
low C.0                   
if pinB.5=1 then pauzaza    ; ošetření stisknutého tlačítka
pauzaza1:
if pinB.5=0 then pauzaza1   ; čeká na opětovný stisk tlačítka
pauzaza2:                     
if pinB.5=1 then pauzaza2
return 

Přidal jsem tam jen nějaký drobnosti jako pokud by náhodou vypadla sít tak at se po tom nemusí šroubovat (tak to automaticky zajede což asi taky není dobré :D )
Takže děkuji Vám moc za pomoc a ochotu.
galOs
Příspěvky: 5
Registrován: úte 24.02.2015 23:04

Re: Picaxe-naprogramovaní tlačítka

#10 Příspěvek od galOs »

Možná jsme přišel na problém a to že pokud to chci zapnout tak mi to skočí už potom na pausu.
E: možná to je tím že jsem odmazal z podprogramu smer: podmínku na kontrolu tlačítka.
Odpovědět

Zpět na „Procesory a jiné vychytávky“