Hello!
I'm making a small Arduino car and I need some help with my code/program.
I'm using "case" to make the car drive. When I press forward, backward, left or right on my IR remote, the car keeps running until I press a new button. That's OK, but I don't want it to spin in circles when I press left or right. I was told I should make some "functions" in my code (for the turns) so that I can make the car turn left or right for just 200ms (for example).. That's were I need help.
Also, I want to be able to control my lights using the LDR (for auto lights) and manually using the remote, but nothing happens when I press the light buttons..
Could anyone please take a look at my code and maybe give me some tips or help?
const int ldr = A7; //Lyssensor (LDR)
const int led = 3; //Kjørelys
const int blaa1 = 4;
const int lys = 300; //Laveste verdi for lys (styrer kjørelyset)
const int mhp = 8; //MotorHøyrePositiv
const int mhn = 9; //MotorHøyreNegativ
const int mvp = 10; //MotorVenstrePositiv
const int mvn = 11; //MotorVenstreNegativ
#include <IRremote.h> //Inkluderer biblioteket for IR kontroll
int RECV_PIN = 5;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup(){
Serial.begin(9600);
pinMode(3, OUTPUT); //Kjørelys
pinMode(4, OUTPUT); //Blått lys (indikerer at kjørelys er PÅ)
irrecv.enableIRIn();
pinMode(mhp, OUTPUT);
digitalWrite(mhp, LOW);
pinMode(mhn, OUTPUT);
digitalWrite(mhn, LOW);
pinMode(mvp, OUTPUT);
digitalWrite(mvp, LOW);
pinMode(mvn, OUTPUT);
digitalWrite(mvn, LOW);
}
void loop(){
//LIGHTS- START
int lysverdi = analogRead(ldr);
Serial.println(lysverdi);
if (lysverdi < lys)
digitalWrite(led, HIGH);
else
digitalWrite(led, LOW);
if (lysverdi < lys)
digitalWrite(blaa1, HIGH);
else
digitalWrite(blaa1, LOW);
delay(200);
//LIGHT - END
//IR, MOTOR - START
if (irrecv.decode(&results)){
Serial.println(results.value, DEC);
irrecv.resume();
}
delay(100);
switch (results.value){
case 16712445: //STOP >>|
digitalWrite(mhp, LOW);
digitalWrite(mhn, LOW);
digitalWrite(mvp, LOW);
digitalWrite(mvn, LOW);
break;
case 16736925: //Drive forwards CH
digitalWrite(mhp, LOW);
digitalWrite(mhn, HIGH);
digitalWrite(mvp, HIGH);
digitalWrite(mvn, LOW);
break;
case 16754775: //Drive backwards +
digitalWrite(mhp, HIGH);
digitalWrite(mhn, LOW);
digitalWrite(mvp, LOW);
digitalWrite(mvn, HIGH);
break;
case 16720605: //Turn left |<<
digitalWrite(mhp, HIGH);
digitalWrite(mhn, LOW);
digitalWrite(mvp, HIGH);
digitalWrite(mvn, LOW);
break;
case 16761405: //Turn right >||
digitalWrite(mhp, LOW);
digitalWrite(mhn, HIGH);
digitalWrite(mvp, LOW);
digitalWrite(mvn, HIGH);
break;
case 16769565: //Lights ON CH+
digitalWrite(led, HIGH);
case 16753245: //Lights OFF CH-
digitalWrite(led, LOW);
}
//IR, Engine - END
}
(I have a few Norwegian words in my code btw)
I appreciate all your help.
Hope you understand my english..
Thanks