f
Warning: Cannot modify header information - headers already sent by (output started at /home/anderian/ftp/www_forum/db/mysql4.php:1) in /home/anderian/ftp/www_forum/includes/sessions.php on line 548

Warning: Cannot modify header information - headers already sent by (output started at /home/anderian/ftp/www_forum/db/mysql4.php:1) in /home/anderian/ftp/www_forum/includes/sessions.php on line 549

Warning: Cannot modify header information - headers already sent by (output started at /home/anderian/ftp/www_forum/db/mysql4.php:1) in /home/anderian/ftp/www_forum/includes/page_header.php on line 343
And-Tech :: Zobacz temat - Sterownik diód RGB sterowany z pilota SONY

Strona korzysta z plików cookie w celu realizacji usług zgodnie z Politykš prywatnoœci.

Możesz okreœlić warunki przechowywania lub dostępu do cookie w Twojej przeglšdarce lub konfiguracji usługi.

And-Tech Strona Główna And-Tech
Forum firmy And-Tech

FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy  GrupyGrupy
RejestracjaRejestracja  ZalogujZaloguj  AlbumAlbum  DownloadDownload

Poprzedni temat «» Następny temat
Sterownik diód RGB sterowany z pilota SONY
Autor Wiadomość
And-Tech
Site Admin

Dołączył: 22 Lut 2007
Posty: 285
  Wysłany: Nie Sie 30, 2009 2:46 pm   Sterownik diód RGB sterowany z pilota SONY

Sterownik służy do wysterowania taśmy RGB, wykorzystano trzy wyjścia układu ULN2003 oraz odbiornik podczerwieni.

Sterowanie odbywa się z pilota SONY, ale łatwo przerobić kod na zwykły RC5.

Poniżej cały kod w BASCOMie

Częstotliwość procesora to 8Mhz (wbudowany oscylator)

Kod:


$regfile = "m16def.dat"
$crystal = 8000000

Config Lcdpin = Pin , Rs = Portc.2 , E = Portc.3 , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7
Config Lcd = 16 * 2

Config Portc.1 = Output
Set Portc.1

Config Timer1 = Timer , Prescale = 256 , Capture Edge = Rising , Compare A No_output = Disconnect
Config Serialout = Buffered , Size = 150

On Capture1 Capture1_int
On Compare1a Compare1a_int

' do generowania ppwm na "piechote"
Config Timer0 = Timer , Prescale = 1
On Timer0 Zaswiec
Enable Timer0
Enable Interrupts
Start Timer0

Config Porta = Output                                       ' port do ktorego sa podpiete np. ledy

Dim Ready As Byte
Dim Address As Word
Dim Code As Word
Dim Startbitperiod As Byte
Dim Normalbitperiod As Byte

Dim Ppwm As Byte                                            ' wartosc z ktora porownywane jest wypelnienie kazdego kanalu
Dim Ledr As Byte
Dim Ledg As Byte
Dim Ledb As Byte

' If you change the XTAL frequency then you will need to alter these 3 values
Startbitperiod = 200
Normalbitperiod = 45

' Set the Compare threshold to detect end of packet after 4 bit times of no activity
Compare1a = Normalbitperiod * 4

Enable Interrupts
Enable Capture1
Enable Compare1a

Cls
Lcd "Sony IR Receiver"

Do
  If Ready <> 0 Then
    Ready = 0

    Upperline
    Lcd "Add:" ; Address ; " Code:" ; Code ; "  "


    If Address = 11 And Code = 86 Then
       Incr Ledg
    End If

    If Address = 11 And Code = 87 Then
       Decr Ledg
    End If


    If Address = 11 And Code = 28 Then
       Incr Ledr
    End If

    If Address = 11 And Code = 27 Then
       Decr Ledr
    End If

    If Address = 11 And Code = 26 Then
       Incr Ledb
    End If

    If Address = 11 And Code = 90 Then
       Decr Ledb
    End If

    If Address = 11 And Code = 24 Then
       Ledr = 0
       Ledg = 0
       Ledb = 0
    End If


    If Address = 11 And Code = 0 Then                       '1
       Ledr = 0
    End If

    If Address = 11 And Code = 1 Then                       '2
       Ledr = 100
    End If

    If Address = 11 And Code = 2 Then                       '3
       Ledr = 255
    End If

    If Address = 11 And Code = 3 Then                       '4
       Ledg = 0
    End If

    If Address = 11 And Code = 4 Then                       '5
       Ledg = 100
    End If

    If Address = 11 And Code = 5 Then                       '6
       Ledg = 255
    End If

    If Address = 11 And Code = 6 Then                       '7
       Ledb = 0
    End If

    If Address = 11 And Code = 7 Then                       '8
       Ledb = 100
    End If

    If Address = 11 And Code = 8 Then                       '9
       Ledb = 255
    End If

    If Address = 11 And Code = 9 Then                       '0
       Ledr = 0
       Ledg = 0
       Ledb = 0
    End If

    Lowerline
    Lcd "G:" ; Ledg ; " R:" ; Ledr ; " B:" ; Ledb

  End If
Loop

End


Dim Period As Word
Dim Command As Long
Dim Bitcount As Byte
Dim Shiftcount As Byte

Compare1a_int:
' Uncomment the line below to see the bit patterns to debug new
' command sizes not allowed for in the code
'
' Print "B " ; Bitcount ; " C " ; Bin(command)

  Ready = 1

  If Bitcount = 12 Or Bitcount = 15 Or Bitcount = 20 Then
    Shiftcount = 31 - Bitcount
    Shift Command , Right , Shiftcount
  Else
    Ready = 0

  End If

  Code = Command And &H0000007F

  Shift Command , Right , 7

  Address = Command

  Bitcount = 0

  Return

Capture1_int:
  Timer1 = 0

  Period = Capture1

  If Period >= Startbitperiod Then
    Command = 0
    Bitcount = 0

  Else
    If Period > Normalbitperiod Then
      Command = Command Or &H80000000
    End If

    Shift Command , Right

    Incr Bitcount
  End If

' Uncomment this line to print out the bit times see how to tweak the
' Period thresholds if you change the XTAL frequency
'
' Print "P " ; Period ; " B " ; Bitcount

  Return

  Zaswiec:                                                  ' podprogram wywolywany po przepelnieniu timera
Stop Timer0
Incr Ppwm
' If ppwm = 101 Then ppwm = 0

If Ppwm < Ledg Then
Porta.0 = 1
Else
Porta.0 = 0
End If

If Ppwm < Ledr Then
Porta.1 = 1
Else
Porta.1 = 0
End If

If Ppwm < Ledb Then
Porta.2 = 1
Else
Porta.2 = 0
End If

Start Timer0
Return


2.jpg
Plik ściągnięto 864 raz(y) 97,67 KB

1.jpg
Plik ściągnięto 851 raz(y) 77,9 KB

 
     
leon1313
Homo Erektus

Dołączył: 04 Sty 2010
Posty: 41
Wysłany: Pon Sty 18, 2010 4:45 pm   

Witam;
Czy mógłbym prosić Pana o komentarze w sekcji obsługi przerwania obsługującego odbiór kodu z pilota ?
 
     
lukasz1007 

Dołączył: 16 Cze 2010
Posty: 14
Wysłany: Sro Cze 23, 2010 12:01 pm   

Mam takie pytanie czy jak mam m644 to ten sam kod będzie działał oraz do którego portu podłączyć czujnik podczerwieni oraz czy mogę z dowolnego pilota sterować diodami??
Z góry dziękuje za odpowiedź.
 
     
piotr94 
Site Admin

Dołączył: 02 Lut 2010
Posty: 606
Skąd: Kraków
Wysłany: Wto Sie 31, 2010 9:13 am   

tak, będzie działał o ile zmienisz odpowiednie deklaracje procesora i sprawdzisz piny (wyjścia pwm'ów)
ten kod pozwala na sterowanie w standardzie SONY, można go przerobić na RC5 (niektóre telewizory, pilot rc5 można kupić za jakieś 15 zł)
_________________
http://www.piotr94.net21.pl/
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group