Étape 3: Ligne Trackers
Matériaux :
Trois suiveurs de ligne. Les types utilisés : VEX Robotics ligne Tracker http://www.vexrobotics.com/276-2154.html et SparkFun RedBot capteur - suiveur de ligne http://www.vexrobotics.com/276-2154.html
Installations :
Indépendamment de quel type que vous utilisez, les pisteurs de ligne ont trois sorties : VCC, GND et OUT. OUT va sur une broche analogique à l’arduino, GND va au sol, et VCC peut aller à ~ + 5V.
Ces « suiveurs de ligne » se composent d’une photodiode qui alimente essentiellement les valeurs de l’arduino qui correspondent avec la quantité de lumière qu’il reçoit. Parce que nous avons utilisé du ruban réfléchissant pour la voie de notre jeu, les pisteurs de ligne étaient facilement capables de distinguer entre le sol et le sol du terrain.
Pour commencer, nous avons acquis tout d’abord les trackers de ligne depuis les sites énumérés ci-dessus. Nous avons ensuite relié leur à l’avant de notre voiture. Reliant à l’arrière ne serait pas sage, parce que la voiture sera trop loin de la ligne au moment où les capteurs détectent que la voiture se déplace hors de la ligne et la tentative d’appliquer une correction. Placer les capteurs sur le devant de la voiture est donc une solution idéale pour la ligne plus rapide, suivi de réactions. En outre, le tracker de la ligne droite et à gauche doit être placé assez loin loin le tracker de centre que lorsque le tracker Centre est au-dessus de la ligne, ni le tracker droit ou gauche sont au-dessus de la ligne.
Notez que si vous tentez de vous connecter tous les composants qui ont besoin de puissance (suiveurs de ligne, moteurs, capteurs sonores, capteurs à infrarouge/ultrasons etc.) à la source de 5V sur l’Arduino, vous allez passer un mauvais moment. La source de 5V ne peut pas fournir assez de courant pour tous ces composants et donc ils ne fonctionnent pas correctement, voire pas du tout. Afin de lutter contre ce phénomène, nous avons connecté les trackers de ligne pour le + 5V de l’arduino et des capteurs de sons et de la distance à l’alimentation en 12V (piles 1 8.5V) alimentant les moteurs. Il peut y avoir d’autres variantes de cette installation pour s’assurer que tous les capteurs (et les moteurs) sont fourni suffisamment de puissance pour fonctionner correctement, mais cette installation a bien fonctionné pour nous.
Après avoir connecté chaque capteur à une source d’alimentation, vous devez connecter chaque capteur à une goupille de Arduino afin qu’il peut lire les valeurs de la sonde. Ils doivent être connectés à une broche analogique, pas un PWM numérique.
Maintenant nous devons dire à l’arduino comment suivre la ligne donnée les entrées de ces trackers de trois lignes. Le principe du code est que si le capteur moyen voit la ligne, vous êtes en bonne forme et la voiture peut aller tout droite. En raison de comment nous avons placé des capteurs de droite et de gauche, nous pouvons déterminer si la voiture est virant au large de la ligne basée sur si oui ou non les capteurs droite ou gauche commencent à détecter la ligne bande réfléchissante. En sachant cela, nous pouvons alors dire la voiture d’appliquer des corrections appropriées pour diriger la voiture vers la ligne. Fonction de capteur qui détecte la ligne, vous pouvez effectivement déterminer quelle direction la correction doit être appliquée. Par exemple, si le bon capteur détecte la ligne, la voiture est virant hors de la ligne vers la gauche, et une bonne correction doit être appliquée.
Vous devez également jouer avec votre seuil, qui marque la différence dans les lectures du capteur entre la ligne et le sol. Cette valeur peut varier selon le type et la réflectivité de la ligne et le sol de que votre voiture roule, la distance des capteurs de la terre et le genre de capteurs que vous achetez. Pour cette raison, vous devez bricoler avec le code et tester la voiture afin de voir quelle valeur de seuil est le mieux pour vous. Essentiellement, vous souhaitez tester vos capteurs en imprimant leurs valeurs lues dans le moniteur de la série. Ce débogage a été mis en œuvre dans notre code ci-dessous.
Le code ci-dessous est une méthode spécifiant la façon dont l’axe de la voiture suit, basé sur la théorie indiquée ci-dessus. Pour implémenter la ligne suivi dans la boucle principale à l’aide de cette méthode, il faut simplement être appelée une fois.
<p>int centerThresh = 10; <br>int rlThresh = 800;</p><p>void lineTrack(int t) { </p><p>int rightLine = analogRead(A1); <br>int leftLine = analogRead(A2); <br>int centerLine = analogRead(A0); // use these printed outputs in the serial monitor to determine your thresholds <br>Serial.print("Right: "); <br>Serial.print(rightLine); <br>Serial.print(", Center: "); <br>Serial.print(centerLine); <br>Serial.print(", Left: "); <br>Serial.println(leftLine);</p><p>if (rightLine < rlThresh) { <br> Serial.println("Turn left, on right sensor"); <br> turnRight(); <br> delay(t); </p><p>} </p><p>else if (leftLine < rlThresh) {<br></p><p>turnLeft(); <br>Serial.println("Turn right, on left sensor"); <br>delay(t); </p><p>} </p><p>else if (centerLine < centerThresh) { </p><p>goStraight(); Serial.println("Straight"); delay(t); </p><p>} </p><p>}</p>
Le code total pour les capteurs mis en place tous ensemble sera montré à la fin des instructions.
Parce que le Arduinos ne peut gérer qu’une seule fonction primaire dans la méthode loop(), il n’est pas possible de la faire écouter la musique tout en essayant de suivre la ligne. Ainsi, nous avons eu de contourner les règles ordinaires de chaises musicales. Chaque voiture était programmée pour suivre la ligne pendant 14 secondes après avoir entendu le son initial. Au cours de ces 14 secondes, le bruit a continué à jouer. Au bout de 14 secondes, le son arrête et les voitures s’est arrêté en suivant la ligne et se tourna vers l’intérieur pour trouver les chaises disponibles. Cela a donné l’illusion que les voitures étaient des réponses à la musique. Alors que les voitures à conduire pendant 14 secondes de programmation était relativement simple, la chanson de chaises musicales à jouer pour seulement 14 secondes de programmation a été plus difficile et nécessitait l’utilisation de la programmation Java dans Eclipse. Voici le code pour faire notre chanson de chaises musicales, le thème de Star Wars chanson parce que notre jeu de chaises musicales jeu a été joué le 4 mai 2016, jouer pour seulement 14 secondes.
<p>import objectdraw.*; import java.applet.AudioClip;</p><p>/** * Class: Physics 128 * Term: Spring 2016 * Instructor: Janice Hudgings * * Project: Musical Chairs Collaboration * School: Fremont Academy * Group: Femineers * * * -- Plays the musical chairs song (John Williams' Star Wars Opening Theme for * 14 seconds) * -- Delay of 1 second from start of applet to beginning of song * -- Total run time is 14 seconds * * * Window Size: 250x250 * * Adam Mitchell, Wednesday, 4 May 2016 */ public class MusicalChairsPlayer extends WindowController { private static final int THRESHOLD_DELAY = 1; // the time to delay for private static final int THRESHOLD_PLAY = 14; // the time to run for public void begin() { // Local variables AudioClip music; Boolean playing = false; // whether the music is playing // Load the audio clip music = getAudio("starWars.au"); // Play the music music.play(); playing = true; // Record the current time int tempTime1 = (int) System.currentTimeMillis() / 1000;</p><p>while (playing) {</p><p>if ((int) System.currentTimeMillis() / 1000 - tempTime1 >= (THRESHOLD_DELAY + THRESHOLD_PLAY)) { // Stop the music after 10 seconds, for a total of 14 music.stop(); </p><p>playing = false; </p><p>}</p><p> }</p><p> }</p><p>public void onMouseClick(Location point) {</p><p>// Restart the code <br>this.begin();</p><p>} </p><p>}</p>