Ir remote controlled led dot 15x7

Rasprava o PIC mikrokontrolerima, PIC projekti i drugo vezano za PIC-eve...

Moderators: pedja089, stojke369, [eDo], trax

Post Reply
User avatar
grunf
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 286
Joined: 19-04-2008, 14:22
Location: Cvjećara

Ir remote controlled led dot 15x7

Post by grunf »

Mozda bi ovo trebalo biti u onoj sekciji gotovi projektii bez dokumentacije ali nadam se da ce ovo nekome koristiti, shema je s brda s dola, ali milim da je potrebno samo malo googlanja da se prikupe potrebni podaci!
Sklop radi na sledeci nacin, odaberu se tipke na daljinksom upravljacu sa sledecim redoslijedom:
1. listaj slova gore
2. listaj slova dole
3. pusti poruku
4. potvrdi izabrano slovo

potom se ide na izbor poruke moguce je napisati poruku s 11 slova, nadam se da ce neko naci malo vremena i optimizirati kod jer u eepromu ima dovoljno mjesta za jos, ali kako je ovo zadovoljavalo moje potrebe nisam se previse zahmetio s ovim! ukoliko je poruka kraca od 11 slova potrebno je do 11 slova upisati prazno mjesto inace ce vam prostor za slovo na matrici biti popunjen jedinicama odnosno sve ledice ce biti ukljucene.
pritiskom tastera na daljinskom upravljacu "pusti poruku" poruka se skrola. Pritiskom tastera spojenog na RD1 ulazi se u poprogram za odabir poruke, ako zelite napisati nesto drugo ili trece! RD0 sluzi sa signalizaciju gdje smo u programu...
evo linka kako to fercera...
http://www.youtube.com/watch?v=TVS4ZxKpRVA
evo code-ta

Code: Select all

		 '****************************************************************

' SIMPLE 15X8 LED MATRIX SCROLLING EXAMPLE
' 16F877A External 8MHz Xtal Osc
' LED Matrix columns are conected to PORTC pin rc0 via ULN2004AN and CD4017.
' RC1 reset for 4017
' LED Matrix rows conected to PORTB via 100 ohm resistors 
' RB0 - top row
' Author: 
' 
' today
'***************************************************************************************
Device 16F877A
Xtal 12
TRISB = %00000000
TRISC = %10000000
TRISD = %00000000
PORTB=0
PORTC=0
PORTD=0
All_Digital = True
  
	EWrite 0,[%00000100,%00000110,%01111111,%00000110,%00000100]	'Up Arrow
	EWrite 5,[%00010000,%00110000,%01111111,%00110000,%00010000]	'Dn Arrow
	EWrite 10,[%01111110,%00010001,%00010001,%00010001,%01111110]	'A
	EWrite 15,[%01111111,%01001001,%01001001,%01001001,%00110110]	'B
	EWrite 20,[%00111110,%01000001,%01000001,%01000001,%00100010]	'C
	EWrite 25,[%01111111,%01000001,%01000001,%00100010,%00011100]	'D
	EWrite 30,[%01111111,%01001001,%01001001,%01001001,%01000001]	'E
	EWrite 35,[%01111111,%00001001,%00001001,%00001001,%00000001]	'F
	EWrite 40,[%00111110,%01000001,%01001001,%01001001,%01111010]	'G
	EWrite 45,[%01111111,%00001000,%00001000,%00001000,%01111111]	'H
	EWrite 50,[%00000000,%01000001,%01111111,%01000001,%00000000]	'I
	EWrite 55,[%00100000,%01000000,%01000001,%00111111,%00000001]	'J
	EWrite 60,[%01111111,%00001000,%00010100,%00100010,%01000001]	'K
	EWrite 65,[%01111111,%01000000,%01000000,%01000000,%01000000]	'L
	EWrite 70,[%01111111,%00000010,%00000110,%00000010,%01111111]	'M
	EWrite 75,[%01111111,%00000100,%00001000,%00010000,%01111111]	'N
	EWrite 80,[%00111110,%01000001,%01000001,%01000001,%00111110]	'O
	EWrite 85,[%01111111,%00001001,%00001001,%00001001,%00000110]	'P
	EWrite 90,[%01111111,%00001001,%00011001,%00101001,%01000110]	'R
	EWrite 95,[%01000110,%01001001,%01001001,%01001001,%00110001]	'S
	EWrite 100,[%00000001,%00000001,%01111111,%00000001,%00000001]	'T
	EWrite 105,[%00111111,%01000000,%01000000,%01000000,%00111111]	'U
	EWrite 110,[%00011111,%00100000,%01000000,%00100000,%00011111]	'V
	EWrite 115,[$00,$00,$00,$00,$00]	'blank space
	EWrite 185,[$00,$00,$00,$00,$00]
	EWrite 190,[$00,$00,$00,$00,$00]
	EWrite 195,[$00,$00,$00,$00,$00]
	EWrite 200,[$00,$00,$00,$00,$00]
	EWrite 205,[$00,$00,$00,$00,$00]
	EWrite 210,[$00,$00,$00,$00,$00]
	EWrite 215,[$00,$00,$00,$00,$00]
	EWrite 220,[$00,$00,$00,$00,$00]
	EWrite 225,[$00,$00,$00,$00,$00]
	EWrite 230,[$00,$00,$00,$00,$00]
	EWrite 235,[$00,$00,$00,$00,$00]
	EWrite 240,[$00,$00,$00,$00,$00]
	EWrite 245,[$00,$00,$00,$00,$00]
	


    '________________________________________________________________
    'Deklaracija promjenjivih
    '________________________________________________________________
   	Dim kolona As Byte
	Dim brojac As Byte
	Dim k As Byte
	Dim scan  As Byte
	Dim scroll As Byte
	leddata var Byte[100]
    Dim ir_ulaz As Word ' WORD variabla za zaprimanje podataka
    Dim EEpromAdress As Byte 'eprom adresa za upis 
    Dim test As Word 'uporedjivach 
    Dim upisi As ir_ulaz.LowByte
    Dim i As Byte
    Dim sledeceslovo As Word
    Dim prethodnoslovo As Word
    Dim potvrdi As Word
    Dim play As Word
    Dim x As Byte
    Dim j As Byte
    Dim cnt As Byte
    Dim a As Byte
    Dim b As Byte
    Dim c As Byte
    Dim d As Byte

    '________________________________________________________________
    'poetene vrijednosti
    '________________________________________________________________

    EEpromAdress = 255
    cnt=0
    k=114

    '________________________________________________________________
    'Inicijalizacija
    '________________________________________________________________
    High PORTD.0
    DelayMS 1300
    Low PORTD.0
    DelayMS 1300
    '________________________________________________________________
    'pregledaj eeprom ako ima sta idi na main ako ne idi na pripremu
    '________________________________________________________________
      '*******************************************************************
    Declare RC5In_Pin PORTC.7                    'infrared sensor pin
    '********************************************************************

provjera:
   
        test.LowByte = ERead 255 'iscitaj zapis iz eeproma sa adrese 255
                If test.LowByte = $FF Then 'ako je FF 
                    GoSub eepromprogON 'idi u programiraj komande
                    DelayMS 500
                EndIf    
        test.LowByte = ERead 120 ' iscitaj zapis iz eeproma sa adrese 120 (pocetak poruke)
                If test.LowByte = $FF Then ' ako je 00 
                    GoSub odaberporuku     ' idi na odaberi poruku
                    DelayMS 500
                EndIf 
               
main:
    
Clear ' ocisti sve varijable
Low PORTD.0  ' usli smo u mod za prikaz poruke
a=14
k=120
j=0
leddata[0-13] = $00             ' varijabla ledadta od 0 do 13 je 00
For b = 0 To 11                 ' moguci broj slova u poruci
    For i = 0 To 4      
        c=i+a                   'povecaj a=14-19; a=20-24; a=26-30 itd...
        d=i+j+k                   'povecaj j=120-124; a=126-130; a=131-135 itd...
            leddata [c]= ERead d	'filuj ledadtu od 14 do max broja slova za prikaz iz eeproma pocevsi od 120 pa nadalje
            DelayUS 20  
    Next
    leddata [a+5]=ERead 119   'upisi prazanu kolonu izmedju slova	
      a=a+6   
      j=j+6   
 Next
       For scroll = 0 To c      ' skrolaj poruku c zadnji leddata
          
         For scan = 0 To 35
                  PORTC.1 = 1   'reseting 4017
                  PORTC.1 =0 
			For kolona = 0 To 14  'broj kolona
				PORTC.0 = 1       'clock 4017
                PORTC.0 =0
                PORTB = leddata[kolona]
				DelayUS 250
                PORTB=0    	
		    Next

         Next
         For brojac = 0 To (c-1)
        leddata[brojac]=leddata[brojac+1]' pomjeri za jedan
        Next

        Next
                If PORTD.1=1 Then 
                GoSub odaberporuku 
    	 	End If
GoTo main
End

eepromprogON: 'podprogram za odabir komadi za upravljanje             
    High PORTD.0  
    
            Repeat
                ir_ulaz.LowByte= RC5In '  Primanje signala sa TSOP1738
            Until upisi<> 255' Trazi-cekaj dok ne naleti valjano zaglavlje signala
                   
      EWrite EEpromAdress , [ ir_ulaz.LowByte ]
      sledeceslovo.LowByte = ERead EEpromAdress ' pridruzi varijabli sledece slovo komandu i upisi u eprom na zadnju lokaciju
      For i = 0 To 4 
	 leddata [i]=ERead i	'  prikazi strelicu
	Next
         For scan = 0 To 185
         PORTC.1 = 1  'reseting 4017
         PORTC.1 =0	
			For kolona = 0 To 4
				PORTC.0 = 1 'clock 4017
                PORTC.0 =0
                PORTB = leddata[kolona]
				DelayUS 500
                PORTB=0     	
		    Next
         Next
Low PORTD.0
DelayMS 100
High PORTD.0
DelayMS 100
Low PORTD.0
DelayMS 100
High PORTD.0
            Repeat
                ir_ulaz.LowByte= RC5In '  Primanje signala sa TSOP1738
            Until upisi<> 255' Trazi-cekaj dok ne naleti valjano zaglavlje signala
            EEpromAdress=EEpromAdress - 1      
      EWrite EEpromAdress , [ ir_ulaz.LowByte ]
      prethodnoslovo.LowByte = ERead EEpromAdress ' pridruzi varijabli sledece slovo komandu i upisi u eprom na zadnju lokaciju
      For i = 0 To 4 
	 leddata [i]=ERead i+5	'  prikazi strelicu
	Next
         For scan = 0 To 185
         PORTC.1 = 1  'reseting 4017
         PORTC.1 =0	
			For kolona = 0 To 4
				PORTC.0 = 1 'clock 4017
                PORTC.0 =0
                PORTB = leddata[kolona]
				DelayUS 500
                PORTB=0     	
		    Next
         Next
Low PORTD.0
DelayMS 100
High PORTD.0
DelayMS 100
Low PORTD.0
DelayMS 100
High PORTD.0
            Repeat
                ir_ulaz.LowByte= RC5In '  Primanje signala sa TSOP1738
            Until upisi<> 255' Trazi-cekaj dok ne naleti valjano zaglavlje signala
                   EEpromAdress=EEpromAdress - 1
                   EWrite EEpromAdress , [ ir_ulaz.LowByte ]
      play.LowByte = ERead EEpromAdress  ' pridruzi varijabli play komandu i upisi u eprom na predzadnju lokaciju
      leddata[0]=$FE  'play simbol
	leddata[1]=$7C
	leddata[2]=$38
	leddata[3]=$10
	leddata[4]=$00
 
     For scan = 0 To 185
         PORTC.1 = 1  'reseting 4017
         PORTC.1 =0	
			For kolona = 0 To 4
				PORTC.0 = 1 'clock 4017
                PORTC.0 =0
                PORTB = leddata[kolona]
				DelayUS 500
                PORTB=0     	
		    Next
         Next     
Low PORTD.0
DelayMS 100
High PORTD.0
DelayMS 100
Low PORTD.0
DelayMS 100
High PORTD.0

 Repeat
                ir_ulaz.LowByte= RC5In '  Primanje signala sa TSOP1738
            Until upisi<> 255' Trazi-cekaj dok ne naleti valjano zaglavlje signala
                   EEpromAdress=EEpromAdress -1
                   EWrite EEpromAdress , [ ir_ulaz.LowByte ] ' pridruzi varijabli potvrfi komandu i upisi u eprom na predpredzadnju  :D lokaciju
      potvrdi.LowByte = ERead EEpromAdress
        
      leddata[0]=$00  
	leddata[1]=$00
	leddata[2]=$08
	leddata[3]=$10
	leddata[4]=$20
	leddata[5]=$10
	leddata[6]=$08
	leddata[7]=$04
	leddata[8]=$02
	leddata[9]=$01 
     For scan = 0 To 185
         PORTC.1 = 1  'reseting 4017
         PORTC.1 =0	
			For kolona = 0 To 9
				PORTC.0 = 1 'clock 4017
                PORTC.0 =0
                PORTB = leddata[kolona]
				DelayUS 500
                PORTB=0     	
		    Next
         Next     
      For x=0 To 5
        Toggle PORTD.0
        DelayMS 100
      x=x+1
      Next 
      x=0
      EEpromAdress=0
Return 'vrati se u if petlju na pocetku



odaberporuku:	' podrpogram za odabir poruke za prikaz
High PORTD.0
sledeceslovo.LowByte = ERead 255
prethodnoslovo.LowByte = ERead 254
play.LowByte = ERead 253
potvrdi.LowByte = ERead 252
cnt=0
k=114
Low PORTD.1
Repeat
       ir_ulaz.LowByte= RC5In '  Primanje signala sa TSOP1738
    Until upisi<> 255' Trazi-cekaj dok ne naleti valjano zaglavlje signala 
While ir_ulaz.LowByte<>play.LowByte
    Repeat
       ir_ulaz.LowByte= RC5In '  Primanje signala sa TSOP1738
    Until upisi<> 255' Trazi-cekaj dok ne naleti valjano zaglavlje signala 
If ir_ulaz.LowByte=prethodnoslovo.LowByte Then
          If cnt = 0 Then
            cnt=5
         EndIf
   cnt=cnt-5
    For i = 0 To 4 
	 leddata [i]=ERead i+cnt	'  
	Next
         For scan = 0 To 185
         PORTC.1 = 1  'reseting 4017
         PORTC.1 =0	
			For kolona = 0 To 4
				PORTC.0 = 1 'clock 4017
                PORTC.0 =0
                PORTB = leddata[kolona]
				DelayUS 500
                PORTB=0     	
		    Next
         Next
        
ElseIf ir_ulaz.LowByte=sledeceslovo.LowByte Then

   cnt=cnt+5

    For i = 0 To 4 
	 leddata [i]=ERead i+cnt	'  
	Next
         For scan = 0 To 185
         PORTC.1 = 1  'reseting 4017
         PORTC.1 =0	
			For kolona = 0 To 4
				PORTC.0 = 1 'clock 4017
                PORTC.0 =0
                PORTB = leddata[kolona]
				DelayUS 500
                PORTB=0     	
		    Next
         Next
                   If cnt = 119 Then
            cnt=0
         EndIf
ElseIf ir_ulaz.LowByte=potvrdi.LowByte Then 'upisi odabran0o slovo u narednu slobodnu eeprom lokaciju
 k=k+6'krecemo od 120
 For i = 0 To 4 
	 leddata [i]=ERead i+cnt
     DelayUS 10	'  
	Next
 
 For i = 0 To 4 
 
	 EWrite (i+k),[leddata [i]]	' 
     DelayMS 20 
 Next

For scroll =0 To 1
 For i = 0 To 4 
	 leddata [i]=ERead i+cnt	'prikazi odabrano slovo  
	Next
	leddata[5]=$00
	leddata[6]=$00
	leddata[7]=$08
	leddata[8]=$10
	leddata[9]=$20
	leddata[10]=$10
	leddata[11]=$08
	leddata[12]=$04
	leddata[13]=$02
	leddata[14]=$01
         For scan = 0 To 185
         PORTC.1 = 1  'reseting 4017
         PORTC.1 =0	
			For kolona = 0 To 14
				PORTC.0 = 1 'clock 4017
                PORTC.0 =0
                PORTB = leddata[kolona]
				DelayUS 500
                PORTB=0     	
		    Next
         Next
Next
EndIf
 
Wend
Low PORTD.0
Return ' vrati se odakle si i dosao
i sheme s brda s dola...
http://img39.imageshack.us/i/sbrdasdola.jpg/
bilo bi mi drago da ovo nekome koristi...
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7877
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Ir remote controlled led dot 15x7

Post by pedja089 »

Nije mi nikako jasno kako to radi...
Koliko mi se cini ovo je copy/paste kod sa http://www.picbasic.co.uk" onclick="window.open(this.href);return false;, i nikako mi nije jasno da li je to pbp ili nesto drugo :?:
yt1nvs
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 286
Joined: 30-03-2009, 16:54

Re: Ir remote controlled led dot 15x7

Post by yt1nvs »

Mislim da je MikroBasic a u pbp nema pojma od kompajliranja.
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7877
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Ir remote controlled led dot 15x7

Post by pedja089 »

Ja bi rekao da je to proton basic, jer on ima RC5 podrzan. A koliko znam mikro basic ga nema.
User avatar
grunf
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 286
Joined: 19-04-2008, 14:22
Location: Cvjećara

Re: Ir remote controlled led dot 15x7

Post by grunf »

@ pedja, da copy paste je s http://www.picbasic.co.uk" onclick="window.open(this.href);return false; jer sam ga i tamo objavio! I u pravu si ovo je proton basic sve je uradjeno u protonIde kompajleru, bas zbog te RC5IN komande, koja uvelike olaksava rjesenje problema, ma mislim da je jednostavnije bilo da sam postavio 2-3 tastera, ma zao mi sto se nikom nesvidja:)
User avatar
WhiteHead
Pravi forumaš
Pravi forumaš
Posts: 1627
Joined: 28-06-2007, 18:36
Location: 75,35k; B&H

Re: Ir remote controlled led dot 15x7

Post by WhiteHead »

Ma da, uzeli samo raspravljat o kompajleru, a pohvalama ni traga.. :azdaja:
Bravo profesore, lijepo odrađeno, jako zanimljiva i korisna stvarčica.
Ako kaniš pobijediti, ne smiješ izgubiti
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7877
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Ir remote controlled led dot 15x7

Post by pedja089 »

Pitam samo jer mi nije bilo jasno sta je. Jer video sam kod na pbp forumu, a sve gledam nije pbp...
Nije lose odradjeno...
User avatar
grunf
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 286
Joined: 19-04-2008, 14:22
Location: Cvjećara

Re: Ir remote controlled led dot 15x7

Post by grunf »

@ WhiteHead idea je potekla od prof Mandje, ako si isao u skolu kod nas znas ko je....naravno sada ide veliki displey 20x7 i jedan ogromni 5x7 kao ucilo :D
User avatar
WhiteHead
Pravi forumaš
Pravi forumaš
Posts: 1627
Joined: 28-06-2007, 18:36
Location: 75,35k; B&H

Re: Ir remote controlled led dot 15x7

Post by WhiteHead »

Davno nekad išao u vašu školu..vidi se po nick-u :(
Btw današnji vaš direktor mi predavao kao pripravnik u 3. razredu.
Samo naprijed s displejima.
Ako kaniš pobijediti, ne smiješ izgubiti
Post Reply