Étape 10 : Code
Le code se trouvent dans les pièces jointes. N’hésitez pas à modifier le code, mais il suffit de laisser un commentaire sur ce qui vous est venu avec elle.
Code
#include
Servo servoMain ;
temp de flotteur ;
int tempPin = 0 ;
int r_motor_n = 2 ; Commande PWM moteur droit-
int r_motor_p = 4 ; Commande PWM moteur droit +
int l_motor_p = 5 ; Commande PWM moteur gauche +
int l_motor_n = 7 ; Commande PWM moteur gauche-
activez int = 3 ;
int lumière = 9 ;
int enable2 = 6 ; VITESSE DE COMMANDE PWM
speed1 int = 0 ; Vitesse de contrôle PWM
int incomingByte = 0 ; pour les données entrantes de série
#include
#define TRIGGER_PIN 12 / / goupille de Arduino lié à déclencher la broche sur le capteur à ultrasons.
#define ECHO_PIN 11 / / goupille de Arduino liée à la broche sur le capteur à ultrasons d’écho.
#define MAX_DISTANCE 200 / / distance maximale que nous voulons faire un ping pour (en centimètres). Distance maximum sensor est évalué à 400-500cm.
NewPing sonar (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE) ; NewPing configuration des broches et distance maximale.
void setup()
{
servoMain.attach(10) ;
pinMode (r_motor_n, sortie) ; Broches de contrôle pour être sorties
pinMode (r_motor_p, sortie) ;
pinMode (l_motor_p, sortie) ;
pinMode (l_motor_n, sortie) ;
pinMode (active, sortie) ;
pinMode (enable2, sortie) ;
pinMode (lumière, sortie) ;
digitalWrite (r_motor_n, basse) ; partent les deux moteurs pour démarrage
digitalWrite (r_motor_p, basse) ;
digitalWrite (l_motor_p, basse) ;
digitalWrite (l_motor_n, basse) ;
digitalWrite (enable, faible) ;
digitalWrite (enable2, basse) ;
digitalWrite (lumière, HIGH) ;
Serial.Begin(9600) ;
Serial.Print ("Whats up im ATOM, orientée vers le haut!!! \n");
Serial.Print ("w = avant \n") ;
Serial.Print ("s = descendante \n") ;
Serial.Print ("d = droite \n") ;
Serial.Print ("a = gauche \n") ;
Serial.Print (« f = Stop \n ") ;
Serial.Print ("freaks boiteux robotique") ;
}
void loop()
{
Si (Serial.available() > 0) {}
lire les octets entrants :
incomingByte = Serial.read() ;
}
Switch(incomingByte)
{
de cas ': / / commande pour arrêter le robot
digitalWrite (r_motor_n, basse) ; Définissez la direction moteur, 1 bas, 2 faible
digitalWrite (r_motor_p, basse) ;
digitalWrite (l_motor_p, basse) ;
digitalWrite (l_motor_n, basse) ;
analogWrite (enable, 0) ;
analogWrite (enable2, 0) ;
Serial.println("Stop\n") ;
incomingByte ='* ' ;
rupture ;
case « R »: //control droit
digitalWrite (r_motor_n, HIGH) ; Définir la direction moteur, 1 grande, 2 faible
digitalWrite (r_motor_p, basse) ;
digitalWrite (l_motor_p, HIGH) ;
digitalWrite (l_motor_n, basse) ;
analogWrite (enable, speed1) ;
analogWrite (enable2, speed1) ;
Serial.println("right\n") ;
incomingByte ='* ' ;
rupture ;
case « L »: //control à gauche
digitalWrite (r_motor_n, basse) ; Définissez la direction moteur, 1 basse, 2 de haut
digitalWrite (r_motor_p, HIGH) ;
digitalWrite (l_motor_p, basse) ;
digitalWrite (l_motor_n, HIGH) ;
analogWrite (enable, speed1) ;
analogWrite (enable2, speed1) ;
Serial.println("left\n") ;
incomingByte ='* ' ;
rupture ;
case « F »: //control pour la marche avant
digitalWrite (r_motor_n, HIGH) ; Définissez la direction moteur, 1 haut, 2 de haut
digitalWrite (r_motor_p, basse) ;
digitalWrite (l_motor_p, basse) ;
digitalWrite (l_motor_n, HIGH) ;
analogWrite (enable, speed1) ;
analogWrite (enable2, speed1) ;
Serial.println("forward\n") ;
incomingByte ='* ' ;
rupture ;
affaire « B »: //control pour en arrière
digitalWrite (r_motor_n, basse) ; Définissez la direction moteur, 1 bas, 2 faible
digitalWrite (r_motor_p, HIGH) ;
digitalWrite (l_motor_p, HIGH) ;
digitalWrite (l_motor_n, basse) ;
analogWrite (enable, speed1) ;
analogWrite (enable2, speed1) ;
Serial.println("backwards\n") ;
incomingByte ='* ' ;
rupture ;
case « f » :
digitalWrite (r_motor_n, basse) ; Définissez la direction moteur, 1 bas, 2 faible
digitalWrite (r_motor_p, basse) ;
digitalWrite (l_motor_p, basse) ;
digitalWrite (l_motor_n, basse) ;
analogWrite (enable, 0) ;
analogWrite (enable2, 0) ;
Serial.println("Stop\n") ;
incomingByte ='* ' ;
rupture ;
affaire aurait ":
digitalWrite (r_motor_n, HIGH) ; Définir la direction moteur, 1 grande, 2 faible
digitalWrite (r_motor_p, basse) ;
digitalWrite (l_motor_p, HIGH) ;
digitalWrite (l_motor_n, basse) ;
analogWrite (enable, speed1) ;
analogWrite (enable2, speed1) ;
Serial.println("right\n") ;
incomingByte ='* ' ;
rupture ;
case « a » :
digitalWrite (r_motor_n, basse) ; Définissez la direction moteur, 1 basse, 2 de haut
digitalWrite (r_motor_p, HIGH) ;
digitalWrite (l_motor_p, basse) ;
digitalWrite (l_motor_n, HIGH) ;
analogWrite (enable, speed1) ;
analogWrite (enable2, speed1) ;
Serial.println("left\n") ;
incomingByte ='* ' ;
rupture ;
case « w » :
digitalWrite (r_motor_n, HIGH) ; Définissez la direction moteur, 1 haut, 2 de haut
digitalWrite (r_motor_p, basse) ;
digitalWrite (l_motor_p, basse) ;
digitalWrite (l_motor_n, HIGH) ;
analogWrite (enable, speed1) ;
analogWrite (enable2, speed1) ;
Serial.println("forward\n") ;
incomingByte ='* ' ;
rupture ;
de l’affaire ":
digitalWrite (r_motor_n, basse) ; Définissez la direction moteur, 1 bas, 2 faible
digitalWrite (r_motor_p, HIGH) ;
digitalWrite (l_motor_p, HIGH) ;
digitalWrite (l_motor_n, basse) ;
analogWrite (enable, speed1) ;
analogWrite (enable2, speed1) ;
Serial.println("backwards\n") ;
incomingByte ='* ' ;
rupture ;
case « r »: / / angles de servo
servoMain.write(0) ;
rupture ;
affaire ' t » :
servoMain.write(45) ;
rupture ;
affaire « y » :
servoMain.write(90) ;
rupture ;
case « u » :
servoMain.write(135) ;
rupture ;
affaire « i » :
servoMain.write(180) ;
rupture ;
cas ' o ': / / valeurs de vitesse PWM
Speed1 = 0 ;
rupture ;
affaire « 1 » :
Speed1 = 155 ;
rupture ;
affaire « 2 » :
Speed1 = 165 ;
rupture ;
affaire « 3 » :
Speed1 = 175 ;
rupture ;
affaire « 4 » :
Speed1 = 185 ;
rupture ;
affaire « 5 » :
Speed1 = 195 ;
rupture ;
affaire « 6 » :
Speed1 = 205 ;
rupture ;
affaire « 7 » :
Speed1 = 215 ;
rupture ;
affaire « 8 » :
Speed1 = 225 ;
rupture ;
cas « 9 » :
Speed1 = 235 ;
rupture ;
case « q » :
Speed1 = 255 ;
rupture ;
cas suis ' :
Temp = analogRead(tempPin) ; Lire la température
Temp = temp * 0.48828125 ;
Serial.Print ("TEMPRATURE =") ;
Serial.Print(temp) ;
Serial.Print("*C") ;
Serial.println() ;
Delay(1000) ;
rupture ;
affaire « p »: / / temps de capteur d’ultasonic thr ping
Delay(50) ; Attendre 50ms entre les pings (environ 20 pings/sec). 29ms devrait être le délai le plus court entre les pings.
unsigned int nous = sonar.ping() ; Envoyer des ping, ping temps en microsecondes (nous).
Serial.Print ("Ping:") ;
Serial.Print(US / US_ROUNDTRIP_CM) ; Convertir les temps de ping à distance en cm et résultat d’impression (0 = distance définie hors plage)
Serial.println("cm") ;
rupture ;
Delay(5000) ;
}
}
Me soutenir et voter, si je gagne, je vous garantis que vous verrez beaucoup de projets tels que celui-ci et si vous avez des problèmes de se sentir libre de PM me.