My code for TV remote and MIBAM for RGB control


Closed Thread
Results 1 to 5 of 5
  1. #1
    Join Date
    Jan 2007
    Location
    Portland Oregon
    Posts
    15

    Default My code for TV remote and MIBAM for RGB control

    Hi all, I made a RGB LED lamp with super bright RGB LEDs from sparkfun and control the color from my TV remote. I use 16F628s X2 because I couldnt get pulsein to work with MIBAM (inturupt timming issue) Here is the code if it will help anyone. Its not real clean but it works well

    Aaron

    IR CODE
    Code:
     '****************************************************************
    '*  Name    : IR_RGB_ControlV2                                      
    '*  Author  : Aaron E.Wilson                                    
    '*  Notice  : Copyright (c) 2009 
    '*          : All Rights Reserved                               
    '*  Date    : 2/21/2009                                         
    '*  Version : 1.0                                               
    '*  Notes   : Sets RGB select ports and UP/DN ports from IR remote                                                  
    '*          :                                                   
    '****************************************************************
    
    
    
    define osc 4
    CMCON     = 7          ' PortA = digital I/O
    VRCON     = 0          ' A/D Voltage reference disabled
    TRISA     = %00000010  ' Set PortA I/O
    TRISB     = %00000000  ' Set PortB I/O 
    PORTA     = 0          ' Clear PortA
    PORTB     = 0          ' Clear PortB
    
    
    IRpulse_length var word(13)
    xx var Byte
    Command	Var	Byte
    Device Var Byte        'IR Chip---------RGB Chip
    IR_IN var PORTA.1       'Pin 18         N/A
    RED_SEL var PORTB.1     'Pin 7          Pin 18
    BLUE_SEL var PORTB.2    'Pin 8          Pin 3
    GREEN_SEL var PORTB.3   'Pin 9          Pin 17
    UP var PORTB.5          'Pin 11         Pin 1
    DN var PORTB.4          'Pin 10         Pin 2
    
    pause 500
    
    Main:
        gosub ReadIr 
        if command = 1 then RED_Adj
        if command = 2 then BLUE_Adj
        if command = 3 then GREEN_Adj
    
    goto Main
    
    Red_Adj:
        blue_sel = 0
        Green_sel = 0
        red_sel = 1
        gosub ReadIr
        if command = 17 then
        dn = 0
        up = 1
        pause 100
        up = 0
        endif
        if command = 18 then
        up = 0
        dn = 1
        pause 100
        dn = 0
        endif
        if command = 2 then BLUE_Adj
        if command = 3 then GREEN_Adj
        goto red_adj
    
    BLUE_Adj:
        red_sel = 0
        green_sel = 0
        blue_sel = 1
        gosub ReadIr
        if command = 17 then
        dn = 0
        up = 1
        pause 100
        up = 0
        endif
        if command = 18 then
        up = 0
        dn = 1
        pause 100
        dn = 0
        endif
        if command = 1 then red_Adj
        if command = 3 then GREEN_Adj
        goto blue_adj
    
    GREEN_Adj:
        red_sel = 0
        Blue_sel = 0
        green_sel = 1
        gosub ReadIr
        if command = 17 then
        dn = 0
        up = 1
        pause 100
        up = 0
        endif
        if command = 18 then
        up = 0
        dn = 1
        pause 100
        dn = 0
        endif
        if command = 2 then BLUE_Adj
        if command = 1 then red_Adj
        goto green_adj  
        
    ReadIR: 
        PuLSIN IR_IN,0,IRpulse_length(0)
        if IRpulse_length(0) < 200 then
        goto ReadIR
        Endif
    
        for xx=1 to 12
        pulsin ir_in,0,IRpulse_length(xx)
        next  xx
    
        if IRpulse_length(1) < 100 then
        Command.bit0 = 0 
        Else	
        Command.bit0 = 1
        endif
        
        if IRpulse_length(2) < 100 then
        Command.bit1 = 0 
        Else	
        Command.bit1 = 1
        endif
        
        if IRpulse_length(3) < 100 then
        Command.bit2 = 0 
        Else	
        Command.bit2 = 1
        endif
        
        if IRpulse_length(4) < 100 then
        Command.bit3 = 0 
        Else	
        Command.bit3 = 1
        endif
        
        if IRpulse_length(5) < 100 then
        Command.bit4 = 0 
        Else	
        Command.bit4 = 1
        endif
        
        if IRpulse_length(6) < 100 then
        Command.bit5 = 0 
        Else	
        Command.bit5 = 1
        endif
        
        if IRpulse_length(7) < 100 then
        Command.bit6 = 0 
        Else	
        Command.bit6 = 1
        endif
        
        Command.bit7 = 0 
        Command = Command + 1
        If Command = 10 then
        Command = 0
        Endif
    
        if IRpulse_length(8) < 100 then
        Device.bit0 = 0 
        Else	
        Device.bit0 = 1
        endif
        
        if IRpulse_length(9) < 100 then
        Device.bit1 = 0 
        Else	
        Device.bit1 = 1
        endif
        
        if IRpulse_length(10) < 100 then
        Device.bit2 = 0 
        Else	
        Device.bit2 = 1
        endif
        
        if IRpulse_length(11) < 100 then
        Device.bit3 = 0 
        Else	
        Device.bit3 = 1
        endif
    return
        
    DebugInfo:
    SEROUT2 PORTA.0,16780,[13]
    pause 100
    SEROUT2 PORTA.0,16780,[10]
    pause 100
    SEROUT2 PORTA.0,16780,["Device ", dec Device, " Command ", dec command]
    pause 100
    return
    
    end



    MIBAM CODE
    Code:
     '****************************************************************
    '*  Name    : Adj_Color                                         
    '*  Author  : Aaron E.Wilson                                    
    '*  Notice  : Copyright (c) 2009
    '*          : All Rights Reserved                               
    '*  Date    : 2/22/2009                                         
    '*  Version : Final                                               
    '*  Notes   :                                                   
    '*          :                                                   
    '****************************************************************
    ;_________________________Interrupt Context save locations]_________________
    
    wsave       var byte    $20     SYSTEM      ' location for W if in bank0
    wsave1      VAR BYTE    $A0     SYSTEM      ' location for W if in bank1
    wsave2      VAR BYTE    $120    SYSTEM      ' location for W if in bank2
    ssave       VAR BYTE    BANK0   SYSTEM      ' location for STATUS register
    psave       VAR BYTE    BANK0   SYSTEM      ' location for PCLATH register
    
    ;----[ MIBAM Setup ]--------------------------------------------------------
    
    BAM_COUNT CON 3                     ; How many BAM Pins are used?
    INCLUDE "MIBAM.pbp"                 ; Mirror Image BAM module
    
    RED    VAR BYTE
    GREEN  VAR BYTE
    BLUE   VAR BYTE
    
    ASM
    BAM_LIST  macro                     ; Define PIN's to use for BAM
         BAM_PIN (PORTB,0, GREEN)       ; Pin 6
         BAM_PIN (PORTB,1, BLUE)        ; Pin 7
         BAM_PIN (PORTB,2, RED)         ; Pin 8
      endm
      BAM_INIT  BAM_LIST                ; Initialize the Pins
    ENDASM
    ;----[ Chip Setup ]--------------------------------------------------------
    define osc 4
    CMCON     = 7          ' PortA = digital I/O
    VRCON     = 0          ' A/D Voltage reference disabled
    TRISA     = %00011111  ' Set PortA I/O
    TRISB     = %11111000  ' Set PortB I/O 
    PORTA     = 0          ' Clear PortA
    PORTB     = 0          ' Clear PortB
    
    ;----[ Adjustment Setup ]-------------------------------------------------
    
    RED_VAL var byte
    GREEN_VAL var byte
    BLUE_VAL var byte
    UP_SEL var bit
    DN_SEL var bit
    
    RED_PORT var PORTA.1        'Pin 18 
    GREEN_PORT var PORTA.0      'Pin 17 
    BLUE_PORT var PORTA.4       'Pin 3 
    UP_PORT var PORTA.2         'Pin 1
    DN_PORT var PORTA.3         'Pin 2
    
    ;----[ Inital Settings ]--------------------------------------------------
    
    RED_VAL = 0
    GREEN_VAL = 0
    BLUE_VAL = 0
    
    ;----[ Program ]----------------------------------------------------------
    
    Main:
        gosub led
        gosub Adjust
        
    
    goto main
    
    
    Adjust:
        if PORTA = 0 then main
        
        Red_Up:
        if red_val > 250 then red_dn
        if red_port = 1 and up_port = 1 then
        red_val = red_val +1
        pause 100
        endif
        
        Red_Dn:
        if red_val = 0 then green_up
        if red_port = 1 and dn_port = 1 then
        red_val = red_val -1
        pause 100
        endif
        
        Green_Up:
        if green_val > 250 then green_dn
        if green_port = 1 and up_port = 1 then
        green_val = green_val +1
        pause 100
        endif
        
        Green_Dn:
        if green_val = 0 then blue_up
        if green_port = 1 and dn_port = 1 then
        green_val = green_val -1
        pause 100
        endif
    
        Blue_Up:
        if Blue_val > 250 then BLue_dn
        if Blue_port = 1 and up_port = 1 then
        Blue_val = Blue_val +1
        pause 100
        endif
        
        Blue_Dn:
        if Blue_val = 0 then main
        if BLue_port = 1 and dn_port = 1 then
        Blue_val = Blue_val -1
        pause 100
        endif
        goto main
    
    LED:
        red = red_val
        pause 20
        blue = blue_val
        pause 20
        green = green_val
        pause 20
    return
    end

  2. #2
    Join Date
    Jan 2007
    Location
    Portland Oregon
    Posts
    15


    Did you find this post helpful? Yes | No

    Default Thanks to DTs MIBAM

    Great stuff Darryl

    Aaron

  3. #3
    Join Date
    Feb 2008
    Posts
    7


    Did you find this post helpful? Yes | No

    Default

    schematic

    My code for TV remote and MIBAM for RGB control

  4. #4
    Join Date
    Jan 2007
    Location
    Portland Oregon
    Posts
    15


    Did you find this post helpful? Yes | No

    Default Thanks to others code

    I didnt mean to sugest I wrote all the code
    I just put stuff together to make something fun

  5. #5
    Join Date
    Feb 2011
    Posts
    2


    Did you find this post helpful? Yes | No

    Default Re: Thanks to others code

    shematic ?

Members who have read this thread : 1

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts