Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // C++ code using millis() instead of delay()
- const int buttonPin1 = 2;
- const int buttonPin2 = 3;
- const int ledPins[] = {11, 12, 13};
- const int numLeds = 3;
- int count1 = 0;
- int count2 = 0;
- int buttonState1 = LOW;
- int buttonState2 = LOW;
- int lastButtonState1 = LOW;
- int lastButtonState2 = LOW;
- unsigned long lastDebounceTime1 = 0;
- unsigned long lastDebounceTime2 = 0;
- unsigned long debounceDelay = 50;
- unsigned long lastBlinkTime = 0;
- unsigned long blinkInterval = 500;
- int blinkStep = 0;
- bool blinkState = LOW;
- void setup() {
- pinMode(buttonPin1, INPUT);
- pinMode(buttonPin2, INPUT);
- for (int i = 0; i < numLeds; i++) {
- pinMode(ledPins[i], OUTPUT);
- }
- Serial.begin(9600);
- }
- void loop() {
- // Button debouncing
- int reading1 = digitalRead(buttonPin1);
- if (reading1 != lastButtonState1) {
- lastDebounceTime1 = millis();
- }
- if ((millis() - lastDebounceTime1) > debounceDelay) {
- if (reading1 == HIGH && buttonState1 == LOW) {
- count1++;
- Serial.println(count1);
- }
- buttonState1 = reading1;
- }
- lastButtonState1 = reading1;
- Serial.print(count1%3);
- // Choose mode based on count
- switch (count1 % 3) {
- case 0:
- l2r();
- break;
- case 1:
- r2l();
- break;
- case 2:
- same_time();
- break;
- }
- int reading2 = digitalRead(buttonPin2);
- if (reading2 != lastButtonState2) {
- lastDebounceTime2 = millis();
- }
- if ((millis() - lastDebounceTime2) > debounceDelay) {
- if (reading2 == HIGH && buttonState1 == LOW) {
- count2++;
- Serial.println(count2);
- }
- buttonState2 = reading2;
- }
- lastButtonState2 = reading2;
- Serial.print(count2%3);
- // Choose mode based on count
- switch (count2 % 3) {
- case 0:
- blinkInterval = 500;
- Serial.println(" - delay 500");
- break;
- case 1:
- blinkInterval = 1000;
- Serial.println(" - delay 1000");
- break;
- case 2:
- blinkInterval = 1500;
- Serial.println(" - delay 1500");
- break;
- }
- }
- void r2l() {
- Serial.println(" - R to L");
- if (millis() - lastBlinkTime >= blinkInterval) {
- lastBlinkTime = millis();
- for (int i = 0; i < numLeds; i++) {
- digitalWrite(ledPins[i], LOW);
- }
- digitalWrite(ledPins[blinkStep], HIGH);
- blinkStep = (blinkStep + 1) % numLeds;
- }
- }
- void l2r() {
- Serial.println(" - L to R");
- if (millis() - lastBlinkTime >= blinkInterval) {
- lastBlinkTime = millis();
- for (int i = 0; i < numLeds; i++) {
- digitalWrite(ledPins[i], LOW);
- }
- digitalWrite(ledPins[numLeds - 1 - blinkStep], HIGH);
- blinkStep = (blinkStep + 1) % numLeds;
- }
- }
- void same_time() {
- Serial.println(" - 3 LED");
- if (millis() - lastBlinkTime >= blinkInterval) {
- lastBlinkTime = millis();
- blinkState = !blinkState;
- for (int i = 0; i < numLeds; i++) {
- digitalWrite(ledPins[i], blinkState ? HIGH : LOW);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement