Arduino car - Need help with my program

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

You could look at the blink without delay example and implement a scheme like that but the problem here seems to be that you get a value into results.value and will keep acting on that until it changes.

You could change the value of it to something else when you have done a turn so that it does not repeat.

That said I can't see how you get something into results.value.