upravljanje izlazima-primjer
Moderators: pedja089, stojke369, [eDo], trax
upravljanje izlazima-primjer
Drage kolege,
posto sam novi u vodama programiranje molio bih Vas za pomoc.
Trebao bih primjer u picbasicu pro kako upravljati relejom pomocu tipki
Imam tri tipke za ulaz i tri releja na izlaz
tipke su spojene na Port.A a releji su spojeni na Port.B
dok pritisnem tipku 1 portA.1 da mi se upali relej 1 koji je na portB.1 (releji 2 i 3 ugaseni)
dok pritisnem tipku 2 portA.2 da mi se upali relej 2 koji je na portB.2 (relej 1 i 3 ugaseni)
dok pritisnem tipku 3 portA.3 da mi ugasi relej 1i 2 i da je upaljen samo relej3 na portB.3
pozdrav
posto sam novi u vodama programiranje molio bih Vas za pomoc.
Trebao bih primjer u picbasicu pro kako upravljati relejom pomocu tipki
Imam tri tipke za ulaz i tri releja na izlaz
tipke su spojene na Port.A a releji su spojeni na Port.B
dok pritisnem tipku 1 portA.1 da mi se upali relej 1 koji je na portB.1 (releji 2 i 3 ugaseni)
dok pritisnem tipku 2 portA.2 da mi se upali relej 2 koji je na portB.2 (relej 1 i 3 ugaseni)
dok pritisnem tipku 3 portA.3 da mi ugasi relej 1i 2 i da je upaljen samo relej3 na portB.3
pozdrav
Re: upravljanje izlazima-primjer
Procitaj pedjin kurs i ne samo da ces uraditi to sto ti treba nego i nauciti kako da rjesavas i puno slozenije stvari.
Re: upravljanje izlazima-primjer
pozdrav ekipi,
nakon par dana kuckanja i experimentiranja uspio sam skuziti kako se upravlja ulazima i izlazima na PIC-u i pri tome jos da dobijem ispis na LCD ekranu koji je izlaz aktivan.
Sad kada to znam muci me kako upravljati relejima pomocu daljinskog upravljaca.Trazim po netu primjere za dekodiranje RC5 koda ali bezuspjesno.ili su pisani u C-u ili su za serijsku kominikaciju s racunalom.
Kako dekodirati rc5 kod i da dok stisnm tipku jedan na daljinskom on ukljuci relej 1.
Imam i knjigu od Voje Milanovica i tamo je opisam primjer ali ne radi.
nakon par dana kuckanja i experimentiranja uspio sam skuziti kako se upravlja ulazima i izlazima na PIC-u i pri tome jos da dobijem ispis na LCD ekranu koji je izlaz aktivan.
Sad kada to znam muci me kako upravljati relejima pomocu daljinskog upravljaca.Trazim po netu primjere za dekodiranje RC5 koda ali bezuspjesno.ili su pisani u C-u ili su za serijsku kominikaciju s racunalom.
Kako dekodirati rc5 kod i da dok stisnm tipku jedan na daljinskom on ukljuci relej 1.
Imam i knjigu od Voje Milanovica i tamo je opisam primjer ali ne radi.
Re: upravljanje izlazima-primjer
Prelisataj malo po ovom forumu. Mislim da sam dao u jednom postu rutinu (ali u Cu) za prijem RC5 koda sa daljinskog. U principu rutina nije komplikovana i moze se jednostvno prebaciti u picbasic.
Re: upravljanje izlazima-primjer
Ima i u basicu na ovom forumu...
Re: upravljanje izlazima-primjer
pozdrav,
da se zahvalim ekipi s foruma na pomoci i na prikazanim primjerima.Uspio sam napisati prvi program u zivotu i da radi.Ima jednu malu manu ali me to ne dira previse.Znaci radi se o kontroli za predpojacalo-znam da na internetu ima bezbroj gotovih primjera ali evo da malo spojim ucenje s korisnim.Pomocu daljinskog ili 8 tipki na kucistu uredjaja preklapam 8 ulaznih releja,mute rele,i power relej te pokrecem motorizirani alps potenciometar pomocu H-mosta.
Evo i primjer coda:
'
Malo je amaterski napisan vjerojatno ima i jednostavnije rjesenje,dio koda za dekodiranje RC-5 koda skinut je s http://www.picbasic.co.uk/forum/forum.php
pozdrav
da se zahvalim ekipi s foruma na pomoci i na prikazanim primjerima.Uspio sam napisati prvi program u zivotu i da radi.Ima jednu malu manu ali me to ne dira previse.Znaci radi se o kontroli za predpojacalo-znam da na internetu ima bezbroj gotovih primjera ali evo da malo spojim ucenje s korisnim.Pomocu daljinskog ili 8 tipki na kucistu uredjaja preklapam 8 ulaznih releja,mute rele,i power relej te pokrecem motorizirani alps potenciometar pomocu H-mosta.
Evo i primjer coda:
'
Code: Select all
****************************************************************
'* Name : UNTITLED.BAS *
'* Author : [select VIEW...EDITOR OPTIONS] *
'* Notice : Copyright (c) 2012 [select VIEW...EDITOR OPTIONS] *
'* : All Rights Reserved *
'* Date : 20.2.2012 *
'* Version : 1.0 *
'* Notes : PROGRAM RADI *
'* : *
'****************************************************************
DEFINE BUTTON_PAUSE 50
define osc 4
DEFINE LCD_BITS 4 ' LCD broj Bita na liniji 4 ili 8
DEFINE LCD_DREG PORTB ' LCD data port
DEFINE LCD_DBIT 4 ' LCD pocetni bit podataka 0 ili 4(od kojeg pina na mikrokontroleru pocinje 0 bit podataka)
DEFINE LCD_RSREG PORTB ' LCD registar select port
DEFINE LCD_RSBIT 2 ' LCD registar select bit (na koji pin na mikrokontroleru je povezan RS bit)
DEFINE LCD_EREG PORTB ' LCD enable port
DEFINE LCD_EBIT 3 ' LCD enable bit(na koji pin na mikrokontroleru je povezan E bit)
DEFINE LCD_LINES 2
TRISA = $1F 'Postavi sve pinove porta A kao ulazne
TRISB = $00 'Postavi sve pinove porta B kao izlazne
TRISC = $ff 'Postavi sve pinove porta C kao ulazne
TRISD = $00 'Postavi sve pinove porta D kao izlazne
TRISE = $00 'Postavi sve pinove porta E kao izlazne
ADCON1 = 7 'disable A/d work digital
portB.1 =0
portb.0 =0
portb.1 =0
porte.0=0
porte.1=0
portd = %00000000
portc = %00000000
PAUSE 300 ' pocetni text
lcdout $fe,1
lcdout $fe,$80,"DALJINSKE KOMANDE"
PAUSE 1000
;Normal aliases (constants)
Glitch con 52 ;Max 255: Reduction glitches
SYMBOL LED_Time = 500 ;mSec: Error LED's burning time
Ok con 50 ;Max 255: Controltime of the RC5 code is received ok
;Port aliases
IR_Receiver var PORTA.4 ;TSOP1736
;BYTE
Command VAR BYTE
CommandOld VAR BYTE
Systeem VAR BYTE
SysteemOld VAR BYTE
BD1 VAR BYTE ;Byte Dummy
;BIT
ToggBit VAR BIT
Value VAR BIT
' ID1 VAR BIT ;bIt Dummy
CLEAR
pocetak: 'prva rutina za paljenje
if porta.4 = 0 then start
IF porta.0 = 1 then lblpower
GOTO pocetak
ukljucen: 'selector ulaza petlja
IF porta.0 = 1 then lblpower
if porta.4 = 0 then start
if portc.0 = 1 then lbl1
if portc.1 = 1 then lbl2
if portc.2 = 1 then lbl3
if portc.3 = 1 then lbl4
if portc.4 = 1 then lbl5
if portc.5 = 1 then lbl6
if portc.6 = 1 then lbl7
if portc.7 = 1 then lbl8
goto ukljucen
Start: 'citanje daljinsko upravljaca rc-5 code
BD1 = 0
WHILE IR_Receiver = 1
WEND ;Wait until a IR-signal is received
WHILE IR_Receiver = 0
if BD1 < Glitch then BD1 =bd1+1 'Glitch val 52
WEND
CommandOld = Command ;Save old values for repair in case of a error
SysteemOld = Systeem
pauseUS 500 ;200 - 825; Avoid RC5 header
GOSUB BitOphalen
Command.6 = Value ^ 1 ;Extended bit
GOSUB BitOphalen
ToggBit = Value
GOSUB BitOphalen
Systeem.4 = Value
GOSUB BitOphalen
Systeem.3 = Value
GOSUB BitOphalen
Systeem.2 = Value
GOSUB BitOphalen
Systeem.1 = Value
GOSUB BitOphalen
Systeem.0 = Value
GOSUB BitOphalen
Command.5 = Value
GOSUB BitOphalen
Command.4 = Value
GOSUB BitOphalen
Command.3 = Value
GOSUB BitOphalen
Command.2 = Value
GOSUB BitOphalen
Command.1 = Value
GOSUB BitOphalen
Command.0 = Value
pause 100
IF command = 1 and portb.1 =1 THEN LBL1
IF command = 2 and portb.1 =1 THEN LBL2
IF COMMAND = 3 and portb.1 =1 THEN LBL3
IF COMMAND = 4 and portb.1 =1 THEN LBL4
IF COMMAND = 5 and portb.1 =1 THEN LBL5
IF COMMAND = 6 and portb.1 =1 THEN LBL6
IF COMMAND = 7 and portb.1 =1 THEN LBL7
IF COMMAND = 8 and portb.1 =1 THEN LBL8
if command = 12 then lblpower
if command = 16 and portb.1 =1 then LBLvolumeup
if command = 17 and portb.1 =1 then LBLvolumedown
if command = 13 and portb.1 =1 then
toggle portb.0
endif
goto start
;Subroutines
BitOphalen:
Value = IR_Receiver ;Make value 0 or 1 dependent from received IR-code
BD1 = 0
WHILE IR_Receiver = Value AND BD1 < Ok;Level must change within time 'Ok'
BD1 =bd1+1
WEND
IF Ok = BD1 THEN ErrorReceive ;No level-change whitin the 'Ok' time
pauseUS 1100 ;950 - 1600
RETURN
ErrorReceive:
Command = CommandOld ;Repair Command and Systeem
Systeem = SysteemOld
GOTO Start
'LABELE ZA RAD
LBL1:
PAUSE 100
lcdout $fe,1
lcdout $fe,$80,"SELECTED INPUT:"
lcdout $fe,$C0+4,"TUNER"
portd = %00000001 'ukljuci relej 1
GOTO ukljucen
LBL2:
PAUSE 100
lcdout $fe,1
lcdout $fe,$80,"SELECTED INPUT:"
lcdout $fe,$C0+6, "CD"
portd = %00000010 'ukljuci relej 2
GOTO ukljucen
LBL3:
PAUSE 100
lcdout $fe,1
lcdout $fe,$80,"SELECTED INPUT:"
lcdout $fe,$C0+5, "DVD"
portd = %00000100 'ukljuci relej 3
GOTO ukljucen
LBL4:
PAUSE 100
lcdout $fe,1
lcdout $fe,$80,"SELECTED INPUT:"
lcdout $fe,$C0+5, "SAT"
portd = %00001000 'ukljuci relej 4
GOTO ukljucen
LBL5:
PAUSE 100
lcdout $fe,1
lcdout $fe,$80,"SELECTED INPUT:"
lcdout $fe,$C0+6, "TV"
portd = %00010000 'ukljuci relej 5
GOTO ukljucen
LBL6:
PAUSE 100
lcdout $fe,1
lcdout $fe,$80,"SELECTED INPUT:"
lcdout $fe,$C0+5, "AUX"
portd = %00100000 'ukljuci relej 6
GOTO ukljucen
LBL7:
PAUSE 100
lcdout $fe,1
lcdout $fe,$80,"SELECTED INPUT:"
lcdout $fe,$C0+6, "MD"
portd = %01000000 'ukljuci relej 7
GOTO ukljucen
LBL8:
PAUSE 100
lcdout $fe,1
lcdout $fe,$80,"SELECTED INPUT:"
lcdout $fe,$C0+5, "DAC"
portd = %10000000 'ukljuci relej 8
GOTO ukljucen
LBLpower:
TOGGLE PORTB.0
if portb.0 = 1 then LBLpoweron
lcdout $fe,1
lcdout $fe,$80+4,"POWER OFF"
portd = %00000000
portb.1 = 0
pAUSE 300
GOTO POCETAK
LBLpoweron:
lcdout $fe,1
lcdout $fe,$80+4,"POWER ON"
portb.0 = 1
portb.1 = 1
pause 300
goto lbl1
LBLvolumeup:
porte.0 = 1
pause 100
porte.0=0
goto ukljucen
LBLvolumedown:
porte.1 = 1
pause 100
porte.1=0
goto ukljucen
end
pozdrav
Re: upravljanje izlazima-primjer
Svaka cast, ali ledeci put ubaci kod izmedju tagova code, imas gore dugme...
Re: upravljanje izlazima-primjer
Ok,za ubuduce cu zapamtit.
imam jedno pitanjece.
u prvom redu lcd mi pise "SELECTED INPUT"
u drugom redu pise " TUNER"
pitanje je sad dok aktiviram MUTE reley dobim poruku u drugom redu ovog oblika "TUNER" "MUTE"
i dok deaktiviram MUTE relej ostane mi poruka MUTE, na koji nacin obrisati taj mute tj.polj 13,14,15,16 na LCD displeju.
pozdrav
imam jedno pitanjece.
u prvom redu lcd mi pise "SELECTED INPUT"
u drugom redu pise " TUNER"
pitanje je sad dok aktiviram MUTE reley dobim poruku u drugom redu ovog oblika "TUNER" "MUTE"
i dok deaktiviram MUTE relej ostane mi poruka MUTE, na koji nacin obrisati taj mute tj.polj 13,14,15,16 na LCD displeju.
pozdrav
Re: upravljanje izlazima-primjer
LCDOUT $FE,$CO+broj polja," "
Re: upravljanje izlazima-primjer
ovo je mali brojac koji treba da broji dok se pritisne tipka prema gore ili prema dolje.
brojanje krece od 50 i sve radi super,jedino dok idem u minus brojanje i dodjem do 10 onda mi zadnjh 9 znamenaka prikaziva umjesto 9 prikaze 90,umjesto 8 prikaze 80 itd do nule.kako rijesiti da prikaziva samo 9,8,7,6,5,4,3,2,1.Kako izbaciti tu nulu
brojanje krece od 50 i sve radi super,jedino dok idem u minus brojanje i dodjem do 10 onda mi zadnjh 9 znamenaka prikaziva umjesto 9 prikaze 90,umjesto 8 prikaze 80 itd do nule.kako rijesiti da prikaziva samo 9,8,7,6,5,4,3,2,1.Kako izbaciti tu nulu
Code: Select all
'****************************************************************
'* Name : UNTITLED.BAS *
'* Author : [select VIEW...EDITOR OPTIONS] *
'* Notice : Copyright (c) 2012 [select VIEW...EDITOR OPTIONS] *
'* : All Rights Reserved *
'* Date : 25.2.2012 *
'* Version : 1.0 *
'* Notes : *
'* : *
'****************************************************************
define osc 4
DEFINE LCD_BITS 4 ' LCD broj Bita na liniji 4 ili 8
DEFINE LCD_DREG PORTB ' LCD data port
DEFINE LCD_DBIT 4 ' LCD pocetni bit podataka 0 ili 4(od kojeg pina na mikrokontroleru pocinje 0 bit podataka)
DEFINE LCD_RSREG PORTB ' LCD registar select port
DEFINE LCD_RSBIT 2 ' LCD registar select bit (na koji pin na mikrokontroleru je povezan RS bit)
DEFINE LCD_EREG PORTB ' LCD enable port
DEFINE LCD_EBIT 3 ' LCD enable bit(na koji pin na mikrokontroleru je povezan E bit)
DEFINE LCD_LINES 2
TRISA = $1F 'Postavi sve pinove porta A kao ulazne
TRISB = $00 'Postavi sve pinove porta B kao izlazne
TRISC = $ff 'Postavi sve pinove porta C kao ulazne
TRISD = $00 'Postavi sve pinove porta D kao izlazne
TRISE = $00 'Postavi sve pinove porta E kao izlazne
ADCON1 = 7 'disable A/d work digital
pause 500
r var byte
r=50
pocetak:
IF PORTa.0=1 THEN
R=R+1
IF R=100 THEN R=99
ENDIF
IF PORTa.1=1 THEN
R=R-1
IF R=0 THEN R=1
endif
LCDOut $fe,2,"brojim: ",dec r
pause 200
goto pocetak
Re: upravljanje izlazima-primjer
rijeseno,nisam stavio naredbu za brisanje displaja pa je ostajala 0
LCDOUT $FE,1
LCDOUT $FE,1
Re: upravljanje izlazima-primjer
lcdout $fe,dec1/2/3/itd, ili dec r," "