int redPin = 0; // physical pin 5
int yellowPin = 1; // physical pin 6
int bluePin = 2; // physical pin 7
int vvPin = 3; // physical pin 2
int relayPin = 4; // physical pin 3
int sensorValue = 0;
float voltageIn = 0;
void setup() {
pinMode(redPin, OUTPUT);
pinMode(yellowPin, OUTPUT);
pinMode(bluePin, OUTPUT);
pinMode(relayPin, OUTPUT);
pinMode(vvPin, INPUT);
digitalWrite(redPin, LOW);
digitalWrite(yellowPin, LOW);
digitalWrite(bluePin, LOW);
analogWrite(relayPin, 0.0);
}
void loop() {
// first, read the variable voltage coming in from the 18650
sensorValue = analogRead(vvPin);
voltageIn = sensorValue * (5.0 / 1024.0);
if (voltageIn >= 3.7) {
illuminate(LOW, HIGH, HIGH);
analogWrite(relayPin, voltageIn);
} else if (voltageIn >= 3.5) {
illuminate(LOW, HIGH, LOW);
analogWrite(relayPin, voltageIn);
} else if (voltageIn >= 3.2) {
illuminate(HIGH, LOW, LOW);
analogWrite(relayPin, voltageIn);
} else if (voltageIn < 3.2) {
analogWrite(relayPin, 0.0);
for (int x = 0; x < 5; x++) {
illuminate(HIGH, LOW, LOW);
delay(500);
illuminate(LOW, LOW, LOW);
delay(500);
}
} else {
illuminate(LOW, LOW, LOW);
}
}
void illuminate(boolean red, boolean yellow, boolean blue) {
digitalWrite(redPin, red);
digitalWrite(yellowPin, yellow);
digitalWrite(bluePin, blue);
}