How would you make it that when you press the button (LED turns and stays on) and then when you let go of the button (LED goes off)?
UPDATED CODE:
int ir_pin = 2;
int led_pin = 13;
int ledLEFT = 12;
int ledFORWARD = 11;
int ledBACK = 10;
int ledRIGHT = 8;
int debug = 1;
int start_bit = 2000;
int bin_1 = 1000;
int bin_0 = 400;
void setup() {
pinMode(led_pin, OUTPUT);
pinMode(ir_pin, INPUT);
pinMode(ledLEFT, OUTPUT);
pinMode(ledFORWARD, OUTPUT);
pinMode(ledBACK, OUTPUT);
pinMode(ledRIGHT, OUTPUT);
digitalWrite(led_pin, LOW);
Serial.begin(9600);
}
void loop() {
int key = getIRKey();
if (key != -1) {
Serial.print("Key Received: ");
Serial.println(key);
}
if (key == 16) { //To go left + forward.
digitalWrite(ledLEFT, HIGH);
digitalWrite(ledFORWARD, HIGH);
digitalWrite(ledBACK, LOW);
digitalWrite(ledRIGHT, LOW);
delay(100);
digitalWrite(ledFORWARD, LOW);
}
if (key == xxxx) { //To go forward.
digitalWrite(ledLEFT, LOW);
digitalWrite(ledFORWARD, HIGH);
digitalWrite(ledBACK, LOW);
digitalWrite(ledRIGHT, LOW);
delay(100);
digitalWrite(ledFORWARD, LOW);
}
if (key == 1040) { //To go right + forward.
digitalWrite(ledLEFT, LOW);
digitalWrite(ledFORWARD, HIGH);
digitalWrite(ledBACK, LOW);
digitalWrite(ledRIGHT, HIGH);
delay(100);
digitalWrite(ledFORWARD, LOW);
}
if (key == 2064) { //To go left + back.
digitalWrite(ledLEFT, HIGH);
digitalWrite(ledFORWARD, LOW);
digitalWrite(ledBACK, HIGH);
digitalWrite(ledRIGHT, LOW);
delay(100);
digitalWrite(ledBACK, LOW);
}
if (key == 528) { //To go back.
digitalWrite(ledLEFT, LOW);
digitalWrite(ledFORWARD, LOW);
digitalWrite(ledBACK, HIGH);
digitalWrite(ledRIGHT, LOW);
delay(100);
digitalWrite(ledBACK, LOW);
}
if (key == xxxx) { //To go right + back.
digitalWrite(ledLEFT, LOW);
digitalWrite(ledFORWARD, LOW);
digitalWrite(ledBACK, HIGH);
digitalWrite(ledRIGHT, HIGH);
delay(100);
digitalWrite(ledBACK, LOW);
}
if (key == xxxx) { //To stop.
digitalWrite(ledLEFT, LOW);
digitalWrite(ledFORWARD, LOW);
digitalWrite(ledBACK, LOW);
digitalWrite(ledRIGHT, LOW);
delay(100);
}
}
int getIRKey() {
int data[12];
digitalWrite(led_pin, HIGH);
while(pulseIn(ir_pin, LOW) < 2200) {
}
data[0] = pulseIn(ir_pin, LOW);
data[1] = pulseIn(ir_pin, LOW);
data[2] = pulseIn(ir_pin, LOW);
data[3] = pulseIn(ir_pin, LOW);
data[4] = pulseIn(ir_pin, LOW);
data[5] = pulseIn(ir_pin, LOW);
data[6] = pulseIn(ir_pin, LOW);
data[7] = pulseIn(ir_pin, LOW);
data[8] = pulseIn(ir_pin, LOW);
data[9] = pulseIn(ir_pin, LOW);
data[10] = pulseIn(ir_pin, LOW);
data[11] = pulseIn(ir_pin, LOW);
digitalWrite(led_pin, LOW);
if(debug == 1) {
}
for(int i=0;i<=11;i++) {
if (debug == 1) {
}
if(data[i] > bin_1) {
data[i] = 1;
} else {
if(data[i] > bin_0) {
data[i] = 0;
} else {
data[i] = 2;
}
}
}
for(int i=0;i<=11;i++) {
if(data[i] > 1) {
return -1;
}
}
int result = 0;
int seed = 1;
for(int i=11;i>=0;i--) {
if(data[i] == 1) {
result += seed;
}
seed = seed * 2;
}
return result;
}