Paso 60: programa
![]()
Programar el Arduino con el siguiente código:
! = lastHallState) {/ / si el estado ha cambiado, incrementar el contador si (hallState == HIGH) {/ / si el estado actual es alta entonces el sensor / / wend de off a on: motorRotateCounter ++; Serial.Print ("número de rotaciones mitad empuja:"); Serial.println(motorRotateCounter); }} / / guardar el estado actual como el último estado, //for próxima vez a través de la lastHallState loop = hallState; } /////////////////////???? / / unidad de motricidad / / / / / void engageBrake() {digitalWrite (8, HIGH); //Engage el freno para canal A digitalWrite (9, HIGH); //Engage el freno para el canal B} void disengageBrake() {digitalWrite (8, bajo); //Engage el freno para canal A digitalWrite (9, bajo); //Engage el freno para el canal B} void forward() {//Motor un avance a toda velocidad digitalWrite (12, bajo); //Establishes adelante dirección de canal A digitalWrite (9 BAJA); Soltar el freno para canal A analogWrite (3, 255); Gira el motor en canal A toda velocidad //Motor B hacia atrás a velocidad media digitalWrite (13, HIGH); Establece la dirección hacia atrás de canal B digitalWrite (8, bajo); Soltar el freno para el canal B analogWrite (11, 255); Gira el motor en canal B en la mitad de velocidad} void backward() {//Motor un avance a toda velocidad digitalWrite (12, HIGH); //Spins el motor en canal en plena velocidad //Motor B hacia atrás a velocidad media hacia delante //Establishes de canal A digitalWrite (9, bajo); //Disengage el freno para canal A analogWrite (3, 255) digitalWrite(13, LOW); //Establishes atrás de canal B digitalWrite (8 BAJA); Soltar el freno para el canal B analogWrite (11, 255); Gira el motor en canal B en la mitad de velocidad} void left() {//Motor un avance a toda velocidad digitalWrite (12, HIGH); //Spins el motor en canal en plena velocidad //Motor B hacia atrás a velocidad media hacia delante //Establishes de canal A digitalWrite (9, bajo); //Disengage el freno para canal A analogWrite (3, 255) digitalWrite(13, HIGH); //Establishes atrás de canal B digitalWrite (8 BAJA); Soltar el freno para el canal B analogWrite (11, 255); Gira el motor en canal B en la mitad de velocidad} void right() {//Motor un avance a toda velocidad digitalWrite (12, bajo), la dirección de avance de //Establishes de canal A digitalWrite (9, bajo), //Disengage el freno para canal A analogWrite (3, 255); //Spins el motor en canal en plena velocidad //Motor B hacia atrás a velocidad media digitalWrite(13, LOW); //Establishes atrás de canal B digitalWrite (8 BAJA); Soltar el freno para el canal B analogWrite (11, 255); Gira el motor en canal B a media velocidad} / / / / / las funciones de sensor de distancia / / / / / void PingRead() {/ / el PING))) es accionado por un pulso alto de 2 o más microsegundos. Dar un breve impulso de baja previamente para asegurar un pulso limpio alto: pinMode (pingPin, salida); digitalWrite (pingPin, LOW); delayMicroseconds(2); digitalWrite (pingPin, HIGH); delayMicroseconds(5); digitalWrite (pingPin, LOW); El mismo pin se utiliza para leer la señal del PING))): alto / / pulso cuya duración es el tiempo (en microsegundos) de envío / del ping a la recepción de su eco de un objeto. pinMode (pingPin, entrada); duración = pulseIn (pingPin, HIGH); convertir el tiempo a una pulgadas de distancia = microsecondsToInches(duration); Delay(100); } //for PING segundo a microsecondsToInches(long microseconds) larga conversión de pulgadas {/ / según ficha técnica de paralaje para el PING))), hay / / 73,746 microsegundos por pulgada (es decir sonido viajes en 1130 pies / segundo). Esto da la distancia recorrida por el ping, saliente / / y el retorno, por lo que dividimos por 2 para obtener la distancia del obstáculo. Ver: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf volver microsegundos / 74 / 2; }