//combinación de librerías de teclado 4x3 y de pantalla 16x2, más el skecth para hacer uso del odómetro.
//librerías correspondientes a la pantalla y al teclado.
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include <Keypad.h>
LiquidCrystal_I2C lcd(0x27,16,2);
const byte FILAS = 4; //los const byte permiten establecer variables no modificables.
const byte COLUMNAS = 3;
char keys [FILAS][COLUMNAS] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
};
byte pinesFilas[FILAS] = {10,9,8,7};
byte pinesColumnas[COLUMNAS] = {6,5,4};
Keypad teclado = Keypad(makeKeymap(keys), pinesFilas, pinesColumnas, FILAS, COLUMNAS);
char tecla;
volatile int contador = 0;
float vueltas = 0, rpm = 0, distancia = 0;
int estado = LOW;
void setup() {
pinMode(12,OUTPUT);
pinMode(11,INPUT);
pinMode(3,INPUT);
attachInterrupt(digitalPinToInterrupt(3), interrupcion, RISING);
Serial.begin(9600);
//Serial.println(" - Inicio - ");
lcd.init();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("Welcome");
delay(500);
lcd.clear();
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
tecla = teclado.getKey (); //así podemos ingresar el valor escrito en el teclado.
lcd.print(tecla);
/*delay(10);
detachInterrupt(digitalPinToInterrupt(3));
vueltas = (float(distancia)/600);//el encoder es de 600 vueltas por revolución.
rpm = vueltas*60;//multiplica vueltas por 60 (segundos) y así obtiene las revoluciones.
distancia = distancia + PI*2.4*vueltas; //3,14 x diámetro de la rueda x el numero de vueltas (600 puntos equivale a 1 revolución).
Serial.print(vueltas);Serial.print(" - ");
Serial.print(rpm);Serial.print(" rpm - ");
Serial.print(distancia);Serial.println(" mm");
contador = 0;
attachInterrupt(digitalPinToInterrupt(3), interrupcion, RISING);*/
//lcd.print(distancia);
/*while (digitalRead(11) == LOW){
//digitalWrite(12,HIGH)
estado = digitalRead(12); //la variable estado de este modo lee el estado logico del pin de salida.
digitalWrite(12,!estado);
while(digitalRead(11) == HIGH);*/
}
void interrupcion(){
contador++;
}