Descrición:
Imos ler o valor enviado por un potenciómetro a unha entrada analóxica e, segundo o resultado, executar unha serie de instrucións.
Montaxe:
Conectaremos un potenciómetro de 10kΩ de xeito que a patilla central c estea conectada á entrada analóxica A0, outra patilla a 5V e a que queda a masa.
Conectamos tres LEDs coas súas resistencias de protección aos pins 11, 13 e 13.
![]() |
![]() |
Programas:
1. Lectura serial
1. Lectura serial: Imos ler na consola serie o valor que nos dá un potenciómetro en función da posición do cursor.
// Declaración de variables
int pot=0; // variable que le o valor do potenciómetro, entre 0 e 1023
// Configuración
void setup() {
Serial.begin(9600); // Inicia a comunicación serie
}
// Programa:
void loop() {
pot = analogRead(A0); // Asignamos á variable "valor" o valor lido na entrada analóxica A0
Serial.println(pot); //Imprime no monitor serie dito valor
delay(200); //Retardo de 200ms para a visualización de datos na consola
}
2. Acender un LED
2. Acender un LED cun potenciómetro: Podemos utilizar a información que lemos na consola sobre o valor dun potenciómetro en función da posición do cursor para acender un LED cando o potenciómetro supere un determinado valor.
// Declaración de variables
int pot=0; // variable que le o valor do potenciómetro, entre 0 e 1023
int led1=13;
// Configuración
void setup(){
Serial.begin(9600); // Inicia a comunicación serie
pinMode(led1, OUTPUT); // Configuramos o LED como saída
}
// Programa
void loop() {
pot = analogRead(A0); // Asignamos a variable "valor" o valor lido na entrada analóxica A0
Serial.println(pot); // Imprime no monitor serie dito valor
if (pot >= 500) { // Cando a variable "valor" e maior ou igual que 500
digitalWrite(led1,HIGH); // acéndese o LED
}
else {
digitalWrite(led1,LOW); // no caso contrario apágase
}
delay(200); // Retardo de 100ms para a visualización de datos na consola
}
3. Rangos
Segundo sexa a lectura do potenciómetro executamos catro procesos diferentes. Imos utilizar a estrutura de control switch/case, pero podería facerse tamén con if … else
// Declaración de variables
int led1=13;
int led2=12;
int led3=11;
// Configuración
void setup(){
Serial.begin(9600); // Inicia a comunicación serie
pinMode(led1, OUTPUT); // Configuramos o LED como saída
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
}
// Programa
void loop(){
int pot = analogRead(0); // pot = valor lido na entrada analóxica A0
int opcion = map(pot, 0, 1023, 0, 3); // Dividimos o rango do potenciómetro ( de 0 a 1023)
// en 4 intervalos (de 0 a 3) ("opcion" é un nº enteiro)
switch(opcion){ // Segundo sexa o valor da variable opcion (0,1,2 ou 3)
case 0: // Executamos un proceso diferente.
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
break;
case 1:
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
break;
case 2:
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, LOW);
break;
case 3:
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
break;
}
Serial.println(String(pot) + " ---> " + String(opcion));
delay (200);
}
Propostas:
- Cada LED nun rango: Utiliza a estrutura if … else para programar o seguinte: Temos tres LEDs conectados aos pins 11, 12 e 13. O primeiro LED verde débese acender no rango de 50 a 350 da lectura do potenciómetro, o segundo LED amarelo no rango 351-700 e o terceiro LED vermello no rango 701-1023.
Extras:
- Máis estados: Fai a montaxe con 5 LEDs e, utilizando a estrutura de múltiples casos fai o programa con 6 estados diferentes, desde todo apagado a todo aceso.
- Alerta: Nos casos anteriores, engade intermitencia ao LED vermello.

