LEDs werden häufig in elektronischen Systemen eingesetzt. Jede Taste kann neben jeder Option kleine LEDs haben. Indem man eine einzelne LED in verschiedenen Farben zum Leuchten bringt, ist es möglich, die Arbeit von mehr als einer LED mit einer einzigen LED zu erledigen. LEDs dieser Art werden als RGB-LEDs bezeichnet. Der Name leitet sich von den Anfangsbuchstaben der Farbnamen Rot, Grün und Blau ab. Ein weiterer Vorteil dieser LED besteht darin, dass sie in Mischungen aus 3 Grundfarben leuchten kann. Lila, Türkis, Orange…
In diesem Projekt lernen Sie die Zufälligkeit kennen, die in jeder Programmiersprache verwendet wird. Wir bereiten ein unterhaltsames Spiel mit dem vor RGB-LED, OLED-Bildschirm und Taste Modul von Picobricks.
In diesem Projekt erstellen wir einen Timer-Alarm, der sich mithilfe des Lichtsensors in Picobricks an das Tageslicht anpasst.
Details und Algorithmus
Das Spiel, das wir im Projekt erstellen werden, basiert darauf, dass der Benutzer die Farben richtig oder falsch kennt. Eine der Farben Rot, Grün, Blau und Weiß leuchtet zufällig auf der RGB-LED der Picobricks auf und der Name einer dieser vier Farben wird zufällig darauf geschrieben OLED-Bildschirm gleichzeitig. Der Benutzer muss innerhalb von 1,5 Sekunden die Taste von Picobricks drücken, um das Antwortrecht zu nutzen. Das Spiel wird 10 Mal wiederholt. Für jede Wiederholung werden 10 Punkte vergeben, wenn der Benutzer die Taste drückt, wenn die Farben übereinstimmen, oder wenn der Benutzer die Taste nicht drückt, wenn sie nicht übereinstimmen. Drückt der Nutzer den Knopf, obwohl die Farben nicht übereinstimmen, verliert er 10 Punkte. Nach zehn Wiederholungen wird die Punktzahl des Benutzers auf dem OLED-Bildschirm angezeigt. Sofern der Nutzer dies wünscht, kann er von seinem Recht auf Gegendarstellung keinen Gebrauch machen, indem er den Button nicht betätigt.
Komponenten
1X PicoBricks
Schaltplan
Sie können die Module von Picobricks ohne Verkabelung programmieren und betreiben. Wenn Sie die Module getrennt von der Platine verwenden möchten, sollten Sie die Modulverbindungen mit Grove-Kabeln herstellen.
MicroBlocks-Codes der PicoBricks
Sie können auf die Microblocks-Codes des Projekts zugreifen, indem Sie das Bild auf die Registerkarte „Microblocks Run“ ziehen oder auf die Schaltfläche klicken.
Registerkarte „Mikroblöcke ausführen“.
MicroPython-Codes der PicoBricks
Von der Maschine importieren Sie Pin,I2C,ADC,PWM #um auf die Hardware auf dem Pico zuzugreifen
von picobricks importSSD1306_I2C #OLED Screen Library
Zeit importieren
aus der picobricks importWS2812 #ws8212-Bibliothek
#OLED-Bildschirmeinstellungen
BREITE=128HÖHE=64
sda=machine.Pin(4)
scl=machine.Pin(5)
#initialisieren Sie die digitalen Pins 4 und 5 als AUSGANG für die OLED-Kommunikation
i2c=machine.I2C(0,sda=sda, scl=scl, freq=1000000)
neo =WS2812(pin_num=6, num_leds=1, helligkeit=0,3)#digitalen Pin 6 als AUSGANG für NeoPixel initialisieren
oled =SSD1306_I2C(128,64, i2c)
ldr =ADC(Pin(27))#digitalen Pin 6 als AUSGANG für NeoPixel initialisieren
button =Pin(10,Pin.IN,Pin.PULL_DOWN)#digitalen Pin 10 als EINGANG für die Schaltfläche initialisieren
Summer =PWM(Pin(20, Pin.OUT))#digitalen Pin 20 als AUSGANG für den Summer initialisieren
Buzzer.freq(1000)BLACK=(0,0,0)WHITE=(255,255,255)
#RGB Schwarz-Weiß-Farbcode
oled.fill(0)
oled.show()
neo.pixels_fill(SCHWARZ)
neo.pixels_show()if ldr.read_u16()<4000:
wakeup = True
anders:
wakeup = Falsch
while True:while wakeup==False:
oled.fill(0)
oled.show()
oled.text("Gute Nacht",25,32)
oled.show()
#Auf OLED anzeigen und „Gute Nacht“ drucken
utime.sleep(1)if ldr.read_u16()40000:
wakeup= Falsch
utime.sleep(1)
#warte eine Sekunde
Arduino C-Codes der PicoBricks
vom Maschinenimport Pin,I2Cfrom picobricks importSSD1306_I2Cimport utime
Urandom importieren
_thread importieren
aus Picobricks importWS2812WIDTH=128HEIGHT=64
sda=machine.Pin(4)
scl=machine.Pin(5)
i2c=machine.I2C(0,sda=sda, scl=scl, freq=1000000)
ws =WS2812(pin_num=6, num_leds=1, Helligkeit=0,3)
oled =SSD1306_I2C(WIDTH,HEIGHT, i2c)
Schaltfläche =Pin(10,Pin.IN,Pin.PULL_DOWN)ROT=(255,0,0)GRÜN=(0,255,0)BLAU=(0,0,255)WEISS=(255,255,255)SCHWARZ=(0,0,0 )
oled.fill(0)
oled.show()
ws.pixels_fill(SCHWARZ)
ws.pixels_show()
global button_pressed
Punktzahl=0
button_pressed = Falsch
def random_rgb():
globale LED-Farbe
ledcolor=int(urandom.uniform(1,4))if ledcolor ==1:
ws.pixels_fill(ROT)
ws.pixels_show()
elif ledcolor ==2:
ws.pixels_fill(GRÜN)
ws.pixels_show()
elif ledcolor ==3:
ws.pixels_fill(BLAU)
ws.pixels_show()
elif ledcolor ==4:
ws.pixels_fill(WHİTE)
ws.pixels_show()
def random_text():
globaler Oledtext
oledtext=int(urandom.uniform(1,4))if oledtext ==1:
oled.fill(0)
oled.show()
oled.text("ROT",45,32)
oled.show()
elif oledtext ==2:
oled.fill(0)
oled.show()
oled.text("GRÜN",45,32)
oled.show()
elif oledtext ==3:
oled.fill(0)
oled.show()
oled.text("BLAU",45,32)
oled.show()
elif oledtext ==4:
oled.fill(0)
oled.show()
oled.text("WHITE",45,32)
oled.show()
def button_reader_thread():while True:
global button_pressed
if button_pressed == False:if button.value()==1:
button_pressed = True
globale Punktzahl
globaler Oledtext
globale LED-Farbe
wenn ledcolor == oledtext:
Punktzahl +=10sonst:
Punktzahl -=10
utime.sleep(0.01)
_thread.start_new_thread(button_reader_thread,())
oled.text("Das Spiel beginnt",0,10)
oled.show()
utime.sleep(2)for i inrange(10):for j inrange(10):random_text()random_rgb()
button_pressed=False
utime.sleep(1.5)
oled.fill(0)
oled.show()
ws.pixels_fill(SCHWARZ)
ws.pixels_show()
utime.sleep(1.5)
oled.fill(0)
oled.show()
oled.text("Ihre Gesamtpunktzahl:",0,20)
oled.text(str(score),30,40)
oled.show()