Digital Inputs
Para este proyecto, estudiamos el funcionamiento de los botones y el como pueden funcionar de formas diferentes (PULL_UP y PULL_DOWN), en primer lugar creamos un circuito con un botón, con el cual, al momento de accionarlo, se debía encender un LED con el código morse.
Como ultimo ejercicio, debíamos usar un keyboard para crear un juego de emparejamiento con ayuda de Arduino.
#include <Keypad.h>
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
const byte ROWS = 4;
const byte COLS = 4;
char hexaKeys[ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};
byte rowPins[ROWS] = {13, 12, 11, 10};
byte colPins[COLS] = {9, 8, 7, 6};
Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
LiquidCrystal_I2C lcd(0x20,16,2); // Dirección I2C de la pantalla LCD
int LedVerde=2;
int score = 0;
int targetNumber = 0;
bool firstNumberEntered = false;
void setup() {
  Serial.begin(9600);
  pinMode(LedVerde, OUTPUT); // Establecer el pin del LED como salida
  lcd.init(); // Inicializar la pantalla LCD
  lcd.backlight(); // Encender la luz de fondo
  lcd.setCursor(0, 0); // Establecer la posición del cursor en la primera línea
  lcd.print("Teclado conectado"); // Mostrar mensaje en la pantalla LCD
  delay(2000); // Esperar 2 segundos
  lcd.clear(); // Limpiar la pantalla LCD
  randomSeed(analogRead(0)); // Inicializar la generación de números aleatorios
}
void loop() {
  char key = customKeypad.getKey();
  if (key) {
    if (!firstNumberEntered) {
      targetNumber = random(0, 10); // Generar un número aleatorio entre 0 y 9
      Serial.print("Target Number: ");
      Serial.println(targetNumber);
      firstNumberEntered = true;
    } else {
      int enteredNumber = key - '0'; // Convertir el caracter a un número entero
      if (enteredNumber == targetNumber) {
        Serial.println("Correcto!");
        lcd.println("Correcto!");
        digitalWrite(LedVerde, HIGH); // Encender el LED verde
        delay(1000); // Esperar 1 segundo
        digitalWrite(LedVerde, LOW); // Apagar el LED verde
        score++;
        if (score == 5) {
          lcd.clear();
          lcd.print("¡Ganaste!");
          delay(2000);
          lcd.clear();
          score = 0; // Reiniciar la puntuación después de ganar
        }
      } else {
        Serial.println("Incorrecto!");
        lcd.println("Incorrecto!");
        score = max(0, score - 1); // Asegurarse de que la puntuación no sea negativa
      }
      delay(2000); // Esperar 2 segundos
      lcd.clear();
      lcd.print("Puntuacion: ");
      lcd.print(score);
      firstNumberEntered = false;
    }
  }
}
Digital Inputs
Published:

Digital Inputs

Published:

Creative Fields