#define pinbnUp 2
#define pinbtnDown 3
#define pinbtnOff 4
#define pinbtnHorn 5
#define Hornpin 10
#define LEDFlashpin 11
#define LEDpin 12
boolean flag; //+-
boolean flag1; //press/depress +
boolean flag2; //press/depress -
int sum;
int shim;
int maxs = 10; //max
int mins = 0; //min
long last; //lattime
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
pinMode(4, INPUT_PULLUP);
pinMode(5, INPUT_PULLUP);
}
void flashLight() {
analogWrite(LEDFlashpin, HIGH);
delay(50);
analogWrite(LEDFlashpin, LOW);
delay(50);
analogWrite(LEDFlashpin, HIGH);
delay(50);
analogWrite(LEDFlashpin, LOW);
delay(50);
analogWrite(LEDFlashpin, HIGH);
delay(50);
analogWrite(LEDFlashpin, LOW);
}
void loop() {
// put your main code here, to run repeatedly:
if (millis() - last > 300) {
if (!digitalRead(pinbnUp) & flag == 0 & sum < maxs) {
sum = sum + 1;
Serial.print("Stage1: ");
Serial.println(sum);
flag1 = 1;
last = millis();
}
else {
if (!digitalRead(pinbnUp) & flag == 0 & sum == maxs) {
Serial.print("Stage2: ");
Serial.println(sum);
delay(900);
flag = 1;
}
else {
if (!digitalRead(pinbnUp) & flag == 1 & sum > mins) {
sum = sum - 1;
Serial.print("Stage3: ");
Serial.println(sum);
flag2 = 1;
last = millis();
}
else {
if (!digitalRead(pinbnUp) & flag == 1 & sum == mins) {
Serial.print("Stage4: ");
Serial.println(sum);
delay(900);
flag = 0;
}
else {
if (flag1 == 1 || flag2 == 1) {
flag1 = 0;
flag2 = 0;
flag = !flag;
}
}
}
}
}
if (digitalRead(pinbtnOff) == 0) {
Serial.println("OFF");
sum = 0;
flag2 = 1;
last = millis();
}
}
if (digitalRead(pinbtnHorn) == 0) {
flashLight();
analogWrite(Hornpin, HIGH);
delay(100);
analogWrite(Hornpin, LOW);
}
shim = map(sum, 0, 10, 0, 255);
analogWrite(LEDpin, shim);
}