Movendo un potenciómetro

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:

  1. 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:

  1. 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.
  2. Alerta: Nos casos anteriores, engade intermitencia ao LED vermello.

 


Deixa un comentario