Arduino en español
Circuitos con Arduino - Juan Antonio Villalpando
-- Tutorial de iniciación a Arduino --
Volver al índice del tutorial
___________________________
5.- Potenciómetro.
Si queremos introducir distintos niveles de tensión, no podemos utilizar los terminales 0 al 13, ya que son Entrada/Salidas DIGITALES,
se utilizan los A0 a A5, las denominadas ENTRADAS ANALÓGICAS.
Al mover el potenciómetro, obtenemos valores comprendido entre 0 y 1023. Los observamos en el Serial Monitor.
Si queremos que los niveles extremos estén comprendidos entre 0 y 1, hacemos un cambio de base, para verlo descomentamos estas líneas.
deceroauno = valor / 1023;
Serial.println(deceroauno);
Fíjate cómo se declara la entrada ANALÓGICA A2.
int P2 = A2; // Termina en punto y coma.
Aunque a veces puedes verlo así...
#define P2 A2 // Aquí no termina en punto y coma.
int P2;
Código |
/*
Juan A. Villalpando
kio4.com
*/
int P2 = A2; // ANALOG IN: A2, va al terminal intermedio del potenciómetro. float valor = 0;
float deceroauno;
void setup() {
// Los terminales ANALOG IN no hay que configurarlos porque siempre son de entrada.
Serial.begin(9600);
}
void loop() {
valor = analogRead(P2);
Serial.println(valor);
// deceroauno = valor / 1023;
// Serial.println(deceroauno);
// valor = map(valor, 0, 1023, 48, 2468);
// Serial.println(valor);
delay(20);
}
|
En ANALÓGICO (A0, A1, A2, A3, A4, A5)
IMPORTANTE: analogRead(P2); para leer el terminal 2 analógico. Importante que lo recuerdes.
En DIGITAL (2.... 13)
IMPORTANTE: digitalWrite(pin13, HIGH); para escribir en el terminal 13 digital. Importante que lo recuerdes.
IMPORTANTE: digitalRead(pin2); para leer el terminal 2 digital. Importante que lo recuerdes.
_________________
- Mapear.
- Se observa que podemos obtener 1024 niveles distintos, independientemente del potenciómetro que pongamos. Un potenciómetro de 10 es idóneo para la amplia mayoría de aplicaciones.
- En el ejemplo anterior hemos visto como la gama de valores de 0 a 1023 la transformamos de 0 a 1.
- Esto se puede hacer con un comando llamado map.
- Supongamos que obtenemos valores de 0 a 1023 y queremos que esos valores cambien su base de 48 a 2468, por ejemplo.
Función map.
y = map(valor, minimo, maximo, cambiominimo, cambiomaximo);
Siempre se mantendrán 1024 niveles de tensión aunque cambiemos los extremos.
Activa estas líneas en el código anterior y observa el Serial Monitor.
valor = map(valor, 0, 1023, 48, 2468);
Serial.println(valor);
¿Dónde nos puede servir la función map?
- Lo vermos más adelante. Imagínate que tenemos una LDR (Resistencia Variable con la Luz), cuando le llega poca luz presenta 54.000 óhmios y cuando recibe mucha luz presenta 720 óhmios. Queremos que cuando tenga su valor mínimo 720 óhmios presente un cero 0 y cuando tenga su valor máximo de 54.000 óhmios presente 100.
Haríamos algo así:
valor = map(valor, 720, 54000, 0, 100);
________________________________
|