Shop OBEX P1 Docs P2 Docs Learn Events
Using potentiometer to increase/decrease blinking rate of LED — Parallax Forums

Using potentiometer to increase/decrease blinking rate of LED

akuakuakuaku Posts: 11
edited 2011-10-06 23:39 in General Discussion
Hi everyone, I'm trying to use a pot to increase/decrease blinking rate of LED. To do this I have tried modifying activity 4 from chapter 7 of 'what's a micro controller' with some success.

Originally it was a light meter test that speeds-up and slows-down the lights of a 7-segment LED display depending on how bright it was in a room.

Now I have substituted a potentiometer for the phototransitor and a single LED instead of the 7 segment one. For the Pot, I've used a .1 uF capacitor and a 220 Ohm resistor (Plugged into P7) . For the LED I've used a 470 Ohm resistor (plugged into P15). I think the light isn't as bright when the pause values are set lower (i.e. high/low pause = 5 vs 50). Would this be because of the capacitor?

You can mess around with the time values too... I don't know if that will affect the brightness of the LED too.

Anyway I just thought I'd throw this out there if anyone wanted to improve it or use it.

' {$STAMP BS2}
' {$PBASIC 2.5}

PAUSE 1000
                   
time    VAR    Word            ' Variable declarations


DO                                     ' main routine

GOSUB Get_Rc_time
GOSUB Delay
GOSUB Update_display

LOOP

Get_Rc_time:                           ' RC-Time Subroutine

HIGH 7
PAUSE 100
RCTIME 7, 1, time
DEBUG HOME, "time = ", DEC5 time

RETURN

Delay:                                  ' Delay Subroutine

PAUSE time /2

RETURN

Update_display:                         'Diplay updating subroutine

HIGH 15
PAUSE 20
LOW 15
PAUSE 20

RETURN

Comments

  • SRLMSRLM Posts: 5,045
    edited 2011-10-04 14:30
    akuaku wrote: »
    I think the light isn't as bright when the pause values are set lower (i.e. high/low pause = 5 vs 50). Would this be because of the capacitor?

    Which pauses are you talking about? A smaller capacitor would reduce the time it takes to discharge the RC circuit, but that would only change the Delay subroutine. If you change the pause in the Update_Display subroutine, then that will control how long the LED is on for each pulse. By changing the pause here you will make it appear to be brighter/dimmer, as long as the pause is "small". By small, I mean so that the program executes fast enough where the eye doesn't see the LED turn on and off, it all blends together.

    But in any case, you are trying to change the blinking rate. Normally RC circuits have a pretty small time constant. You can calculate the constant in your circuit, or just look and see what the DEBUG statement returns then find the units (look in the reference manual). Assuming that I'm not crazy, then this is probably a rather small number. I'd multiply it instead of divide it in the Delay routine in order to get a more noticeable blinking range.
  • akuakuakuaku Posts: 11
    edited 2011-10-05 23:25
    Thanks SRLM. Is this what you were suggesting?
    I didn't really use the formula for the offset because when I did, the lights didn't blink quickly enough for what i wanted to do when it was set to full speed.

    ' {$STAMP BS2}
    ' {$PBASIC 2.5}
    
      time VAR Word
    
    DO
     HIGH 7
     RCTIME 7, 1, time
     time = time */ 45                   'scale by 0.175 (x256 for */)
     time = time + 35                   ' offset by 35
     HIGH 15                               ' send pulse to LED
     PAUSE time
     LOW 15
     PAUSE time
    DEBUG HOME, "time = ", DEC5 time
    LOOP
    
  • SRLMSRLM Posts: 5,045
    edited 2011-10-06 23:39
    akuaku wrote: »
    Thanks SRLM. Is this what you were suggesting?

    Does it work? ...
Sign In or Register to comment.