#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Dirección del LCD I2C (ajusta si es necesario)
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Pines del DIP switch
const int dipPins[10] = {4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
void setup() {
Serial.begin(9600);
lcd.init();
lcd.backlight();
// Configurar pines como entrada con pull-up
for (int i = 0; i < 10; i++) {
pinMode(dipPins[i], INPUT_PULLUP);
}
lcd.setCursor(0, 0);
lcd.print("ITTT Tuxtla");
lcd.setCursor(0, 1);
lcd.print("Gutierrez Chiapas");
delay(2000);
lcd.clear();
}
void loop() {
int decimalValue = 0;
String binario = ""; // Cadena para almacenar el valor binario
Serial.print("Estado DIP: ");
for (int i = 0; i < 10; i++) {
int bitValue = digitalRead(dipPins[i]) == LOW ? 1 : 0; // Invertido por PULLUP
if (bitValue == 1) {
decimalValue += (1 << i); // Sumar la potencia de 2 correspondiente usando desplazamiento de bits
}
binario = String(bitValue) + binario; // Prepend bit to string
Serial.print(bitValue);
}
Serial.print(" -> Decimal: ");
Serial.println(decimalValue);
// Mostrar en LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Dec: ");
lcd.print(decimalValue);
lcd.setCursor(0, 1);
lcd.print("Bin: ");
lcd.print(binario);
delay(500);
}