Étape 13 : L’essai IR
Utilisez le code suivant pour déterminer si la détection IR est configurée correctement. Télécharger le code, puis mettez votre main devant la LED IR et LED de l’Arduino doit s’allumer. Lorsque vous déplacez votre main à la LED doit s’éteindre. (Dans l’image ci-dessus, la LED est marquée par un « L »)Code :
(http://www.egrobotics.com/instructions/code/testir.ino)
#define IRsensorPin 11 void IR38Write() {} void loop() {}
#define IRledPin 10
#define D13ledPin 13
pour (int i = 0; i < = 384; i ++) {}
digitalWrite (IRledPin, élevé) ;
delayMicroseconds(13) ;
digitalWrite (IRledPin, basse) ;
delayMicroseconds(13) ;
}
}
void setup() {}
pinMode (IRledPin, sortie) ;
digitalWrite (IRledPin, basse) ;
pinMode (D13ledPin, sortie) ;
digitalWrite (D13ledPin, basse) ;
}
IR38Write() ;
Si (digitalRead(IRsensorPin)==LOW) {}
digitalWrite (D13ledPin, élevé) ;
} else {}
digitalWrite (D13ledPin, basse) ;
}
Delay(100) ;
}
Dépannage :
Si le voyant est toujours allumé ou s’allume et éteint souvent puis ajoutez plus de ruban autour de la paille ou mettre un mur de séparation entre l’IR LED et un capteur IR.
Si la LED ne s’allume pas être sûr que tout est connecté et branché sur les broches corrects. Veillez à ce que les angles sont corrects. La lumière doit être capable de rebondir sur l’objet et de retourner dans la partie noire du capteur IR.
Partie 2
Si votre IR LED et le récepteur fonctionnent correctement la prochaine chose à faire est d’essayer le code suivant qui activera la LDR et IR pour avoir le robot cherche la lumière, mais à la tentative de temps même pour éviter les obstacles qui se trouvent dans le chemin.
Code :
(http://www.egrobotics.com/instructions/code/robotavoid.ino)
#include < Servo.h >
Servo myservo ;
#define IRsensorPin 11
#define IRledPin 10
const int RightSensor = 2 ;
const int LeftSensor = 0 ;
int IR ;
int SensorLeft ;
int SensorRight ;
int SensorDifference ;
void IR38Write() {}
pour (int i = 0; i < = 384; i ++) {}
digitalWrite (IRledPin, élevé) ;
delayMicroseconds(13) ;
digitalWrite (IRledPin, basse) ;
delayMicroseconds(13) ;
}
}
void setup() {}
myservo.Attach(5) ;
pinMode (IRledPin, sortie) ;
digitalWrite (IRledPin, basse) ;
pinMode (sortie 8) ;
pinMode (sortie 9) ;
pinMode (entrée, LeftSensor) ;
pinMode (entrée, RightSensor) ;
Serial.Begin(9600) ;
Serial.println (« \nBeginning lumière recherche de comportement ») ;
}
void loop() {}
IR38Write() ;
IR = digitalRead(IRsensorPin) ;
Delay(50) ;
SensorLeft = 1023 - analogRead(LeftSensor) ;
Delay(1) ;
SensorRight = 1023 - analogRead(RightSensor) ;
Delay(1) ;
SensorDifference = abs (SensorLeft - SensorRight) ;
Serial.Print ("capteur à gauche =") ;
Serial.Print(SensorLeft) ;
Serial.Print("\t") ;
Serial.Print ("capteur à droite =") ;
Serial.Print(SensorRight) ;
Serial.Print("\t") ;
Si (SensorLeft > SensorRight & & SensorDifference > 75 & & IR == HIGH) {}
Serial.println("left") ;
digitalWrite (8, HIGH) ;
Delay(250) ;
digitalWrite (8, faible) ;
Delay(100) ;
}
Si (IR == faible) {}
digitalWrite (8, HIGH) ;
Delay(1500) ;
digitalWrite (8, faible) ;
digitalWrite (8, faible) ;
Delay(150) ;
}
Si (SensorLeft < SensorRight & & SensorDifference > 75 & & IR == HIGH) {}
digitalWrite (9, HIGH) ;
Delay(250) ;
digitalWrite (9, faible) ;
Delay(100) ;
}
ElseIf (SensorDifference < 75 & & IR == HIGH) {}
Serial.println("Forward") ;
digitalWrite (8, HIGH) ;
digitalWrite (9, HIGH) ;
Delay(500) ;
digitalWrite (8, faible) ;
digitalWrite (9, faible) ;
Delay(250) ;
}
Serial.Print("\n") ;
}