Pozdrav drugari.Pravim mini-lift, sa tri nivoa,tj tri sprata. imam 6 ulaza -komandi od kojih su 3 tastera za pozivanje (gde da lift ide,na koji sprat) a tri su tj krajnji prekidaci tj senzori gde lift treba da stane kada mu se zada komanda tasterima. Dva su izlaza koja pale jednu ili drugu sklopku tj smer motora-gore,dolE.Senzori su klasicni prekidaci-mehanicki aktivirani kad lift dodje do njih.Ovako sam zamislio pocetak koda,pa vas molim da mi pomognete i uputite dalje sta i kako.Evo i uproscene seme kako bi to izgledalo
OUTPUT PORTB.7
OUTPUT PORTB.6
INPUT PORTB.5
INPUT PORTB.4
INPUT PORTB.3
INPUT PORTB.2
INPUT PORTB.1
INPUT PORTB.0
SYMBOL MOTORG= PORTB.7 ;pali relej -motor na gore
SYMBOL MOTORD= PORTB.6 ;pali relej-motor na dole
SYMBOL TASTER0=PORTB.0 ;taster za komandu da lift ide na 0 sprat
SYMBOL TASTER1=PORTB.1 ;taster za komandu da lift ide na 1 sprat
SYMBOL TASTER2=PORTB.2 ;taster za komandu da lift ide na 2 sprat
SYMBOL SENZOR0=PORTB.3 ;senzor da se zaustavi lift kad dodje na 0 sprat
SYMBOL SENZOR1=PORTB.4 ;senzor da se zaustavi lift kad dodje na 1 sprat
SYMBOL SENZOR2=PORTB.5 ;senzor da se zaustavi lift kad dodje na 2 sprat
Pa dobro si sa kodom počeo ali kod sheme bi se dalo par stvari prepraviti, recimo ja bi otpornike kod tipkala stavio na gnd, a tipkala na +5V tako će ti biti jednostavnije programirati jel kad pogledaš sada kod npr. naredbe if kada je tipkalo stisnuto morao bi napisati ovako:
otpornici prema gnd trebaju zato što kod pic-a nekad brljavi stanje tipkala nekada u trenutak se dogodi ispadne kao da je stisnuto (to je zbog visokih frekvencija u pic-u) i kada se dogodi da na primjer u krugu imaš lcd ta se pojava često vidi, ne diraš taster, a on na ekranu mijenja stanja kao da si ga na trenutak stisao i to bi te moglo zajebavati...
btw. nemoj zaboraviti one zavojnice motora spojiti na napon...
Ma da, ok za to 0 ili 1... nije mi to problem, kao i fizicki izvesti semu...Kod je problem.Napisao sam nesto,mada kontam da nije to dobro,previse sam ga iskomplikovao...evo da vidite
output PORTB.7
OUTPUT PORTB.6
INPUT PORTB.5
INPUT PORTB.4
INPUT PORTB.3
INPUT PORTB.2
INPUT PORTB.1
INPUT PORTB.0
SYMBOL MOTORG= PORTB.7 ;pali relej -motor na gore
SYMBOL MOTORD= PORTB.6 ;pali relej-motor na dole
SYMBOL TASTER0=PORTB.0 ;taster za komandu da lift ide na 0 sprat
SYMBOL TASTER1=PORTB.1 ;taster za komandu da lift ide na 1 sprat
SYMBOL TASTER2=PORTB.2 ;taster za komandu da lift ide na 2 sprat
SYMBOL SENZOR0=PORTB.3 ;senzor da se zaustavi lift kad dodje na 0 sprat
SYMBOL SENZOR1=PORTB.4 ;senzor da se zaustavi lift kad dodje na 1 sprat
SYMBOL SENZOR2=PORTB.5 ;senzor da se zaustavi lift kad dodje na 2 spraT
POCETAK0:
LOW MOTORG ;ugasen relej za gore
LOW MOTORD ;ugasen relej za dole
IF TASTER0=0 AND SENZOR0=0 THEN
GOTO POCETAK1
ENDIF
POCETAK1:
LOW MOTORG ;ugasen relej za gore
LOW MOTORD ;ugasen relej za gore
IF TASTER1=0 AND SENZOR1=0 THEN
GOTO POCETAK2
ENDIF
POCETAK2:
LOW MOTORG ;ugasen relej za gore
LOW MOTORD ;ugasen relej za gore
IF TASTER2=0 AND SENZOR2=0 THEN
GOTO START1
ENDIF
START0:
IF TASTER0=0 AND (SENZOR1=0 OR SENZOR2=0) THEN
HIGH MOTORD
ELSE
GOTO START1
ENDIF
IF SENZOR0=0 THEN
LOW MOTORD
ENDIF
GOTO START1
START1:
IF TASTER1=0 AND (SENZOR0=0 OR SENZOR2=1) THEN
HIGH MOTORG
ELSE
GOTO START2
ENDIF
IF SENZOR1=0 THEN
LOW MOTORG
ENDIF
GOTO START2
START2:
IF TASTER1=0 AND (SENZOR0=1 OR SENZOR2=0) THEN
HIGH MOTORD
ELSE
GOTO START3
ENDIF
IF SENZOR1=0 THEN
LOW MOTORD
ENDIF
GOTO START3
START3:
IF TASTER2=0 AND (SENZOR0=0 OR SENZOR1=0) THEN
HIGH MOTORG
ELSE
GOTO POCETAK0
ENDIF
IF SENZOR2=0 THEN
LOW MOTORG
ENDIF
GOTO POCETAK0