Schritt 5: Code
<p>int receiverpin= 11;<br>#include <IRremote.h><irremote.h></irremote.h></p><p>IRrecv irrecv(receiverpin); // create instance of irrecv decode_results results;</p><p>void setup() { Serial.begin(9600); //left motor pinMode(4,OUTPUT); // pinMode(7,OUTPUT); pinMode(6,OUTPUT); //pwm //right right pinMode(13,OUTPUT); pinMode(12,OUTPUT); pinMode(9,OUTPUT);//pwm irrecv.enableIRIn(); // start the receiver }</p><p>void onLED(int pin, int voltage) { digitalWrite(pin, voltage); }</p><p>void goForward(int duration, int pwm) { digitalWrite(4,HIGH); delay(duration);//100 digitalWrite(7,LOW); analogWrite(6,pwm);//right motor digitalWrite(13,HIGH); delay(duration); digitalWrite(12,LOW); analogWrite(9,pwm);// right motor }</p><p>void fullReverse(int duration, int pwm) { digitalWrite(4,LOW); delay(duration); digitalWrite(7,HIGH); analogWrite(6,pwm); digitalWrite(13,LOW); delay(duration); digitalWrite(12,HIGH); analogWrite(9,pwm);// right motor }</p><p>void fullStop(int duration, int pwm) { digitalWrite(4,LOW); delay(duration); digitalWrite(7,LOW); analogWrite(6,pwm);// digitalWrite(13,LOW); delay(duration); digitalWrite(12,LOW); analogWrite(9,pwm);// right motor }</p><p>void turnLeft(int duration, int pwm) { digitalWrite(13,LOW); delay(duration); digitalWrite(12,HIGH); analogWrite(9,pwm);// right motor digitalWrite(4,HIGH); delay(duration); digitalWrite(7,LOW); analogWrite(6,pwm); }</p><p>void turnRight( int duration, int pwm) { digitalWrite(13,HIGH); delay(duration); digitalWrite(12,LOW); analogWrite(9,pwm);// right motor digitalWrite(4,LOW); delay(duration); digitalWrite(7,HIGH); analogWrite(6,pwm); } void translateIR() // takes action based on IR code received // uses Sony IR codes { switch(results.value) { case 0x9CB47: goForward(100,120); // (x,y), adjust the y values for speed break;</p><p> case 0x5CB47: fullReverse(100,100); break;</p><p> case 0x3CB47: turnLeft(100,120); break; </p><p> case 0xDCB47: turnRight(100,120); break; </p><p> default:fullStop(100,0); break;</p><p> } }</p><p> void loop() { if (irrecv.decode(&results)) // have we received an IR signal? { onLED(2,255); // on led when the signal is being recieved translateIR(); for (int z = 0 ; z < 2 ; z++) // ignore the repeated codes { irrecv.resume(); // receive the next value } } else { onLED(2,0); // off if the signal is not being recived } }</p>