Paso 9: Más: Bluetooth, controlado por el teléfono Android
Ver mi anterior panzer bluetooth sin cámara. Es controlada por teléfono Android. Cuatro 555 temporizador ICs conducir sus motores dc doble. No hay que esperar a velocidad :D
Conectar con el diagrama de arriba y subir este bosquejo:
/ * Chienline en 2014 controlar un coche/tanque de Arduino usando un androide teléfono sobre conexión Bluetooth. Software Android: Arduino Bluetooth RC coche por Andi.Co [en PlayStore]. Algunos códigos se cambian de los códigos oficiales para conseguir obras con mi conductor del Motor de DIY. * / char dataIn = de '; Carácter/datos desde el teléfono. S = Stop; int LCPin = 2; 555 pinout 5 izquierda Motor int LTPin = 3; 555 pinout 2 izquierda Motor int RCPin = 4; 555 pinout 5 derecho Motor int RTPin = 5; 555 pinout 2 derecho Motorint pinfrontLights = 6; PIN que activa las luces de frente. int pinbackLights = 7; PIN que activa las luces de atrás. determinante de Char; Utilizado en la función de control, tiendas el carácter recibido desde el teléfono. char det; Utilizado en la función de bucle, tiendas el carácter recibido desde el teléfono. int velocidad = 0; Almacena la velocidad basada en el personaje enviado por la phone.void setup() {Serial.begin(9600), //Initialize serie de comunicación con el módulo Bluetooth en 9600 baudios tasa. pinMode (LCPin, salida) pinMode (LTPin, salida); pinMode (RCPin, salida); pinMode (RTPin, salida); pinMode (pinfrontLights, salida); pinMode (pinbackLights, salida); //Stop ambos motores de potencia arriba stopMotors();} void loop() {det = check(); mientras que (det == 'F') datos entrantes //if están una F, avanzar {moveForward(); det = check();} mientras (det == 'B') //if datos entrantes están una B, retroceder {moveBackward(); det = check();} mientras (det == 'L') //if datos entrantes están una L, mueva las ruedas izquierda {moveLeftForward(); det = check();} mientras (det == 'R') //if datos entrantes están una R, mover ruedas derecho {moveRightForward(); det = check();} mientras (det == 'I') //if los datos de entrada están , gire a la derecha hacia adelante {moveRightForward(); det = check();} mientras (det == 'J') //if datos entrantes están una J, girar a la derecha de nuevo {moveRightBackward(); det = check();} mientras (det == 'G') //if datos entrantes están una G, girar a la izquierda hacia adelante {moveLeftForward(); det = check();} mientras (det == 'H') datos entrantes //if están un H, girar a la izquierda detrás {moveLeftBackward(); det = check();} mientras (det == de ') //if datos entrantes están una S, parada {stopMotors(); det = check();} Frente luces y nuevo luces de encendido y apagado son cool, pero para comenzar yo no he conectarlos a mi circuito. Pero dejo la detección en el código para su uso posterior. mientras (det == 'U') //if datos entrantes están una U, encender las luces delanteras {digitalWrite (pinfrontLights, HIGH); det = check();} mientras (det == 'u') //if datos entrantes están una u, luces delanteras {digitalWrite (pinfrontLights, LOW); det = check();} mientras (det == 'W') datos entrantes //if están un W, encender luces traseras {digitalWrite (pinbackLights, HIGH); det = check();} mientras (det == 'w') //if datos entrantes están una w luces trasera {digitalWrite (pinbackLights, LOW); det = check();}} check() int {si (Serial.available() > 0) //Check datos sobre líneas serie. {dataIn = Serial.read(); //Get el carácter enviado por el teléfono y guardarla en 'causar'. / / Serial.println(dataIn); //this es para depuración mediante Arduino serial monitor. Si (dataIn == 'F') {determinante = 'F';} else if (dataIn == 'B') {determinante = 'B';} else if (dataIn == 'L') {determinante = 'L';} else if (dataIn == 'R') {determinante = 'R';} else if (dataIn == 'I') {determinante = 'I';} else if (dataIn == 'J') {determinante = 'J';} else if (dataIn == 'G') {determinante = 'G';} else if (dataIn == 'H') {determinante = 'H';} else if (dataIn == de ') {determinante = de ';} / /---//Standard DC Los motores no son lo suficientemente rápidos como para jugar con velocidad. Puede configurar la velocidad utilizando 555 perno gatillo con analogWrite(); Apuesto a que usted no quiere hacer su tanque más lento que su velocidad mayor uso de motores de corriente continua estándar. / *---if else (dataIn == '0') //velocity = 0 - 9, q = velocidad. {velocidad = 20; / / valor = 0 - 255; "velocidad" no deben ser devueltas. }---* / else if (dataIn == 'U') {determinante = 'U';} else if (dataIn == 'u') {determinante = 'u';} else if (dataIn == 'W') {determinante = 'W';} else if (dataIn == 'w') {determinante = 'w';}} volver determinante; } //These las funciones de dirección están diseñadas para que 555 Motor Driver //You necesitará cambiar para adaptarse a tus otras moveForward() drivers.void motor {digitalWrite (LCPin, alto); digitalWrite (LTPin, alto); //L-Forward digitalWrite (RCPin, alto); digitalWrite (RTPin, alto); //R-Forward} void moveBackward() {digitalWrite (LCPin, alto); digitalWrite (LTPin, LOW); //L-Backward digitalWrite (RCPin, alto); digitalWrite (RTPin, LOW); //R-Backward} void stopMotors() {digitalWrite (LCPin, LOW); digitalWrite (LTPin, alto); digitalWrite (RCPin de //L-Stop BAJA); digitalWrite (RTPin, alto); R-parada} void moveLeftForward() {digitalWrite (LCPin, alto); digitalWrite (LTPin, LOW); //left rueda hacia atrás digitalWrite (RCPin, alto); digitalWrite (RTPin, alto); //right rueda hacia adelante} void moveRightForward() {digitalWrite (RCPin, alto); digitalWrite (RTPin, LOW); //right rueda hacia atrás digitalWrite (LCPin, alto); digitalWrite (LTPin, alto); //left rueda hacia adelante} anular moveLeftBackward() {digitalWrite (LCPin, alto); digitalWrite (LTPin, alto); //left rueda adelante digitalWrite (RCPin, alto); digitalWrite (RTPin, bajo) //right rueda hacia atrás} void moveRightBackward() {digitalWrite (LCPin ALTO); digitalWrite (LTPin, bajo); izquierda de la rueda hacia atrás digitalWrite (RCPin, alto); digitalWrite (RTPin, alto); rueda derecha adelante}