Paso 3: Seguidores de línea
Materiales:
Tres seguidores de línea. Tipos utilizados: VEX Robotics línea Tracker http://www.vexrobotics.com/276-2154.html y Sensor de SparkFun RedBot - seguidor de línea http://www.vexrobotics.com/276-2154.html
Instalaciones:
Independientemente de qué tipo usas, los seguidores de línea tienen tres salidas: VCC, GND y OUT. SALIDA va a un pin analógico en el arduino, GND a tierra y VCC puede ir a ~ + 5V.
Estos "seguidores de línea" consisten en un fotodiodo que alimenta esencialmente los valores de arduino que se corresponden con la cantidad de luz que recibe. Porque utilizamos cinta reflexiva para la pista de nuestro juego, los seguidores de línea eran fácilmente capaces de distinguir entre el suelo y el piso de la cancha.
Para empezar, primero adquirimos los seguidores de la línea de los sitios web mencionados anteriormente. Les conexión al frente de nuestro coche. Se conectan a la parte trasera sería prudente, porque el coche será demasiado lejos de la línea de tiempo que los sensores detectan que el coche se está moviendo fuera de la línea y el intento de aplicar una corrección. Así, colocando los sensores en la parte delantera del coche es la opción óptima para la línea más rápida de reacciones de seguimiento. Además, el seguidor de línea derecha e izquierda debe colocarse lo suficientemente cerca del perseguidor de centro que cuando el centro es por encima de la línea, el perseguidor ni derecho o izquierdo están por encima de la línea.
Tenga en cuenta que si intenta conectar todos los componentes que necesitan de la energía (seguidores de línea, motores, sensores de sonido, sensores de infrarrojos/ultrasonidos etc.) a la fuente de 5V de Arduino, vas a tener un mal momento. La fuente de 5V no puede suministrar suficiente corriente para todos estos componentes y así no funcionará correctamente, si en todos. Para combatir esto, conectamos a los seguidores de la línea a los + 5V de arduino y los sensores de sonido y distancia a la fuente de 12V (baterías de 8 1.5V) alimentar los motores. Puede haber otras variantes de esta configuración para asegurarse de que todos los sensores y los motores son suministra energía suficiente para funcionar correctamente, pero esta configuración funcionó bien para nosotros.
Después de conectar cada sensor con una fuente de energía, debe conectar cada sensor a un pin del Arduino para que pueden leer los valores del sensor. Debe ser conectados a un pin analógico, no un PWM digital.
Ahora necesitamos decirle a la arduino cómo realizar el seguimiento de la línea dada las entradas de estos seguidores de la línea de tres. El principio fundamental del código es que si el sensor medio ve la línea, estás en buena forma y el coche puede ir recto. Debido a cómo colocan los sensores izquierdos y derecho, podemos determinar si el coche está virando de la línea basada en si los sensores de derecho o izquierdos comienzan a detectar la línea de cinta reflexiva. Sabiendo esto, podemos decir entonces el coche para aplicar correcciones adecuadas para dirigir el coche hacia la línea. Dependiendo del sensor que detecta la línea, efectivamente puede determinar qué dirección debe aplicarse la corrección. Por ejemplo, si el sensor derecho la línea, el coche está virando de la línea hacia la izquierda, y se debe aplicar una corrección correcta.
Usted también debe jugar con su valor umbral, que marca la diferencia en las lecturas del sensor entre la línea y el suelo. Este valor variará según el tipo y la reflectividad de la línea y el piso de que tu coche está conduciendo, la distancia de los sensores de la tierra y el tipo de sensores que compres. Por esta razón, debe jugar con el código y probar el coche para ver que valor umbral es el mejor para usted. Esencialmente, usted querrá probar sus sensores imprimiendo sus valores leerlas en el monitor serial. Esta depuración se implementó en nuestro código a continuación.
El código siguiente es un método de especificar cómo pistas de la línea del coche, basado en la teoría anterior. Para implementar la línea de seguimiento en el bucle principal usando este método, sólo necesita llamar una vez.
<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>
El código total para los sensores implementados todos juntos aparecerá al final de las instrucciones.
Porque los Arduinos sólo puede manejar una función primordial en el método loop(), no es factible que se escuche la música mientras se intenta seguir la línea. Por lo tanto, tuvimos que sortear las reglas regulares de sillas musicales. Cada coche fue programada para seguir la línea de 14 segundos después de escuchar el sonido inicial. Durante los 14 segundos, el sonido continuado jugar. Después de 14 segundos, el sonido apagado y los coches detuvo siguiendo la línea y vuelta hacia dentro para encontrar sillas disponibles. Esto le dio la ilusión de que los coches estaban respondiendo a la música. Mientras que los coches a conducir durante 14 segundos de programación era relativamente simple, la canción de sillas musicales para jugar por sólo 14 segundos de programación era más difícil y requiere el uso de programación en Java con Eclipse. A continuación es el código para hacer nuestra canción de sillas musicales, el tema de Star Wars la canción porque nuestro juego de sillas musicales juego fue jugado en 04 de mayo de 2016, juega sólo 14 segundos.
<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>