Naprogramovani tlačítka

galOs

Naprogramovani tlačítka

Příspěvek od galOs »

Dobrý den, chci ovladat dveře pomocí motorku(ss) a v koncových polohách jsou spínače na zastavení. Když zmáčknu tlačítko, tak se dveře 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					;motor
   low C.0					
   if pinB.5 = 1 then goto smer	;tlacitko
   goto start

smer:
   if pinB.7 = 1 then goto zavirani ;doraz otevřeny
   if pinB.6 = 1 then goto otvirani ;doraz zařený
   goto start

otvirani:
   high C.1					;zapnutí motoru
   low C.0					
   if pinB.7 = 1 then goto start    ;kontrola  jestli motor už neni v krajní poloze a tady bych chtěl přidat podmínku že pokud je tlačítko(pin B.5) zmáčklé (log. 1) tak at se dveře zastaví.
   goto otvirani                          ; A po dalším zmáčknutí zase rozpohybovaly.

zavirani:
   high C.0
   low C.1
   if pinB.6 = 1 then goto start	;to samé zde
   goto zavirani
micer
Příspěvky: 180
Registrován: 12 čer 2014, 19:14

Re: Naprogramovani tlačítka

Příspěvek od micer »

Nevidím žádný dotaz nebo konkrétní popis problému.
galOs

Re: Naprogramovani tlačítka

Příspěvek od galOs »

Mno potřebuji tam vložit podmínku, která zkontroluje jestli neni sepnuté tlačítko a pokud ano tak aby se motor zastavil a znovu rozjel po zmáčknutí tlačítka. Když jsem to zkoušel naprogramovat tak jsem to měl moc rychle a "přeběhl" to zpět do programu a s pausami to je takove spomalené a zasekané.
Dotaz: Jak naprogramovat zastavení motoru když zmáčknu tlačítko a po té znovu roztočit když znovu zmáčknu tlačítko
AlesH
Příspěvky: 323
Registrován: 25 úno 2013, 09:18

Re: Naprogramovani tlačítka

Příspěvek od AlesH »

Ahoj. Aby to bylo pro Tebe zábavnější a užitečnější, tak Ti zatím zkusím nabídnout jen malou nápovědu:
1. je třeba si v nějaké proměnné pamatovat poslední směr točení motoru
2. v hlavní smyčce je třeba pořád dokola kontrolovat stav tlačítka i obou koncáků a podle nich ovládat motor a "paměť" směru točení
galOs

Re: Naprogramovani tlačítka

Příspěvek od galOs »

No už to mám vyřešené, ale taky to není špatný nápad, ale pro mě jako úplného začátečnika to asi není. Ale Díky za ochotu
AlesH
Příspěvky: 323
Registrován: 25 úno 2013, 09:18

Re: Naprogramovani tlačítka

Příspěvek od AlesH »

Prosím o popis Tvého řešení. Ať se také mohu trochu poučit.
galOs

Re: Naprogramovani tlačítka

Příspěvek od galOs »

Tak to s tím stisknutým tlačítkem jsem nevymyslel já ( ale byl jsem blízko )

Kód: Vybrat vše

start:
	if pinB.6 = 0 then goto zavirani		; zde je kontrola jestli náhodou nejsou dvěře v mezi poloze
	if pinB.7 = 0 then goto zavirani		; pokud jsou tak se automaticky zavřou
	goto start

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

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 zacit

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 pauza 		; podmínka zmáčknutí tlačítka v cyklu.. pokud splněno tak jde na pauzu
   	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 pauza
   	goto zavirani

pauza:  
	low C.1						; vypnuti motoru
	low C.0                   
	if pinB.5=1 then pauza    			; ošetření stisknutého tlačítka
pauza1:
	if pinB.5=0 then pauza1   			; čeká na opětovný stisk tlačítka
pauza2:                     
	if pinB.5=1 then pauza2
	return                  			; vrátí na místo vyvolání podprogramu a pokračuje dál
	
AlesH
Příspěvky: 323
Registrován: 25 úno 2013, 09:18

Re: Naprogramovani tlačítka

Příspěvek od AlesH »

Díky za zveřejnění řešení. Využití "gosub" je dobrý způsob.
galOs

Re: Naprogramovani tlačítka

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.
AlesH
Příspěvky: 323
Registrován: 25 úno 2013, 09:18

Re: Naprogramovani tlačítka

Příspěvek od AlesH »

Je fakt, že celý ten stávající program může mít v určitých situacích problémy:
1. pokud například jsou při zapnutí dveře už v jedné z koncových poloh, tak to podle mne už na tlačítko nebude nikdy reagovat
2. při mačkání "pauzy" záleží na délce stisknutí tlačítka a také na "zákmitech" tlačítka (může to padat do pauzy nechtěně často)

Problém 1 lze odstranit vyhozením toho "goto start", které v programu zbytečně překáží.

Problém 2 lze trochu potlačit méně častým čtením tlačítka (záměrnými prodlevami mezi čtením tlačítka), ale určitě by se hodila i celková úprava algoritmu (aby byl jednoznačný).
Odpovědět