semaphore pic12f629


Closed Thread
Results 1 to 27 of 27
  1. #1

    Default Traffic light pic12f629

    Hello,
    Someone can guide me to do a semaphore using a pic12f629 with which one can vary the speed of lighting of the LEDs.

    Thanks for any suggestions
    Attached Images Attached Images  
    Last edited by Leonardo; - 3rd November 2008 at 02:34.

  2. #2
    Join Date
    Sep 2004
    Location
    montreal, canada
    Posts
    6,898


    Did you find this post helpful? Yes | No

    Default

    By Semaphore you mean?
    Steve

    It's not a bug, it's a random feature.
    There's no problem, only learning opportunities.

  3. #3


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by mister_e View Post
    By Semaphore you mean?

    I refer to traffic light

    Thanks
    Attached Images Attached Images  
    Last edited by Leonardo; - 3rd November 2008 at 02:35.

  4. #4
    Join Date
    Nov 2003
    Location
    Wellton, U.S.A.
    Posts
    5,924


    Did you find this post helpful? Yes | No

    Default

    What do you want to control the speed with? A pot or have a set of pre determined speeds selected by button pushes or some other manner?
    Dave
    Always wear safety glasses while programming.

  5. #5


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by mackrackit View Post
    What do you want to control the speed with? A pot or have a set of pre determined speeds selected by button pushes or some other manner?
    Hello,

    Determined speeds selected by button pushes.

    Thanks

  6. #6
    Join Date
    Nov 2003
    Location
    Wellton, U.S.A.
    Posts
    5,924


    Did you find this post helpful? Yes | No

    Default

    First we need to work on the schematic. The way it is drawn the red and green leds will never light up. Yellow is OK.

    You will also want it rigged so if a green is on the corresponding red at the other fixture will be off.

    Take a look here and see if you want to use a configuration something like the drawing with three pins (with a little tweaking)
    http://www.mackrackit.com/mac/www/dave/LED/LEDs.html
    Dave
    Always wear safety glasses while programming.

  7. #7


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by mackrackit View Post
    First we need to work on the schematic. The way it is drawn the red and green leds will never light up. Yellow is OK.

    You will also want it rigged so if a green is on the corresponding red at the other fixture will be off.

    Take a look here and see if you want to use a configuration something like the drawing with three pins (with a little tweaking)
    http://www.mackrackit.com/mac/www/dave/LED/LEDs.html
    Hello,

    In this case would be activated sequentially outs GP4 and GP5 agree to the amendment that I made to the circuit.

  8. #8
    Join Date
    Nov 2003
    Location
    Wellton, U.S.A.
    Posts
    5,924


    Did you find this post helpful? Yes | No

    Default

    That is doable. If GP4 is LOW, making GP0 or GP1 or GP2 High will make the connected LED light. The same for GP5.

    Being I do not know the sequence you want them to light here is an idea.

    Your code will have the "blinking" sequence with multiple pauses. The value of the pauses will be held in a variable. A button will connect to GP3 as an interrupt. Every time the button is pushed the variable will increase by the amount you want. Once the highest value is reached the variable will reset to the lowest.

    Code:
    "VARIABLES
    X VAR WORD:Y VAR WORD:Z VAR WORD
    
    ON INTERRUPT GOTO MYINT
    INTCON=%10001000
    IOC = %00001000
    '##############
    'YOUR SEQUENCE
    '##############
    DISABLE
    MYINT:
    IF GPIO.3 = 1 THEN
        X = X * 10
        Y = Y ???
        Z = Z  ???
        pause 100
    IF  X =>  ? THEN X  =  ??
    IF  Y =>  ? THEN Y  =  ??
    IF  Z =>  ? THEN Z  =  ??
    INTCON.1 = 0
    RESUME
    ENABLE
    Maybe something like that will work for you.
    Dave
    Always wear safety glasses while programming.

  9. #9


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by mackrackit View Post
    That is doable. If GP4 is LOW, making GP0 or GP1 or GP2 High will make the connected LED light. The same for GP5.

    Being I do not know the sequence you want them to light here is an idea.

    Your code will have the "blinking" sequence with multiple pauses. The value of the pauses will be held in a variable. A button will connect to GP3 as an interrupt. Every time the button is pushed the variable will increase by the amount you want. Once the highest value is reached the variable will reset to the lowest.

    Code:
    "VARIABLES
    X VAR WORD:Y VAR WORD:Z VAR WORD
    
    ON INTERRUPT GOTO MYINT
    INTCON=%10001000
    IOC = %00001000
    '##############
    'YOUR SEQUENCE
    '##############
    DISABLE
    MYINT:
    IF GPIO.3 = 1 THEN
        X = X * 10
        Y = Y ???
        Z = Z  ???
        pause 100
    IF  X =>  ? THEN X  =  ??
    IF  Y =>  ? THEN Y  =  ??
    IF  Z =>  ? THEN Z  =  ??
    INTCON.1 = 0
    RESUME
    ENABLE
    Maybe something like that will work for you.
    Hello,

    This is a sequence that desire for the lights.
    Attached Images Attached Images  

  10. #10
    Join Date
    May 2008
    Location
    Italy
    Posts
    825


    Did you find this post helpful? Yes | No

    Default

    You can accomplish the result with only 3 output ports. Connect Red led A and Green led B from port one to ground; Green led A and Red led B from port one to + 5V (pay attention to the polarity). Yellow led A to port 2 and Yellow led B to port 3. When Port one is High the green/red leds (correctly polarized will lit) when port one will turn low you will switch on the second set of green/red leds.
    With port 2 and 3 you modulate the yellows.

  11. #11
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Leonardo View Post
    This is a sequence that desire for the lights.
    Are you sure about that sequence?

    Don't they normally go Green-Yellow-Red?
    DT

  12. #12


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Darrel Taylor View Post
    Are you sure about that sequence?

    Don't they normally go Green-Yellow-Red?
    Darrel is the sequence .gif

  13. #13
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Leonardo View Post
    Darrel is the sequence .gif
    Yes, but it looks like it's backwards.

    <img src="http://www.picbasic.co.uk/forum/attachment.php?attachmentid=2968" />
    DT

  14. #14


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Darrel Taylor View Post
    Yes, but it looks like it's backwards.

    <img src="http://www.picbasic.co.uk/forum/attachment.php?attachmentid=2968" />
    Darrel sequence can be changed later by now we can start the code to get an idea of the operation, which you suggest?.

    Thanks

  15. #15
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959


    Did you find this post helpful? Yes | No

    Default

    Well, ok.

    But I accept no responsibility for the resulting accidents.
    Code:
    @ device  INTOSCIO, WDT_OFF, PWRT_OFF, MCLR_OFF, PROTECT_OFF, CPD_OFF 
    DEFINE OSCCAL_1K 1
    
    Green         CON 5000             ; mS to show Green Light
    Yellow        CON 1000             ; mS to show Yellow Light
    Tcalibrate    CON 480              ; Adjust for loop timing accuracy
    ;---------------------
    Sequence      VAR BYTE             ; cycles through the 4 states
    TimeCount     VAR WORD             ; Counts down sequence time
    
    CMCON = 7                          ; Disable comparator
    GPIO   = %110000                   ; Start with all LED's off
    TRISIO = %001000                   ; Set LED ports to output
    
    ;---------------------------------------------------------------------------
    Main:
      FOR Sequence = 0 to 3
        LOOKUP2 Sequence,[ Green,  Yellow,  Green,  Yellow], TimeCount
        REPEAT                                                   ; Multiplex
          LOOKUP Sequence,[%100001,%100011,%100100,%100100],GPIO ;  Tr. Light #1
          PauseUS Tcalibrate
          LOOKUP Sequence,[%010100,%010100,%010001,%010011],GPIO ;  Tr. Light #2
          PauseUS Tcalibrate
          TimeCount = TimeCount - 1
        UNTIL TimeCount = 0
      NEXT  Sequence
    GOTO Main
    Last edited by Darrel Taylor; - 4th November 2008 at 03:24. Reason: added OSCCAL_1K
    DT

  16. #16
    Join Date
    Jul 2003
    Posts
    2,405


    Did you find this post helpful? Yes | No

    Smile Whew

    Pleeeeeeease don't install these traffic lights in Colorado.

    My wife thinks;

    Green = go
    Yellow = go really fast
    Red = stop if you can

    Would really screw up the natural order of things..;o}
    Regards,

    -Bruce
    tech at rentron.com
    http://www.rentron.com

  17. #17


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Darrel Taylor View Post
    Well, ok.

    But I accept no responsibility for the resulting accidents.
    Code:
    @ device  INTOSCIO, WDT_OFF, PWRT_OFF, MCLR_OFF, PROTECT_OFF, CPD_OFF 
    DEFINE OSCCAL_1K 1
    
    Green         CON 5000             ; mS to show Green Light
    Yellow        CON 1000             ; mS to show Yellow Light
    Tcalibrate    CON 480              ; Adjust for loop timing accuracy
    ;---------------------
    Sequence      VAR BYTE             ; cycles through the 4 states
    TimeCount     VAR WORD             ; Counts down sequence time
    
    CMCON = 7                          ; Disable comparator
    GPIO   = %110000                   ; Start with all LED's off
    TRISIO = %001000                   ; Set LED ports to output
    
    ;---------------------------------------------------------------------------
    Main:
      FOR Sequence = 0 to 3
        LOOKUP2 Sequence,[ Green,  Yellow,  Green,  Yellow], TimeCount
        REPEAT                                                   ; Multiplex
          LOOKUP Sequence,[%100001,%100011,%100100,%100100],GPIO ;  Tr. Light #1
          PauseUS Tcalibrate
          LOOKUP Sequence,[%010100,%010100,%010001,%010011],GPIO ;  Tr. Light #2
          PauseUS Tcalibrate
          TimeCount = TimeCount - 1
        UNTIL TimeCount = 0
      NEXT  Sequence
    GOTO Main
    Darrel,

    You notice how it works.

    Thank you

  18. #18


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Bruce View Post
    Pleeeeeeease don't install these traffic lights in Colorado.

    My wife thinks;

    Green = go
    Yellow = go really fast
    Red = stop if you can

    Would really screw up the natural order of things..;o}
    Bruce,

    It is just an example of operation.

    Thank you

  19. #19


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Darrel Taylor View Post
    Well, ok.

    But I accept no responsibility for the resulting accidents.
    Code:
    @ device  INTOSCIO, WDT_OFF, PWRT_OFF, MCLR_OFF, PROTECT_OFF, CPD_OFF 
    DEFINE OSCCAL_1K 1
    
    Green         CON 5000             ; mS to show Green Light
    Yellow        CON 1000             ; mS to show Yellow Light
    Tcalibrate    CON 480              ; Adjust for loop timing accuracy
    ;---------------------
    Sequence      VAR BYTE             ; cycles through the 4 states
    TimeCount     VAR WORD             ; Counts down sequence time
    
    CMCON = 7                          ; Disable comparator
    GPIO   = %110000                   ; Start with all LED's off
    TRISIO = %001000                   ; Set LED ports to output
    
    ;---------------------------------------------------------------------------
    Main:
      FOR Sequence = 0 to 3
        LOOKUP2 Sequence,[ Green,  Yellow,  Green,  Yellow], TimeCount
        REPEAT                                                   ; Multiplex
          LOOKUP Sequence,[%100001,%100011,%100100,%100100],GPIO ;  Tr. Light #1
          PauseUS Tcalibrate
          LOOKUP Sequence,[%010100,%010100,%010001,%010011],GPIO ;  Tr. Light #2
          PauseUS Tcalibrate
          TimeCount = TimeCount - 1
        UNTIL TimeCount = 0
      NEXT  Sequence
    GOTO Main
    Hello friends,

    Upss was wrong with the sequence of lights here correct.

    Attached Images Attached Images  
    Last edited by Leonardo; - 5th November 2008 at 01:23.

  20. #20


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Darrel Taylor View Post
    Well, ok.

    But I accept no responsibility for the resulting accidents.
    Code:
    @ device  INTOSCIO, WDT_OFF, PWRT_OFF, MCLR_OFF, PROTECT_OFF, CPD_OFF 
    DEFINE OSCCAL_1K 1
    
    Green         CON 5000             ; mS to show Green Light
    Yellow        CON 1000             ; mS to show Yellow Light
    Tcalibrate    CON 480              ; Adjust for loop timing accuracy
    ;---------------------
    Sequence      VAR BYTE             ; cycles through the 4 states
    TimeCount     VAR WORD             ; Counts down sequence time
    
    CMCON = 7                          ; Disable comparator
    GPIO   = %110000                   ; Start with all LED's off
    TRISIO = %001000                   ; Set LED ports to output
    
    ;---------------------------------------------------------------------------
    Main:
      FOR Sequence = 0 to 3
        LOOKUP2 Sequence,[ Green,  Yellow,  Green,  Yellow], TimeCount
        REPEAT                                                   ; Multiplex
          LOOKUP Sequence,[%100001,%100011,%100100,%100100],GPIO ;  Tr. Light #1
          PauseUS Tcalibrate
          LOOKUP Sequence,[%010100,%010100,%010001,%010011],GPIO ;  Tr. Light #2
          PauseUS Tcalibrate
          TimeCount = TimeCount - 1
        UNTIL TimeCount = 0
      NEXT  Sequence
    GOTO Main
    Hummm,

    The code works very well but I want to change the sequence of image.

    How can I change the code with this sequence.


  21. #21
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959


    Did you find this post helpful? Yes | No

    Default

    Just change the numbers in the LookUp's.

    LOOKUP Sequence,[%100001,%100011,%100100,%100100],GPIO ; Tr. Light #1
    Code:
        %100001
         || |||
         || ||Red
         || |Yellow
         || Green
         |0=Tr.Light #1
         0=Tr.Light #2
    DT

  22. #22


    Did you find this post helpful? Yes | No

    Talking

    Quote Originally Posted by Darrel Taylor View Post
    Just change the numbers in the LookUp's.

    LOOKUP Sequence,[%100001,%100011,%100100,%100100],GPIO ; Tr. Light #1
    Code:
        %100001
         || |||
         || ||Red
         || |Yellow
         || Green
         |0=Tr.Light #1
         0=Tr.Light #2
    Darrel excellent works ok, I will add other features and when they finish the code public.

    Thank you very much

  23. #23


    Did you find this post helpful? Yes | No

    Default

    Ready already got!.
    Last edited by Leonardo; - 5th November 2008 at 23:43.

  24. #24
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959


    Did you find this post helpful? Yes | No

    Default

    I didn't see that you edited your post.
    Oh well, I needed the Flash practice anyway.

    <OBJECT CLASSID="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" CODEBASE="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" WIDTH="600" HEIGHT="400" ><PARAM NAME="MOVIE" VALUE="http://www.pbpgroup.com/files/TrafficLight.swf"><PARAM NAME="PLAY" VALUE="true"><PARAM NAME="LOOP" VALUE="true"><PARAM NAME="QUALITY" VALUE="high"><EMBED SRC="http://www.pbpgroup.com/files/TrafficLight.swf" WIDTH="600" HEIGHT="400" PLAY="true" LOOP="true" WMODE="opaque" QUALITY="high" TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"></EMBED></OBJECT>
    DT

  25. #25


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Darrel Taylor View Post
    I didn't see that you edited your post.
    Oh well, I needed the Flash practice anyway.
    Hey Darrel,

    Very good explanation is very didactic congratulations.

  26. #26
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959


    Did you find this post helpful? Yes | No

    Default didactic

    "didactic"
    That was a new word for me.

    I found several "definitions" for it. But I think this one fits exactly what I want to accomplish ... some day.
    1. a: designed or intended to teach
      b: intended to convey instruction and information as well as pleasure and entertainment
    http://www.merriam-webster.com/dictionary/didactic

    Thanks!
    DT

  27. #27


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Darrel Taylor View Post
    "didactic"
    That was a new word for me.

    I found several "definitions" for it. But I think this one fits exactly what I want to accomplish ... some day.
    1. a: designed or intended to teach
      b: intended to convey instruction and information as well as pleasure and entertainment
    http://www.merriam-webster.com/dictionary/didactic

    Thanks!
    Darrel,

    In my Spanish language is something that explains in simple and direct the operation of something like this project.

    Again thanks for the help.

Similar Threads

  1. pic12f629 EEPROM problem in MPLABSIM
    By nicholastyc in forum General
    Replies: 1
    Last Post: - 16th May 2008, 18:10
  2. PIC12F629 - OSCCAL LOST in combat
    By ewandeur in forum mel PIC BASIC Pro
    Replies: 2
    Last Post: - 28th March 2007, 21:06
  3. Ultrasound with PIC12F629
    By ewandeur in forum mel PIC BASIC Pro
    Replies: 7
    Last Post: - 28th February 2007, 16:22
  4. PIC12F629, useing all I/O pins
    By Jcee324 in forum mel PIC BASIC Pro
    Replies: 16
    Last Post: - 7th December 2004, 11:05
  5. PIC12F629 or 8pin
    By andyf in forum mel PIC BASIC Pro
    Replies: 23
    Last Post: - 27th October 2004, 18:11

Members who have read this thread : 0

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