Teclado analógico com Arduino

Posted by

Olá pessoal, tudo certo? hoje veremos como criar um teclado de 10 teclas fazendo leitura com apenas uma entrada analógica do Arduino. O diagrama esquemático está abaixo.

A ideia é ler as 10 teclas pela variação de tensão na entrada analógica ao pressionar cada botão. Todo o código e diagrama esquemático está aqui no Github. Abaixo tem fotos do protótipo.

teclado analógico

O código está abaixo. Note que eu defino a faixa de leitura de cada tecla com os valores lidos na entrada analógica, entre e 1023.

/*
 This sketch implements analog keyboard readings. The keys are
 sensed apart by different resistance values.

 It doesn't support multi-key pressing (but may in the future!)
  
 Created by Clovis Fritzen in 11/19/2016 
 More info: http://FritzenLab.com.br
 
 Based on the "AnalogInOutSerial" sketch, created 29 Dec. 2008
 and modified 9 Apr 2012 by Tom Igoe.

 This example code is in the public domain.

 */

// These constants won't change.  They're used to give names
// to the pins used:
const int analogInPin = A0;  // Analog input pin that the keyboard is attached to

int sensorValue = 0;        // value read from the pot

boolean entrou1 = false;
boolean entrou2 = false;
boolean entrou3 = false;
boolean entrou4 = false;
boolean entrou5 = false;
boolean entrou6 = false;
boolean entrou7 = false;
boolean entrou8 = false;
boolean entrou9 = false;
boolean entrou10 = false;

void setup() {
  // initialize serial communications at 9600 bps:
  Serial.begin(9600);
}

void loop() {
  // read the analog in value:
  sensorValue = analogRead(analogInPin);

  
  if (sensorValue < 980) {
    // print the results to the serial monitor:
    //Serial.print("Valor inteiro = ");
    //Serial.println(sensorValue);
    
    //delay(15);
    //sensorValue = analogRead(analogInPin);
   
      if (sensorValue > 450 && sensorValue < 480){
          Serial.println("Tecla 1");
          entrou1 = true;
      }
      if (sensorValue > 500 && sensorValue < 530){
          Serial.println("Tecla 2");
          entrou2 = true;
      }
      if (sensorValue > 540 && sensorValue < 580){
          Serial.println("Tecla 3");
          entrou3 = true;
      }
      if (sensorValue > 590 && sensorValue < 720){
          Serial.println("Tecla 4");
          entrou4 = true;
      }
      if (sensorValue > 770 && sensorValue < 800){
          Serial.println("Tecla 5");
          entrou5 = true;
      }
      if (sensorValue > 805 && sensorValue < 825){
          Serial.println("Tecla 6");
          entrou6 = true;
      }
      if (sensorValue > 830 && sensorValue < 857){
          Serial.println("Tecla 7");
          entrou7 = true;
      }
      if (sensorValue > 859 && sensorValue < 880){
          Serial.println("Tecla 8");
          entrou8 = true;
      }
      if (sensorValue > 885 && sensorValue < 905){
          Serial.println("Tecla 9");
          entrou9 = true;
      }
      if (sensorValue > 910 && sensorValue < 945){
          Serial.println("Tecla 10");
          entrou10 = true;
      }         
  }
 
  delay(150);
}

Espero que tenha gostado do conteúdo, qualquer coisa comente no espaço abaixo.

5 respostas

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *