top of page

Explorer car + app inventor + arduino+bluetooth(parte2).

A continuación se presenta la segunda parte del carro explorador.

En esta segunda parte se a colocado un servo motor que se controla con el slider del programa, también se ha puesto un par de led's que encienden por medio de comando de vos.

Código del Arduino:

#include <Servo.h>

#define TxD 1 //definir pin TxD #define RxD 0 //definir pin RxD

//enable int STBY = 26; //standby

//Motores derechos int PWM1 = 2; //velocidad motor 1, ruedas derechas int IN11 = 22; //Dirección int IN21 = 23; //Dirección

//Motores izquierdos int PWM2 = 3; //velocidad motor 2, ruedas izquierdas int IN12 = 27; //Dirección int IN22 = 30; //Dirección

//otros int dato = 0; // Asignación de variable, letra leía por el bluetooth Servo myservo;//Asignación de nombre al servo int var = 90;//Variable posición servo int luz = 31;

void setup() {

Serial.begin(9600); pinMode(STBY, OUTPUT);

pinMode(PWM1, OUTPUT); pinMode(IN11, OUTPUT); pinMode(IN21, OUTPUT);

pinMode(PWM2, OUTPUT); pinMode(IN12, OUTPUT); pinMode(IN22, OUTPUT);

pinMode(luz, OUTPUT); myservo.attach(4);//Asignasión de pin al servo

}

//****************************************************************ciclo principal*********************************************************************

void loop() {

if (Serial.available() > 0) { dato = Serial.read(); } if (isalpha(dato))//condición para saber si el dato es alfabético { if (dato == 'a') //al recibir la letra "a" ejecute lo siguiente, carro hacia delante { adelante(); //llama la función } if (dato == 'b') //al recibir la letra "b" ejecute lo siguiente, el carro va a la derecha { derecha(); //llama la función } if (dato == 'c') //al recibir la letra "c" ejecute lo siguiente, el carro va a la izquierda { izquierda(); //llama la función } if (dato == 'd') { digitalWrite(luz, LOW); } if (dato == 'e') { digitalWrite(luz, HIGH); } if (dato == 'g') //al recibir la letra "g" ejecute lo siguiente, el carro se detiene { detenerse(); //llama la función } if (dato == 'k') //al recibir la letra "k" ejecute lo siguiente, carro hacia atras { atras(); //llama la función } } else { servo(); } }

//*****************************************************Funciones*************************************************************************

void adelante() { digitalWrite(STBY, HIGH); analogWrite(PWM1, 255); analogWrite(PWM2, 255); digitalWrite(IN11, HIGH); digitalWrite(IN21, LOW); digitalWrite(IN12, LOW); digitalWrite(IN22, HIGH); }

void atras() { digitalWrite(STBY, HIGH); analogWrite(PWM1, 255); analogWrite(PWM2, 255); digitalWrite(IN11, LOW); digitalWrite(IN21, HIGH); digitalWrite(IN12, HIGH); digitalWrite(IN22, LOW); }

void derecha() { digitalWrite(STBY, HIGH); analogWrite(PWM1, 255); analogWrite(PWM2, 255); digitalWrite(IN11, LOW); digitalWrite(IN21, HIGH); digitalWrite(IN12, LOW); digitalWrite(IN22, HIGH); }

void izquierda() { digitalWrite(STBY, HIGH); analogWrite(PWM1, 255); analogWrite(PWM2, 255); digitalWrite(IN11, HIGH); digitalWrite(IN21, LOW); digitalWrite(IN12, HIGH); digitalWrite(IN22, LOW); }

void detenerse() { digitalWrite(STBY, LOW); }

void servo() { if (dato > 0) { var = dato * 9; } myservo.write(var); }

 

Diagrama de la primera + segunda parte:

 

Imágenes de los bloques del app inventor:

Al programa anterior se le agregan los siguientes bloques.

Importante cambiar estos dos valores y poner como máximo "20" y mínimo "0", ya que en el programa de arduino en la función "servo" se multiplica por 9 ya que el máximo valor del slider es 20 y 20*9=180 que es el valor máximo del servo motor.

 

Video del funcionamiento:

Entradas destacadas
Vuelve pronto
Una vez que se publiquen entradas, las verás aquí.
Entradas recientes
Archivo
Buscar por tags
No hay etiquetas aún.
Síguenos
  • Facebook Basic Square
  • Twitter Basic Square
  • Google+ Basic Square
bottom of page