Étape 5: Étape 5 - temps maintenant au programme !
C’est vraiment le fun partie ; le ciel est la limite quand il s’agit de la programmation de votre Bot-J. Vous pouvez pré-programmer la route vers la machine de bureau candy ou cafetière à votre copain de bureau faire un pick-up. Ajouter une web-cam à pair entre les parois de la cabine haute, ajouter des enceintes pour diffuser des airs, ajouter des membres et une télécommande pour aller chercher vos gadgets préférés. J-Bot attend votre imagination exécuter simplement bouras.
Tout d’abord, vous devrez télécharger le logiciel Arduino. Ensuite télécharger la bibliothèque du logiciel Arduino pas à pas/Servo et suivre les indications sur la façon de mettre la bibliothèque dans son dossier respectif.
Ensuite, ouvrez le logiciel Arduino et collez le code.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#include < AFMotor.h > / / permet de la bibliothèque de moteur
#include < Servo.h > / / permet de la bibliothèque de Servo
Servo PingServo ;
AF_DCMotor motor1(1) ; Moteur 1 est connecté au port 1 sur le flasque arrière
AF_DCMotor motor2(2) ; Moteur 2 est connecté au port 2 sur le flasque arrière
int minSafeDist = 11 ; Distance minimale pour capteur de ping savoir quand il faut tourner
int pingPin = A0 ; Capteur de ping est connecté au port A0
int centerDist, leftDist, rightDist, backDist ; Définir les variables Centre, gauche, droite et retour à distance
longue durée, pouces, cm ; Définir des variables pour capteur de Ping
void setup() {}
PingServo.attach(10) ; Servo est attaché à la broche 10 dans le flasque arrière
PingServo.write(90) ; Centrez le capteur de Ping (met à 90 degrés)
motor1.setSpeed(215) ; Règle la vitesse du premier moteur (à 0, les moteurs sont tournés OFF. 255 est le paramètre le plus rapide que vous pouvez utiliser, j’ai utilisé 215 pour les moteurs ne poussez pas trop fort.)
motor2.setSpeed(215) ; Règle la vitesse du moteur deuxième (à 0, les moteurs sont tournés OFF. 255 est le paramètre le plus rapide que vous pouvez utiliser, j’ai utilisé 215 pour les moteurs ne poussez pas trop fort.)
Serial.Begin(9600) ; Active le Serial monitor pour des fins de débogage
Serial.println ("Serial test!") ; Tester la communication sérielle
}
void AllStop() {}
motor1.Run(Release) ; S’éteint le moteur 1
motor2.Run(Release) ; S’éteint le moteur 2
}
void AllForward() {/ / rend le robot à aller de l’avant
motor1.Run(Forward) ; Moteur 1 se met en marche
motor2.Run(Forward) ; Moteur 2 se met en marche
Serial.println ("aller de l’avant") ; Imprime une ligne dans le moniteur de la série
}
void turnRight() {/ / rend le robot tourner à droite
motor2.Run(Backward) ; S’éteint le moteur 2
motor1.Run(Forward) ; Moteur 1 se met en marche
Delay(1600) ; Temps nécessaire pour tourner à droite (1,6 secondes)
Serial.println ("Motors va à droite") ; Imprime une ligne dans le moniteur de la série
}
void GoBack() {/ / rend le robot à revenir en arrière
motor2.Run(Backward) ; Moteur 2 remonte
motor1.Run(Backward) ; Moteur 1 remonte
Delay(1600) ; Temps nécessaire pour revenir en arrière (1,6 secondes)
Serial.println("backward") ; Imprime une ligne dans le moniteur de la série
}
void turnLeft() {/ / rend le robot aller à gauche
motor2.Run(Forward) ; Moteur 2 se met en marche
motor1.Run(Backward) ; s’éteint le moteur 1
Delay(1600) ; Temps nécessaire pour tourner à gauche (1.6) secondes
Serial.println ("moteurs va de gauche"); / / affiche une ligne dans le moniteur de la série
}
Commence la boucle pour décider quoi faire
void loop()
{
LookAhead() ;
Serial.Print(inches) ;
Serial.println ("inches") ; Imprime une ligne dans le moniteur de la série
Si (pouces > = minSafeDist) / * si les pouces devant un objet est supérieure ou égale à la distance de sécurité minimale (11 pouces), react * /
{
AllForward() ; Toutes les roues vers l’avant
Delay(110) ; Attendez 0,11 secondes
} else / / sinon :
{
AllStop() ; Arrêter tous les moteurs
LookAround() ; Vérifier votre environnement pour le meilleur itinéraire
if(rightDist > leftDist) / / si la bonne distance est supérieure à la distance de gauche, tourner à droite
{
turnRight() ;
} else if (leftDist > rightDist) / / si la distance de gauche est supérieure à la distance droite, tourner à gauche
{
turnLeft() ;
} ElseIf (leftDist & & rightDist < minSafeDist) / / si la distance de gauche et de droite est plus petite que le min sûr distance (11 pouces) revenir en arrière
{
GoBack() ;
}
}
}
{unsigned long ping()
pinMode (pingPin, sortie) ; Faire la Pingpin à la sortie
digitalWrite (pingPin, basse) ; Envoyer une impulsion faible
delayMicroseconds(2) ; attendez deux microsecondes
digitalWrite (pingPin, HIGH) ; Envoyer une impulsion de haute
delayMicroseconds(5) ; attendez 5 secondes micro
digitalWrite (pingPin, basse) ; Envoyer une impulsion faible
pinMode(pingPin,INPUT) ; passer la Pingpin à l’entrée
durée = pulseIn (pingPin, HIGH) ; Ecoute pour echo
/ * Convertir micro secondes en pouces
-------------------------------------*/
po = microsecondsToInches(duration) ;
cm = microsecondsToCentimeters(duration) ;
}
long microsecondsToInches (longs microsecondes) / / convertit l’heure à une distance
{
retourner les microsecondes / 74 / 2 ;
}
long microsecondsToCentimeters (longs microsecondes) / / convertit l’heure à une distance
{
retourner les microsecondes / 29 / 2 ;
}
void LookAhead() {}
PingServo.write(90); / / angle de regarder vers l’avant
Delay(175) ; Attendez 0,175 secondes
ping() ;
}
void LookAround() {}
PingServo.write(180) ; angle de 180°
Delay(320) ; Attendez 0,32 secondes
ping() ;
rightDist = pouces ; obtenir la bonne distance
PingServo.write(0) ; regarder de l’autre côté
Delay(620) ; Attendez 0,62 secondes
ping() ;
leftDist = pouces ; obtenir la distance gauche
PingServo.write(90) ; angle de 90°
Delay(275) ; Attendez 0,275 secondes
Imprime une ligne dans le moniteur de la série
Serial.Print ("RightDist:") ;
Serial.println(rightDist) ;
Serial.Print ("LeftDist:") ;
Serial.println(leftDist) ;
Serial.Print ("CenterDist:") ;
Serial.println(centerDist) ;
}
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------