Etape 11 : Programmation & Code
OUTILS
IDE Arduino
Câble de programmation
LE CODE
Si vous ne l’avez pas déjà fait, téléchargez et installez l’IDE Arduino de ARDUINO.
Copier et coller mon code source ci-dessous dans à l’IDE Arduino. Il y a aussi un II.ino de SSBR de fichier joint.
Branchez le câble de programmation à votre PC et l’Arduino UNO port de programmation.
Compilez et envoyer le programme à le SSBR II.
Il s’agit de code source très simple qui permet au robot pour aller de l’avant et de manquer des obstacles vers la gauche. Il sera très facile d’ajouter à des comportements de robots que vous progressez.
SERVOS
Voici un guide de mannequins absolue à rotation continue comment servos travaillent dans nos robots.
Servos fonctionnent à l’aide de PWM, Pulse Width Modulation. Le ci-dessous montre des tableaux vous quel légume sec de X correspond à un servo standard 180 degrés. Changer le pouls et vous changez pour arrêter l’emplacement.
Impulsion de 500 microsecondes = 0,5 millisecondes et correspond à environ 0 degrés.
Impulsion de 1500 microsecondes = 1,5 millisecondes et correspond à environ 90 degrés.
Impulsion de 2500 microsecondes = 2,5 millisecondes et correspond à environ 180 degrés.
À l’aide d’un servo de rotation continue, le tableau ci-dessus se traduit par. Changer le pouls et vous changez la vitesse.
Impulsion de 500 microsecondes = 0,5 millisecondes et correspond au sujet plein inverser (ou transférer).
Impulsion de 1500 microsecondes = 1,5 millisecondes et correspond à peu près tout arrêter.
Impulsion de 2500 microsecondes = 2,5 millisecondes et correspond au sujet complet vers l’avant (ou l’inverse).
Avant et arrière sont tributaires de l’orientation, vous avez monté le servo, y compris de quel côté du robot.
Pas tous les servos sont égales et un pouls de 1500 ne signifie pas obligatoirement l’arrêt. Vous devez jouer avec le minimum, maximum et les valeurs de l’arrêt, dans le code, pour chaque servo.
CAPTEUR DE DISTANCE INFRAROUGE
L’analogue (utilise une tension par opposition à 0-1) capteur de distance utilisée dans cet article répond avec un numéro numérique représentant la tension par rapport à la distance d’un obstacle.
Vous y trouverez un grand nombre de sujets du forum concernant cette conversion d’une mesure réelle, soit en pouces ou en centimètres... Ne vous inquiétez pas à ce sujet. Sauf si vous avez besoin de connaître la distance à un objet quelconque, il n’est pas important. Un simple GO-NO GO est plus que suffisant pour vous dire si il y a quelque chose qui ont besoin d’être évité.
Astuce - le plus petit la lecture, plus l’objet.
CRÉÉ PAR TED MACY
5 décembre 2014
Gratuit pour tous à utiliser, partager et modifier
LES DÉBUTANTS SUPER SIMPLE ROBOT VERSION II
#include / / include bibliothèque servo
Servo servoLeft ; Déclarer la servocommande gauche
Servo servoRight ; Déclarer le servo de droite
int IRpin = 0 ; broche analogique pour la lecture du capteur IR
float IRread ; Nombre de tension convertie comme distance à virgule flottante
void setup() {}
Serial.Begin(9600) ; démarrer le port série
servoLeft.attach(5) ; Fixer le signal gauche au P5
servoRight.attach(6) ; Fixer le bon signal à P6
}
void loop() {}
GetDistance() ;
Serial.println(distance) ; imprimer la distance
Si (IRread < 299) / / sans OBSTACLE
{
mémoire ;
}
Si (IRread > 300) / / OBSTACLE
{
lturn() ;
}
}
void GetDistance() {}
IRread = analogRead(IRpin) ; lit la valeur du capteur sharp
Serial.println(IRread) ; imprime la valeur de la sonde au moniteur série
Delay(50) ; délai pour obtenir des valeurs stables
}
void lturn() {/ / créez une sous-routine de virage à gauche
servoLeft.write(1503) ;
servoRight.write(1000) ;
Serial.println ("virage à gauche") ;
}
mémoire de Sub {/ / créez une sous-routine avant
servoLeft.write(1995) ;
servoRight.write(1000) ;
Serial.println("Forward") ;
}
CI-DESSOUS N’EST PAS UTILISÉ
void rturn() {/ / créez une sous-routine de virage à droite
servoLeft.write(1995) ;
servoRight.write(1502) ;
}
void nogo() {/ / créez une sous-routine stop
servoLeft.write(1503) ;
servoRight.write(1502) ;
}