Pages: [1]   Go Down
Author Topic: Problema con lectura analógica.  (Read 1051 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Buenas noches, recién adquirí un arduino uno por recomendaciones en la universidad, estoy acostumbrado a usar microcontroladores de microchip, opte por usar avr pero el cambio es muy radical y algo tan fácil no puedo desarrollarlo necesito ayuda, el planteamiento es sencillo se tiene una entrada analógica que dividiré en 8 para que por casos prenda leds, explicado de otra forma tengo un potencimetro que oscila de 0v a 5v si es 0v no se prenderá ningún led de los puertos digitales pero si hay 5v prenderán 8 led's (1 byte), si hay 2.5v prendan 4 leds y así como prendiendo una seria, el problema realmente es con la programación no entiendo como funciona, mi programa va algo así pensando aun como microchip.

int led1= 13;
int led2 =12;
int led3 =11;
int led4 =10;
int led5 = 9;
int led6 = 8;
int led7 = 7;
int led8 = 6;
int pot = A1;
int val1= 0;
void setup()
{
  pinMode(led1,OUTPUT);
  pinMode(led2,OUTPUT);
  pinMode(led3,OUTPUT);
  pinMode(led4,OUTPUT);
  pinMode(led5,OUTPUT);
  pinMode(led6,OUTPUT);
  pinMode(led7,OUTPUT);
  pinMode(led8,OUTPUT);
  
}

void loop()
{
  
  val1=analogRead(pot);
  float val= val1*(5.0/1023);
  if (val > 0 && val <=127)
  {digitalWrite(led1,HIGH);}
  if ( val >127 && val <=254)
 {digitalWrite(led1,HIGH);
  digitalWrite(led2,HIGH);}
 if (val >254 && val <=381);
{ digitalWrite(led1,HIGH);
  digitalWrite(led2,HIGH);
  digitalWrite(led3,HIGH);}
 if(val>381 && val <=508);
{ digitalWrite(led1,HIGH);
  digitalWrite(led2,HIGH);
  digitalWrite(led3,HIGH);
  digitalWrite(led4,HIGH);}
 if (val>508 && val<=635);
{ digitalWrite(led1,HIGH);
  digitalWrite(led2,HIGH);
  digitalWrite(led3,HIGH);
  digitalWrite(led4,HIGH);
  digitalWrite(led5,HIGH);
}
 if (val>635 && val<=762);
{ digitalWrite(led1,HIGH);
  digitalWrite(led2,HIGH);
  digitalWrite(led3,HIGH);
  digitalWrite(led4,HIGH);
  digitalWrite(led5,HIGH);
  digitalWrite(led6,HIGH);
}
 if (val>762 && val<=889)
{ digitalWrite(led1,HIGH);
  digitalWrite(led2,HIGH);
  digitalWrite(led3,HIGH);
  digitalWrite(led4,HIGH);
  digitalWrite(led5,HIGH);
  digitalWrite(led6,HIGH);
  digitalWrite(led7,HIGH);
}
if (val>889 && val <=1023);
{ digitalWrite(led1,HIGH);
  digitalWrite(led2,HIGH);
  digitalWrite(led3,HIGH);
  digitalWrite(led4,HIGH);
  digitalWrite(led5,HIGH);
  digitalWrite(led6,HIGH);
  digitalWrite(led7,HIGH);
  digitalWrite(led8,HIGH);
}
if(val==0);
{ digitalWrite(led1,LOW);
  digitalWrite(led2,LOW);
  digitalWrite(led3,LOW);
  digitalWrite(led4,LOW);
  digitalWrite(led5,LOW);
  digitalWrite(led6,LOW);
  digitalWrite(led7,LOW);
  digitalWrite(led8,LOW);
}
}  
« Last Edit: November 19, 2012, 10:32:38 am by ALDODANIEL » Logged

Euskadi
Offline Offline
God Member
*****
Karma: 16
Posts: 727
Arduinotarrak
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola,
te has complicado sin necesidad:

Si analogRead() te da valores entre 0 y 1023, y estás usando ese mismo rango para seleccionar el número de leds, te sobra la conversión, suprime la línea
Code:
float val= val1*(5.0/1023); // que además tendría que ser en todo caso 5000/1023, para que te dé entero positivo

y utiliza val1 directamente para evaluar los if()

Nota: escribir el mensaje en mayúsculas no está bien visto; la mayoría de las veces suele ser para encubrir deficiencias de acentuación, que no es tu caso.


Logged

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

si ya lo he intentado sin esa linea, pero no lo hace mi arduino smiley-sad según yo esto debería funcionar pero no lo hace no lee nada :S y el potenciometro y la parte del circuito funciona bien solo es que siempre me manda 1111111 del 13 al 6, no lee el puerto
Logged

Euskadi
Offline Offline
God Member
*****
Karma: 16
Posts: 727
Arduinotarrak
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola,
pues borra toda la parte de los led, y céntrate solo en analogRead():
- ejecuta analogRead y envía el valor al terminal con  Serial.print()
- mide con un téster qué tensión tienes en el pin A1, y cómo varía con el potenciómetro.
- prueba cambiando la conexión a A0

Investiga!

Logged

Alicante
Offline Offline
Sr. Member
****
Karma: 2
Posts: 413
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Para un correcto uso del foro deberías poner en Subject de que va tu problema. Además las mayúsculas no están bien vistas.
Un saludo!!
Logged

0
Offline Offline
God Member
*****
Karma: 1
Posts: 524
Arduino inside
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

si mides en A0 y lo lees por el serial te tiene que dar el potenciómetro entre 0 y 1024.
Logged

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

Gracias por las observaciones, trate de corregirlo, si soy nuevo con arduino, ¿me podría decir que es el serial? o como funciona "Serial.println()" . De ante mano muchas gracias.
Logged

Alicante
Offline Offline
Sr. Member
****
Karma: 2
Posts: 413
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Gracias por las observaciones, trate de corregirlo, si soy nuevo con arduino, ¿me podría decir que es el serial? o como funciona "Serial.println()" . De ante mano muchas gracias.
Una de las mejores cosas de Arduino es que está muy documentado.
http://www.arduino.cc/es/Serial/Print
Un saludo, si tienes alguna duda nos escribes!
Logged

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

Gracias por las observaciones, trate de corregirlo, si soy nuevo con arduino, ¿me podría decir que es el serial? o como funciona "Serial.println()" . De ante mano muchas gracias.
Una de las mejores cosas de Arduino es que está muy documentado.
http://www.arduino.cc/es/Serial/Print
Un saludo, si tienes alguna duda nos escribes!
Hola, mira ya vi mi error no lo había visto mi error es poner ";" después del argumento del if. Gracias todos quien me ayudaron smiley
Logged

Pages: [1]   Go Up
Jump to: