fbpx

Expresate

Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:

Ayuda programación ...
 
Avisos
Vaciar todo

Ayuda programación arduino- Tarjeta pinguino-Minitarribot

1 Respuestas
1 Usuarios
0 Reactions
5,302 Visitas
legolas2
Respuestas: 1
Topic starter
(@legolas2)
New Member
Registrado: hace 12 años

Hola como estan, gracias por su atención. Quien les escribe es un novato en la robotica y en la programación C, pero vamos quien no empezo asi, sin embargo todo esto es genial y apasionante estoy seguro que aprenderé más con el tiempo. Luego de semana y media intentando programar el minitarribot con el IDE de pinguino (trabajo y estudio), y a falta de una semana para presentar mi proyecto, me veo obligado a solicitar ayuda 😳
Bueno mi problema es el sgte:
He logrado encender el robot con el mando, que funcione la opcion de bumpers, sin embargo no me sale el control de velocidad, siempre va a la misma velocidad, la mas alta creo, y falta unir la función de siguelineas y seguidor de luz, el conmutador se asocia al pin 2 de pinguino, pero no se en que parte debo programar para que identifique el conmutador y cambie de funcion. Asi que estuve cambiando la programación que hice en el IDE de pinguino pero aunque todo compila sin errores no logro que funcione bien. Para la programación me he ayudado de la información del creador de este proyecto (Furri) a quien le agradesco toda la ayuda que brinda y a todos en general en esta web, le he hecho modificaciones, ademas he investigado otras programaciones de personas que han implementado el mismo proyecto o parecidos.

En fin, esperando que me puedan ayudar, les dejo mi codigo a ver si alguien me puede decir los errores en los que estoy recurriendo y asi pueda solucionar mis problemas, ante todo mil disculpas si ven errores grosos, intento aprender 😳 muchas gracias.
// definiciones mando IR.
int IRTV = 5;
int LED = 10;
int marcha = 0;
int conmutador = 2 ;
// definiciones para el control de velocidad mediante variables y salidas
// pwm en los pines 11 y 12 de pinguino (salidas analogicas).
int pwm1 = 11;
int pwm2 = 12;
// definiciones BUMPER (detector de obstaculos).
int BUMPERd = 6;
int BUMPERi = 7;
// definiciones control seguidor CNY70.
int CNYc = 13;
int CNYd = 14;
int CNYi = 15;
// definiciuones control seguidor de luz LDR.
int LDRd = 17;
int LDRi = 16;
//Prototipos de las funciones utilizadas.
void adelante();
void atras();
void parar();
void giroDerecha();
void giroIzquierda();
//configurando tipo entrada o salida en pines de todas las definiciones.
void setup(void) {
pinMode(IRTV,INPUT);
pinMode(LED,OUTPUT);
pinMode(conmutador,INPUT);
pinMode(0,OUTPUT);
pinMode(1,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(BUMPERd,INPUT);
pinMode(BUMPERi,INPUT);
pinMode(pwm1,OUTPUT);
pinMode(pwm2,OUTPUT);
pinMode(CNYc,INPUT);
pinMode(CNYd,INPUT); //No estoy seguro pero creo que las entradas análogas
pinMode(CNYi,INPUT); //no es necesario declararlas en le void setup. Estas corresponden
pinMode(LDRd,INPUT); //a las de los CNY70 y los LDR.
pinMode(LDRi,INPUT);
}
//Control de velocidad utilizando pines 11 y 12 (salidas análogas PWM) Y variables.
void velocidad(int v1,int v2) {
digitalWrite(pwm1,v1);
digitalWrite(pwm2,v2);
}
//funciones utilizadas parea el movimiento.
void adelante(){
digitalWrite(0,LOW);
digitalWrite(1,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
}
void atras(){
digitalWrite(0,HIGH);
digitalWrite(1,LOW);
digitalWrite(3,LOW);
digitalWrite(4,HIGH);
}
void parar(){
digitalWrite(0,LOW);
digitalWrite(1,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
}
void giroDerecha(){
digitalWrite(0,LOW);
digitalWrite(1,HIGH);
digitalWrite(3,LOW);
digitalWrite(4,HIGH);
}
void giroIzquierda(){
digitalWrite(0,HIGH);
digitalWrite(1,LOW);
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
}
void BUMPER() {
if (digitalRead(BUMPERd) == 1)
{
atras();
velocidad(153,153);
delay(1000);
giroIzquierda();
delay(900);
adelante();
velocidad(255,255);
}
if (digitalRead(BUMPERi) == 1)
{
atras();
velocidad(153,153);
delay(1000);
giroDerecha();
delay(900);
adelante();
velocidad(255,255);
}
}
// bloque de programa principal.
void loop(void){
//{
//marcha = digitalRead(LED);
//digitalWrite(LED, marcha); // no estoy seguro :S
//}
if (digitalRead(IRTV) == 0)
{
if (marcha == 1)
{ marcha = 0; digitalWrite(LED,HIGH); parar(); }
else
{ marcha = 1; digitalWrite(LED,LOW); velocidad(255,255); adelante (); }
delay(500);
}
BUMPER();
}
void CNY70() {
if (analogRead(CNYc) > 500) // sensor central fuera de la linea
{
if (analogRead(CNYi) < 500) // sensor izq en la linea
{ giroIzquierda(); velocidad(255,127); }
if (analogRead(CNYd) < 500) // sensor dcho en la linea
{ giroDerecha(); velocidad(127,255); }
}
else
{
if (analogRead(CNYi) > 500)
{ adelante(); velocidad(255,255); }
else
{ giroIzquierda(); velocidad(255,0); }

if (analogRead(CNYd) > 500)
{ adelante(); velocidad(255,255); }
else
{ giroDerecha(); velocidad(0,255); }

adelante();
}
}
void LDR() {

if (analogRead(LDRi) > 500)
{ velocidad(153,255); }
else
{ velocidad(255,153); }

if (analogRead(LDRd) > 500)
{ velocidad(255,153); }
else
{ velocidad(153,255); }
}

Responder
Compartir: