Esta el primera parte de nuestro proyecto agrónica y agrorobótica, queremos implementar robots que apoyen los procesos agropecuarios, este es el primero de muchos de ellos. Pronto publicaremos más detalles de su construcción, aquí pueden encontrar el programa en arduino y en app inventor.
//Robot Oruga versión 1 30 de junio de 2013
//Modificación de este robot para que pueda ser controlado por bluetooth
//4 de julio de 2013
//Arduino uno
//Mis primeros pasos con arduino
//José Noé Sánchez S.
//Programa para controlar el giro de dos motores
int led = 13; //led en pin 13 del arduino uno
int motor1pin1 = 8; //motor uno adelante, me falta verificar las conexiones, para saber si debo trocarlas
int motor1pin2 = 9; //motor uno atrás.
int motor2pin1 = 3; //motor dos adelante
int motor2pin2 = 4; //motor dos atras
int btdato; // a variable to read incoming serial data into
void setup() {
Serial.begin(9600);
// initialize the digital pin as an output.
//inicializo el pin 13 para el led como salida
pinMode(led, OUTPUT);
//inicializo el pin 3 para el motor 1 como salida
pinMode(motor1pin1, OUTPUT);
//inicializo el pin 4 para el motor 1 como salida
pinMode(motor1pin2, OUTPUT);
//inicializo el pin 8 para el motor 2 como salida
pinMode(motor2pin1, OUTPUT);
//inicializo el pin 9 para el motor 2 como salida
pinMode(motor2pin2, OUTPUT);
parar();
}
void loop() {
if (Serial.available()>0)
{
parar();
btdato= Serial.read();
switch(btdato)
{
case 'P':
//comienza primero este caso, pues al hacer las pruebas siempre que se conectaba
//arracancaba hacia adelante, y adelante
//era el primer case que había colocado, por eso supongo que al colocar el primero
//parar() la oruga se quedará quieta. { parar(); digitalWrite(led, LOW); // turn the LED OFF (LOW is the voltage level) break; } case 'A': { adelante(); digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) break; } case 'R': { reversa(); digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) break; } case 'D': { derecha(); digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) break; } case 'I': { izquierda(); digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) break; } } //cierra el switch }// cierra el if }//cierra void loop //las siguientes son las funciones que le dirán al l293 como funcionar void adelante() { //motor 1 digitalWrite(motor1pin1,HIGH); //gira motor uno a la derecha, en este caso hacia adelante, recuerde configurar las conexiones para que coincida digitalWrite(motor1pin2,LOW); //motor 2 digitalWrite(motor2pin1,HIGH); //girar motor dos a la derecha digitalWrite(motor2pin2,LOW); } void reversa(){ //motor 1 digitalWrite(motor1pin1,LOW); //gira motor uno a la izquierda, en este caso hacia atrás, recuerde configurar las conexiones para que coincida digitalWrite(motor1pin2,HIGH); //motor 2 digitalWrite(motor2pin1,LOW); //girar motor dos a la izquierda digitalWrite(motor2pin2,HIGH); } void izquierda(){ //motor 1 digitalWrite(motor1pin1,HIGH); //gira motor a la derecha, hacia adelante digitalWrite(motor1pin2,LOW); //motor 2 digitalWrite(motor2pin1,LOW); //girar motor dos a la izquierda, gira motor hacia atras. digitalWrite(motor2pin2,HIGH); } void derecha(){ //motor 1 digitalWrite(motor1pin1,LOW); //gira motor a la IZQUIERDA, hacia atrás digitalWrite(motor1pin2,HIGH); //motor 2 digitalWrite(motor2pin1,HIGH); //girar motor dos a la derecha, gira motor hacia adelante. digitalWrite(motor2pin2,LOW); } void parar(){ //todos a nivel alto //motor 1 digitalWrite(motor1pin1,HIGH); digitalWrite(motor1pin2,HIGH); //motor 2 digitalWrite(motor2pin1,HIGH); digitalWrite(motor2pin2,HIGH); }
No hay comentarios:
Publicar un comentario