#include <LiquidCrystal.h>
#include <Ultrasonic.h>
#include <Servo.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Pins para el display LCD
Ultrasonic ultrasonic(9, 10); // Pins para el sensor ultrasónico
Servo myservo;
// Crear un objeto de tipo Servo
const int trigPin = 6; // Pin de activación para el sensor de ultrasonido
const int echoPin = 7; // Pin de lectura para el sensor de ultrasonido
const int sensorLuzPin = A0; // Pin para el sensor de luz
const int ledPin1 = 13; // Pin del LED 1
const int ledPin2 = 8; // Pin del LED 2
char teclas[4][4] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
int pinFilas[4] = {A1, A2, A3, A4}; // Pines de las filas del teclado
int pinColumnas[4] = {A5, A6, A7, A8}; // Pines de las columnas del teclado
void setup() {
lcd.begin(16, 2); // Inicializar el display LCD
myservo.attach(6); // Pin de control del servo
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
for (int i = 0; i < 4; i++) {
pinMode(pinFilas[i], OUTPUT);
digitalWrite(pinFilas[i], HIGH);
pinMode(pinColumnas[i], INPUT);
digitalWrite(pinColumnas[i], HIGH);
}
}
void loop() {
int distancia = ultrasonic.distanceRead(CM); // Medir la distancia en centímetros
int luz = analogRead(sensorLuzPin); // Leer el sensor de luz
char tecla = leerTeclado(); // Leer el teclado
// Realizar acciones según la tecla presionada
switch (tecla) {
case '1':
lcd.setCursor(0, 0);
lcd.print("Tecla 1 presionada");
break;
case '2':
lcd.setCursor(0, 0);
lcd.print("Tecla 2 presionada");
break;
case '3':
lcd.setCursor(0, 0);
lcd.print("Tecla 3 presionada");
break;
// Agregar más casos según sea necesario
default:
break;
}
// Control del servo basado en la tecla presionada
if (tecla == 'A') {
myservo.write(0); // Mover el servo a 0 grados
} else if (tecla == 'B') {
myservo.write(90); // Mover el servo a 90 grados
} else if (tecla == 'C') {
myservo.write(180); // Mover el servo a 180 grados
}
// Control de los LEDs basado en la lectura del sensor de luz
if (luz < 300) {
digitalWrite(ledPin1, HIGH); // Encender LED 1 si la luz es baja
} else {
digitalWrite(ledPin1, LOW);
}
if (luz > 700) {
digitalWrite(ledPin2, HIGH); // Encender LED 2 si la luz es alta
} else {
digitalWrite(ledPin2, LOW);
}
}
char leerTeclado() {
char teclaPulsada = ' ';
for (int i = 0; i < 4; i++) {
digitalWrite(pinFilas[i], LOW);
for (int j = 0; j < 4; j++) {
if (digitalRead(pinColumnas[j]) == LOW) {
teclaPulsada = teclas[i][j];
while (digitalRead(pinColumnas[j]) == LOW) {} // Esperar a que se libere la tecla
}
}
digitalWrite(pinFilas[i], HIGH);
}
return teclaPulsada;
}