Inhaltsverzeichnis
Ihrer Fantasie sind keine Grenzen gesetzt, was Sie mit PicoBricks erreichen können!
Mit PicoBricks können Sie mit Ihrer Kreativität die meisten Spiele erstellen, die Sie möchten. Beispielsweise kann das Erstellen von Labyrinthspielen ziemlich viel Spaß machen. Mit der neuen Version von PicoBricks können Sie es mit einer Fernbedienung steuern!
Wenn wir über das Labyrinthspiel sprechen müssen und wie es gespielt werden sollte; Spieler haben die Möglichkeit, die Bewegung des Balls mit einer Fernbedienung oder einem vergleichbaren Gerät zu steuern, mit dem Ziel, ein Loch oder einen Zielpunkt zu erreichen. Beim Navigieren durch das Labyrinthspiel halten die Spieler das Gleichgewicht des Balls aufrecht und überwinden Hindernisse, während sie gleichzeitig versuchen, den Ball gekonnt an sein Ziel zu führen. Das Labyrinthspiel erfordern Konzentration, Hand-Auge-Koordination und Geduld und bieten den Spielern ein fesselndes und lohnendes Erlebnis.
Details und Algorithmus
Wir haben das Labyrinth-Spiel speziell entwickelt, um die drahtlose Steuerung eines Servomotors mithilfe von PicoBricks und einem zu ermöglichen UND Empfänger. Unser Programm ist so konzipiert, dass es von einer IR-Fernbedienung gesendete Signale erkennt und dann den Servomotor anweist, basierend auf diesen Signalen verschiedene Aktionen wie Aufwärts-, Abwärts-, Links-, Rechtsbewegung oder Stoppen auszuführen.
Wir haben die Winkel des Servomotors sorgfältig berechnet und sie mithilfe eines PWM-Signals (Pulsweitenmodulation) in präzise Positionen übersetzt. Unser Programm dient nicht nur als grundlegendes Beispiel für Automatisierungsprojekte und ferngesteuerte Geräte, sondern umfasst auch ein mechanisches Design, das mit einem 3D-Drucker erstellt wurde. Interessierte können sich in den Code vertiefen, um seine Funktionalität zu verstehen und ihn für ähnliche Projekte zu nutzen.
Wenn Sie möchten, können Sie Ihr eigenes Labyrinthspiel erstellen und es auf Ihrem 3D-Drucker ausdrucken, oder Sie können die STL-Datei herunterladen und sie mithilfe des Downloads auf Ihrem 3D-Drucker ausdrucken Taste unter.
HERUNTERLADENSchaltplan
MicroBlocks-Codes von PicoBricks
PicoBlockly-Codes von PicoBricks
MicroPython-Codes von PicoBricks
Der MicroPython-Code wird unten angezeigt. Denken Sie daran, das einzustellen Grad Und Grad2 Achten Sie bei der Codierung auf Werte, da die Servos unterschiedlich angeschlossen sein können.
von Zeit zu Zeit Schlaf importieren
vom Maschinenimport-Pin
aus Picobricks importieren NEC_16
aus Picobricks IR_RX importieren
vom Maschinenimport PWM
von Math Import Fabs
def ir_callback(data, addr, ctrl):
globale ir_data
globale ir_addr, data_rcvd
wenn Daten > 0:
ir_data = Daten
ir_addr = Adr
print('Data {:02x} Addr {:04x}'.format(data, addr))
data_rcvd = True
ir = NEC_16(Pin(0, Pin.IN), ir_callback)
ir_data = 0
data_rcvd = Falsch
pwm_2 = PWM(Pin(22))
pwm_2.freq(50)
def CalculateAngle(Winkel):
Winkel = Fabs((Winkel * (6000 / 180)) + 2000)
Winkel = rund(Winkel)
Rückkehrwinkel
def up():
global dare_question_long, blank, Degree, Degree2, i
für count in range((8)):
Grad += 2
pwm_2.duty_u16(CalculateAngle(Grad))
pwm_1 = PWM(Pin(21))
pwm_1.freq(50)
def left():
global dare_question_long, blank, Degree, Degree2, i
für count in range((8)):
Grad2 += 2
pwm_1.duty_u16(CalculateAngle(degree2))
def down():
global dare_question_long, blank, Degree, Degree2, i
für count in range((8)):
Grad -= 2
pwm_2.duty_u16(CalculateAngle(Grad))
auf jeden Fall richtig():
global dare_question_long, blank, Degree, Degree2, i
für count in range((8)):
Grad2 -= 2
pwm_1.duty_u16(CalculateAngle(degree2))
def stop():
global dare_question_long, blank, Degree, Degree2, i
Grad = 0
Grad2 = 0
pwm_1.duty_u16(CalculateAngle(Grad))
pwm_2.duty_u16(CalculateAngle(degree2))
Grad = 60
Grad2 = 60
ich = 0
während True:
if data_rcvd == True:
data_rcvd = Falsch
wenn ir_data == IR_RX.number_up:
hoch()
elif ir_data == IR_RX.number_down:
runter()
elif ir_data == IR_RX.number_left:
links()
elif ir_data == IR_RX.number_right:
Rechts()
elif ir_data == IR_RX.number_ok:
stoppen()
Arduino C-Codes von PicoBricks
#include
#include
#include „ACROBOTIC_SSD1306.h“
#include
#include
#include
#define IR_RECEIVE_PIN 0
Servo servo1;
Servo servo2;
int Winkel1, Winkel2;
void servoBalance(){
Winkel1 = 90; // den horizontalen Ebenenwinkel festlegen
Winkel2 = 90;
setServoAngle();
}
void setServoAngle(){
servo1.write(angle1);
servo2.write(angle2);
}
void setup() {
Serial.begin(9600);
Wire.begin();
oled.init();
oled.clearDisplay();
pinMode(0,INPUT);
IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);
servo1.attach(21);
servo2.attach(22);
servoBalance();
}
void loop() {
setServoAngle();
Verzögerung (500);
if (IrReceiver.decode()) {
int a = (IrReceiver.decodedIRData.decodedRawData);
Serial.println(a);
IrReceiver.resume(); // Den nächsten Wert erhalten
if(a == -417792256){
Winkel2+=30;
}else if (a == -1387069696){
Winkel2-=30;
}sonst wenn (a == -150405376){
Winkel1-=30;
}sonst wenn (a == -1520763136){
Winkel1+=30;
}else if (a == -484638976){
servoBalance();
}
}
}