Advertisement
baldengineer

Turn Signal millis() blink example

Apr 30th, 2015
878
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.86 KB | None | 0 0
  1. /* millis() example to use IR buttons to start and stop a slow blinking (turn signal) LED
  2. http://www.baldengineer.com/millis-cookbook.html
  3. */
  4.  
  5. #include <IRremote.h>
  6. #include <IRremoteInt.h>
  7. #define irPin 2 //IR receiver on pin 2
  8.  
  9.  
  10. int led1 = 3; //LED that turns on and off using IR remote button.
  11. int turn = 12; //turn indicator blinker. Should start blinking at 0.7hz after key on remote is pressed
  12.  
  13. bool blinking = false;  //defines when blinking should occur
  14. unsigned long blinkInterval = 1420;  // number of milliseconds for blink (1/0.7)
  15.  
  16. unsigned long currentMillis; // variables to track millis()
  17. unsigned long previousMillis;
  18.  
  19. IRrecv irrecv(irPin);
  20. decode_results results;
  21.  
  22. void setup() {
  23.   Serial.begin(9600);
  24.   irrecv.enableIRIn();
  25.   pinMode(led1, OUTPUT);
  26.   pinMode(turn, OUTPUT);
  27. }
  28. void loop() {
  29.  
  30.   // this code blinks the LED
  31.   if (blinking) {    
  32.     currentMillis = millis();  // better to store in variable, for less jitter
  33.     if ((unsigned long)(currentMillis - previousMillis) >= blinkInterval) {  // enough time passed yet?
  34.       digitalWrite(turn, !digitalRead(turn));  // shortcut to toggle the LED
  35.       previousMillis = currentMillis;  // sets the time we wait "from"
  36.     }
  37.   } else {
  38.     digitalWrite(turn, LOW); // force LED off when not blinking
  39.   }
  40.  
  41.   if (irrecv.decode(&results)) {
  42.     switch (results.value) {
  43.  
  44.       case 0x837: //IR remote key to turn LED1 ON
  45.         digitalWrite(led1, HIGH);
  46.         break;
  47.  
  48.       case 0x37: //IR remote key to turn LED1 OFF
  49.         digitalWrite(led1, LOW);
  50.         break;
  51.  
  52.       case 0x834: //I want to use this key to start blinking ‘turn’ LED at 0.7hz
  53.         blinking = true;
  54.         break;
  55.  
  56.       case 0x34: //I want to use this key to stop blinking ‘turn’ LED
  57.         blinking = false;
  58.         break;
  59.  
  60.     }
  61.     irrecv.resume();
  62.   }
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement