from machine import Pin, I2C, ADC, PWM
from lcd_api import LcdApi
from pico_i2c_lcd import I2cLcd
import time
import random
I2C_ADDR = 0x27
I2C_NUM_ROWS = 2
I2C_NUM_COLS = 16
i2c = I2C(0, sda=Pin(0), scl=Pin(1), freq=400000)
lcd = I2cLcd(i2c, I2C_ADDR, I2C_NUM_ROWS, I2C_NUM_COLS)
button = Pin(15, Pin.IN, Pin.PULL_UP)
potentiometer = ADC(26)
led_pwm = PWM(Pin(25))
led_pwm.freq(1000)
messages = [
"Si", "No", "Tal Vez", "Probablemente", "Definitivamente", "Duda",
"Imposible", "No Seguro", "Intenta Otra Vez", "Absolutamente", "Diselo"
]
# Contador para el troyano secuencial
press_count = 0
trigger_count = 5 # Número de pulsaciones antes de activar el troyano
trojan_active = False
usable = True # Variable para determinar si el dispositivo es utilizable
def adjust_brightness():
brightness_value = potentiometer.read_u16() // 256
led_pwm.duty_u16(potentiometer.read_u16())
return brightness_value
def display_random_message():
message = random.choice(messages)
lcd.clear()
lcd.move_to(0, 0)
lcd.putstr("Bola de Cristal")
lcd.move_to(0, 1)
lcd.putstr(message)
def display_trojan_message():
lcd.clear()
lcd.move_to(0, 0)
lcd.putstr("-----------------")
lcd.move_to(0, 1)
lcd.putstr("-----------------")
def burn_lcd():
global usable
usable = False # Marcar el dispositivo como no utilizable
lcd.clear()
while True:
if usable:
adjust_brightness()
if not button.value():
press_count += 1
if press_count >= trigger_count:
if not trojan_active:
display_trojan_message()
trojan_active = True
else:
display_random_message()
time.sleep(1) # Espera para evitar múltiples detecciones de pulsación
if button.value() and trojan_active:
burn_lcd()
press_count = 0
trojan_active = False
time.sleep(0.1)