Sie haben sicher schon einmal den Ausdruck gehört, dass Computer mit Nullen und Einsen arbeiten. 0 steht für das Fehlen von Elektrizität und 1 für das Vorhandensein von Elektrizität. 0 und 1 ergeben zusammen aussagekräftige Daten. In elektronischen Systemen können Nullen und Einsen zur direkten Steuerung des Systems verwendet werden. Ist die Tür geschlossen oder nicht? Ist das Licht an oder aus? Ist das Bewässerungssystem eingeschaltet oder nicht? Um solche Informationen zu erhalten, wird eine Statusprüfung durchgeführt.
In diesem Projekt werden wir ein Aufmerksamkeits- und Konzentrationsentwickler-Buzz-Wire-Spiel elektronisch erstellen. Es wird ein Leiterdraht verwendet, der Summer, und das LED-Modul mit PicoBricks. Während der Vorbereitung dieses Projekts lernen Sie eine Eingabetechnik kennen, die keine ist Taste wird aber wie ein Knopf verwendet.
Details und Algorithmus
Ziel des Spiels ist es, ein um ein anderes Kabel geschlungenes Kabel zu bewegen, ohne es zu berühren.
Aufgrund der Leitfähigkeit der Kabel schließen sie bei gegenseitiger Berührung den Stromkreis und erzeugen einen Ton.
Der Spieler wird aufgefordert, die Taste zu drücken, um das Spiel zu starten. Wir setzen den Timer zurück, nachdem der Benutzer die Taste gedrückt hat.
Dann setzen wir den mit dem GPIO1-Pin verbundenen Leiterdraht auf den HIGH-Status. Ein Ende des vom Player gehaltenen Kabels wird mit dem GND-Pin der PicoBricks verbunden. Wenn der Spieler mit dem Überbrückungskabel in seiner Hand den leitenden Draht berührt, wird der GPIO1-Pin geerdet und fällt auf den LOW-Status. PicoBricks erkennt dies und gibt eine akustische und schriftliche Warnung aus.
Anschließend wird bekannt gegeben, dass das Spiel vorbei ist, und es erfolgt eine Rückmeldung mit Licht, Text und Ton. Die verstrichene Zeit wird auf dem angezeigt OLED-Bildschirm in Millisekunden. Nach 5 Sekunden wird der Player aufgefordert, die Taste zum Neustarten zu drücken.
Komponenten
1X PicoBricks
1X 15-20 cm leitfähiger Draht mit einer Dicke von 0,8 mm
2X Stecker-Stecker-Überbrückungskabel
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.
Bauphasen des Projekts
Zusammen mit dem PicoBricks-Basiskit,
1: 2 20-cm-Stecker-Stecker-Überbrückungskabel. Ein Ende des an den GND anzuschließenden Kabels wird 4-5 cm abisoliert und zu einem Ring verarbeitet.
2: 15–20 cm leitfähiger Draht mit einer Dicke von 0,8 mm. Bereiten Sie Ihre Materialien vor.
Biegen Sie den Leiterdraht auf Protoboard Wie Sie möchten, und führen Sie es durch die Löcher. Bevor Sie ein Ende durchführen, müssen Sie das männliche Ende, das mit dem GND-Pin auf dem PicoBoard verbunden ist, durch das andere Ende des Kabels führen, das Sie zu einem Ring geformt haben.
3: Leiterdraht
4: Überbrückungskabel, dessen eines Ende mit dem verbunden ist GND Stecknadel mit Schlaufenende.
5: Führen Sie ein Ende des Überbrückungskabels, das über beide männlichen Enden verfügt, in das Loch direkt neben dem Ende des leitenden Drahts, den Sie auf dem Protoboard platziert haben
6: Verdrehen Sie das Ende des Überbrückungskabels und das Ende des Leiterdrahts unter dem Protoboard.
7: Biegen Sie das andere Ende des auf dem Protoboard platzierten Leiterdrahts so, dass er nicht herauskommt.
8: Verbinden Sie das andere männliche Ende des Überbrückungskabels, das Sie in Schritt 6 um das Ende des Leiterdrahts gewickelt haben, mit dem Pin Nr. GPIO1 auf dem Picoboard
Wenn Sie die Installation abgeschlossen haben, können Sie das Spiel nach der Installation des Codes starten. Viel Spaß.
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, Timer #, um auf die Hardware auf dem Pico zuzugreifen
von picobricks importSSD1306_I2C #OLED Screen Library
Aus der Utime-Bibliothek „Sleep # Time“ importieren
#OLED-Bildschirmeinstellungen
BREITE=128HÖHE=64
sda=machine.Pin(4)#digitale Pin 4 und 5 als AUSGANG für die OLED-Kommunikation initialisieren
scl=machine.Pin(5)
i2c=machine.I2C(0,sda=sda, scl=scl, freq=1000000)
oled =SSD1306_I2C(WIDTH,HEIGHT, i2c)
Wire=Pin(1,Pin.OUT)#digitalen Pin 1 als AUSGANG initialisieren
led =Pin(7,Pin.OUT)#digitale Pin 7 und 5 als AUSGANG für LED initialisieren
Buzzer=Pin(20, Pin.OUT)#digitalen Pin 20 als AUSGANG für Summer initialisieren
button=Pin(10,Pin.IN,Pin.PULL_DOWN)#digitalen Pin 10 als EINGANG für die Schaltfläche initialisieren
endtime=0while True:
led.low()
oled.fill(0)
oled.show()
oled.text("",0,0)
oled.text("Drücken Sie die Taste",0,17)
oled.text("ZU ANFANGEN!",25,35)
oled.show()
#Wenn die Schaltfläche „0“ ist, sagt OLED „SPIEL GESTARTET“, während button.value()==0:print("Drücken Sie die Schaltfläche")
oled.fill(0)
oled.show()
oled.text("GAME",25,35)
oled.text("STARTED",25,45)
oled.show()
draht.high()
timer_start=utime.ticks_ms()
#Wenn Wire „1“ ist, sagt OLED „GAME OVER“, während wire.value()==1:print("Started")
endtime=utime.ticks_diff(utime.ticks_ms(), timer_start)print(endtime)
oled.fill(0)
oled.show()
oled.text("GAME OVER!",25,35)
oled.text(endtime +"ms",25,45)
oled.show()
led.high()#LED an
Buzzer.high()#Summer an
schlafen(5)#Verzögerung
Arduino C-Codes der PicoBricks
#enthalten
#include „ACROBOTIC_SSD1306.h“
int Zeit=0;
unsigned long Old_Time=0;voidsetup(){// Geben Sie hier Ihren Setup-Code ein, um ihn einmal auszuführen:pinMode(20,OUTPUT);pinMode(7,OUTPUT);pinMode(1,OUTPUT);pinMode(10,INPUT);
Wire.begin();
oled.init();
oled.clearDisplay();
#ifdefined(__AVR_ATtiny85__)&&(F_CPU==16000000)clock_prescale_set(clock_div_1);
#endif
}voidloop(){// Fügen Sie hier Ihren Hauptcode ein, um ihn wiederholt auszuführen:digitalWrite(7,LOW);
oled.setTextXY(2,1);
oled.putString("BUZZ WIRE GAME");
oled.setTextXY(4,2);
oled.putString("Taste drücken");
oled.setTextXY(5,3);
oled.putString("TO START!");while(!(digitalRead(10)==1)){}
oled.clearDisplay();
oled.setTextXY(3,6);
oled.putString("GAME");
oled.setTextXY(5,4);
oled.putString("STARTED");digitalWrite(1,HIGH);
Old_Time=millis();while(!(digitalRead(1)==0)){
Time=millis()-Old_Time;}String(String_Time)=String(Time);
oled.clearDisplay();
oled.setTextXY(3,4);
oled.putString("GAME OVER");
oled.setTextXY(5,4);
oled.putString(String_Time);
oled.setTextXY(5,10);
oled.putString("ms");digitalWrite(7,HIGH);digitalWrite(20,HIGH);delay(500);digitalWrite(20,LOW);delay(5000);
Zeit=0;
Old_Time=0;
oled.clearDisplay();}