Hi, I'm wondering how can I make a part in a code repeat. For my project, I'm making a robot. Just a simple IR command car. It can go up, down, left, right, spin left, and spin right. I've added leds as well. 2 leds for headlights, 2 leds for stop, 2 leds for reverse, 1 led for left, another for right. I want to make the left and right ones blink continuous. I took a part of code from the example blink sketch but when I put it to play in this project, all it does is turn on then off. No repeats. How can I make it blink non stop until another command is received?
WHOLE CODE:
#include <IRremote.h>
#include <IRremoteInt.h>
#include <IRremote.h>
#include <IRremoteInt.h>
// Robot With IR remote
// by Neil Hendrick
//
//this imports the IR Library (must be present in libraries folder)
int dir_b = 13; // Direction pin for motor B is Digital 12
int pwm_b = 11; // Speed pin for motor B is Digital 9 (PWM)
int dir_a = 12; // Direction pin for motor A is Digital 13
int pwm_a = 3; // Speed pin for motor A is Digital 10 (PWM)
int dir = 0;
int RECV_PIN = 8;// IR receiver
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
pinMode(dir_b, OUTPUT);
pinMode(dir_a, OUTPUT);
pinMode(pwm_b, OUTPUT);
pinMode(pwm_a, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(10, OUTPUT);
pinMode(12, OUTPUT);
pinMode(9, OUTPUT);
Serial.begin(9600); //begin serial connection, prints output to your PD
irrecv.enableIRIn(); // Start the receiver
}
void loop(){ //start loop
if (irrecv.decode(&results)) {
if (results.value == 0xBEEC847B) { //UP forward
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(10, LOW);
digitalWrite(dir_b, 1); // set direction
digitalWrite(dir_a, 1); // set direction
analogWrite(pwm_b, 255); // set speed (PWM)
analogWrite(pwm_a, 255); // set speed (PWM)
}// close UP
else if (results.value == 0xBEECA45B) { //DOWN backward
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(10, LOW);
digitalWrite(dir_b, 0); // set direction
digitalWrite(dir_a, 0); // set direction
analogWrite(pwm_b, 255); // set speed (PWM)
analogWrite(pwm_a, 255); // set speed (PWM)
}
else if (results.value == 0xBEEC44BB) { //LEFT
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(10, LOW);
digitalWrite(dir_b, 1); // set direction
digitalWrite(dir_a, 1); // set direction
analogWrite(pwm_b, 255); // set speed (PWM)
analogWrite(pwm_a, 128); // set speed (PWM)
digitalWrite(9, HIGH); // set the LED on
delay(500);
digitalWrite(9, LOW); // set the LED off
delay(500);
}
else if (results.value == 0xBEEC24DB) { //RIGHT
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(10, LOW);
digitalWrite(dir_b, 1); // set direction
digitalWrite(dir_a, 1); // set direction
analogWrite(pwm_b, 128); // set speed (PWM)
analogWrite(pwm_a, 255); // set speed (PWM)
digitalWrite(12, HIGH); // set the LED on
delay(500);
digitalWrite(12, LOW); // set the LED off
delay(500);
}
else if (results.value == 0xBEECC43B) { //STOP *
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(10, HIGH);
analogWrite(pwm_b, 0); // set speed (PWM)
analogWrite(pwm_a, 0); // set speed (PWM)
}
else if (results.value == 0x57432CD3) { // Spin Left RW
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(10, LOW);
digitalWrite(dir_b, 1); // set direction
digitalWrite(dir_a, 0); // set direction
analogWrite(pwm_b, 255); // set speed (PWM)
analogWrite(pwm_a, 255); // set speed (PWM)
}
else if (results.value == 0xBEEC2AD5) { //Spin Right FF
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
digitalWrite(10, LOW);
digitalWrite(dir_b, 0); // set direction
digitalWrite(dir_a, 1); // set direction
analogWrite(pwm_a, 255); // set speed (PWM)
analogWrite(pwm_b, 255); // set speed (PWM)
}
else if (results.value == 0xBEECCA35) { //Spin Right FF
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
digitalWrite(10, LOW);
digitalWrite(dir_b, 0); // set direction
digitalWrite(dir_a, 1); // set direction
analogWrite(pwm_b, 255); // set speed (PWM)
analogWrite(pwm_a, 255); // set speed (PWM)
}
Serial.println(results.value, HEX); //sends the IR code to computer so you can see what codes you are sending
irrecv.resume(); // Receive the next value
}//close first IF "if (irrecv.decode(&results)){"
} //close loop
Ass you can see, I've added
digitalWrite(12, HIGH); // set the LED on
delay(500);
digitalWrite(12, LOW); // set the LED off
delay(500);
but this doesn't work as it only turns on the led then off and nothing.