Pages: [1]   Go Down
Author Topic: Problema con codigo Motores y sensores  (Read 1514 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Me ayudan a resolver porque no sirve mi codigo me parece que todo esta bn pero al conectar los sensores alos pines correctos solo se prende un motor porfavor alguien que me ayude



int sensor1 = 3;
int sensor2 = 4;
int motor1 = 6;
int motor2 = 5;
int val = 0;
int val2 = 0;
void setup()
{
pinMode(motor1,OUTPUT);
pinMode(motor2,OUTPUT);
pinMode(sensor1, INPUT);
pinMode(sensor2, INPUT);
}
void loop()
{
val=digitalRead(sensor1);
val2=digitalRead(sensor2);
if(val > 0 && val2 > 0)
{
  digitalWrite(motor1, LOW);
  digitalWrite(motor2, LOW);
}

else if(val < 0 && val2 > 0)
{
  digitalWrite(motor1, HIGH);
  digitalWrite(motor2, LOW);
}

else if(val < 0 && val2 < 0)
{
  digitalWrite(motor1, HIGH);
  digitalWrite(motor2, HIGH);
}

else if(val > 0 && val2 < 0);
{
  digitalWrite(motor1, LOW);
  digitalWrite(motor2, HIGH);
}
}
« Last Edit: June 01, 2012, 10:53:55 pm by soritass » Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 174
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Has probado en poner serial.print para las variables val y val2 podría ser que el valor fuera constante y siempre entrara en el mismo caso.

Las conexiones son correctas? El motor es acorde al arduino? Si meto un motor demasiado grande mi arduino tampoco lo mueve..

Porque usáis un int para definir un pin en lugar de un define?

Si cambias los motores de sitio entonces se mueve el otro motor? Es decir, funcionan los motores correctamente ?

A priori el programa me parece correcto... Creo que el problema esta en el conexionado
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

los motores son a 5v y la conexion la e echo bn pero el problama no es la conexion ya que si  utlizo otra fuente que nosea el arduino para los sensores y los motores lo corre bn y no se como usar serial.print soy practicamente nuevo con esto de el arduino Otra cosa es que estoy usando sensores Qrd1114 nose si esto afecte ya que la señal entra en el arduino

« Last Edit: June 01, 2012, 10:54:45 pm by soritass » Logged

Spain
Offline Offline
Full Member
***
Karma: 0
Posts: 191
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Suponiendo que todo el conexionado está bien, que los sensores funcionan correctamente y que está todo el hardware bien diseñado (cosa que no sabemos porque no has puesto ningún esquemático ni nada...pero nos fiamos), vamos a ver el software.

Suponiendo que los sensores Qrd1114 que utilizas devuelven una señal digital adecuada, es decir, un pulso de duración x. Esto el Arduino lo leerá en digitalRead() como HIGH o LOW.

http://arduino.cc/en/Reference/Constants

Como puedes ver en el link, LOW es cero y HIGH es un valor no cero (creo que realmente es 1). El problema es que en tu código utilizas comparativas de mayor y menor que cuando deberías utilizar ==LOW y ==HIGH

Code:
if(val == HIGH && val2 == LOW)
{
  digitalWrite(motor1, LOW);
  digitalWrite(motor2, LOW);
}

else if(val == LOW && val2 == HIGH)
{
  digitalWrite(motor1, HIGH);
  digitalWrite(motor2, LOW);
}
...

PD: La próxima vez utiliza el botón # para poner código (en la barra de iconos encima de los smileys), harás más legible tu post.
« Last Edit: June 02, 2012, 01:31:00 am by jorgepl » Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 174
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Que gran "cagada" la mía es cierto digitalread devuelve high o low !!! Para valores hay que usar analogread en los pines analógicos. Es por eso que falla el código.
Logged


Spain
Offline Offline
Full Member
***
Karma: 0
Posts: 191
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Los sensores que utiliza no son analógicos, devuelven un pulso al detectar el paso de un objeto a una distancia de hasta 1 cm., por lo tanto debe utilizar digitalRead(), pero con HIGH y LOW
Logged

Pages: [1]   Go Up
Jump to: