Introduction
Turn on the LEDs separately and control the changing time with two buttons.Print the interval time to LCD.
What you will need - Hardware
We will use:
Connections
LEDs and Buttons
|
|
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
/* * === Ardumotive Shield for Arduino UNO Board === * Arduino Tutorial: Blink LEDs - Control the changing interval with buttons * Dev Michalis Vasilakis/Date 24/3/2018/http://ardumotive.com */ #define pinLED1 9 #define pinLED2 10 #define pinLED3 11 #define bt1 8 #define bt2 12 #include <Adafruit_GFX.h> #include <Adafruit_PCD8544.h> Adafruit_PCD8544 display = Adafruit_PCD8544(3,4,5,6,7); unsigned long previousMillis = 0; float interval=0.5; //ms int select=1; void setup() { // Put your setup code here, to run once: // Define LED pins as outputs and buttons as INPUT_PULLUP: pinMode(pinLED1, OUTPUT); pinMode(pinLED2, OUTPUT); pinMode(pinLED3, OUTPUT); pinMode(bt1,INPUT_PULLUP); pinMode(bt2,INPUT_PULLUP); display.begin(); display.setContrast(50); display.clearDisplay(); // clears the screen and buffer } void loop() { // put your main code here, to run repeatedly: if (digitalRead(bt1)==0){ delay(250); interval = interval + 0.1; } if (digitalRead(bt2)==0){ delay(250); interval = interval - 0.1; } display.setTextSize(1); display.println("Interval:"); display.println(""); display.setTextSize(3); display.println(interval); display.display(); blinkAll(interval); //blinkSeparate(interval); display.clearDisplay(); // clears the screen and buffer } boolean flag=false; void blinkAll(float interval){ interval = interval * 1000; unsigned long currentMillis = millis(); if (currentMillis - previousMillis >= interval) { // save the last time you blinked the LED previousMillis = currentMillis; if (flag){ digitalWrite(pinLED1, HIGH); digitalWrite(pinLED2, HIGH); digitalWrite(pinLED3, HIGH); flag=false; } else{ digitalWrite(pinLED1, LOW); digitalWrite(pinLED2, LOW); digitalWrite(pinLED3, LOW); flag=true; } } } void blinkSeparate(float interval){ interval = interval * 1000; unsigned long currentMillis = millis(); if (currentMillis - previousMillis >= interval) { // save the last time you blinked the LED previousMillis = currentMillis; if (select==1){ digitalWrite(pinLED1, HIGH); digitalWrite(pinLED2, LOW); digitalWrite(pinLED3, LOW); select++; } else if (select==2){ digitalWrite(pinLED1, LOW); digitalWrite(pinLED2, HIGH); digitalWrite(pinLED3, LOW); select++; } else if (select==3){ digitalWrite(pinLED1, LOW); digitalWrite(pinLED2, LOW); digitalWrite(pinLED3, HIGH); select=1; } } } |
Download the code from here and open it with Arduino IDE. Inside you will also find the library files.
|
|