#include <Chrono.h>
#define led1 2
#define led2 3
#define led3 4
#define led4 5
#define led5 6
#define btn1 8
#define btn2 9
#define btn3 10
#define btn4 11
Chrono chronoled;
Chrono chronobtn;
int leds[5] = {led1, led2, led3, led4, led5};
int ledpointer = 0;
bool l2r = true;
bool ledstop = false;
bool btnstate;
bool lastbtnstate[4] = {HIGH, HIGH, HIGH, HIGH};
int basetime = 1000;
int ldtime = 0;
int ddelay = 50;
void setup() {
// put your setup code here, to run once:
chronobtn.stop();
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(btn1, INPUT_PULLUP);
pinMode(btn2, INPUT_PULLUP);
pinMode(btn3, INPUT_PULLUP);
pinMode(btn4, INPUT_PULLUP);
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
bool btn1read = digitalRead(btn1);
bool btn2read = digitalRead(btn2);
bool btn3read = digitalRead(btn3);
bool btn4read = digitalRead(btn4);
//reverse
if (btn1read != lastbtnstate[0]) {
btn1read = lastbtnstate;
if (btnstate == LOW && chronobtn.hasPassed(10)) {
l2r = !l2r;
}
chronobtn.restart();
}
//Speed Up
if (btn2read != lastbtnstate[1]) {
btn2read = lastbtnstate;
if (btnstate == LOW && chronobtn.hasPassed(10)) {
basetime -= 100;
if (basetime < 0) {
basetime = 1000;
}
Serial.println(basetime);
}
chronobtn.restart();
}
//Slow down
if (btn3read != lastbtnstate[2]) {
btn3read = lastbtnstate;
if (btnstate == LOW && chronobtn.hasPassed(10)) {
basetime += 100;
if (basetime > 3500) {
basetime = 1000;
}
Serial.println(basetime);
}
chronobtn.restart();
}
//freeze
if (btn4read != lastbtnstate[3]) {
btn4read = lastbtnstate;
if (btnstate == LOW && chronobtn.hasPassed(10)) {
if (ledstop) {
chronoled.resume();
ledstop = false;
} else {
chronoled.stop();
ledstop = true;
}
Serial.println("4");
}
chronobtn.restart();
}
//LED time & reverse opration
if (chronoled.hasPassed(basetime, true)) {
if (l2r) {
Serial.print("Now ");
Serial.println(ledpointer);
if (ledpointer < 5) {
// ledpointer = 0;
if(ledpointer != 0){
digitalWrite(leds[ledpointer - 1], LOW);
}
digitalWrite(leds[ledpointer], HIGH);
ledpointer++;
Serial.print("next ");
Serial.println(ledpointer);
}
else {
ledpointer = 0;
digitalWrite(leds[ledpointer], LOW);
}
} else {
if (ledpointer < 0) {
ledpointer = 5;
}
ledpointer--;
digitalWrite(leds[ledpointer + 1], LOW);
digitalWrite(leds[ledpointer], HIGH);
}
}
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
led1:A
led1:C
led2:A
led2:C
led3:A
led3:C
led4:A
led4:C
led5:A
led5:C
r1:1
r1:2
r2:1
r2:2
r3:1
r3:2
r4:1
r4:2
r5:1
r5:2
btn1:1.l
btn1:2.l
btn1:1.r
btn1:2.r
btn2:1.l
btn2:2.l
btn2:1.r
btn2:2.r
btn3:1.l
btn3:2.l
btn3:1.r
btn3:2.r
btn4:1.l
btn4:2.l
btn4:1.r
btn4:2.r