Zum Inhalt springen

#23 Air Piano-Projekt mit PicoBricks

02 Nov 2023
#23 Air Piano Project With PicoBricks

Mit der Entwicklung der elektronischen Technologie wurden Musikinstrumente digitalisiert, die schwierig herzustellen und teuer sind und einen hochwertigen Klang erzeugen. Klaviere sind eines dieser Instrumente. Jede Taste eines Digitalpianos erzeugt elektrische Signale mit einer anderen Frequenz. Somit kann er über seine Lautsprecher 88 verschiedene Töne wiedergeben. Faktoren wie die Verzögerungszeit der Tasten digitaler Instrumente, die Qualität des Lautsprechers und die Auflösung des Klangs haben sich als Faktoren erwiesen, die die Qualität beeinflussen. Bei E-Gitarren werden die Schwingungen der Saiten statt der Tasten digitalisiert. Bei Blasinstrumenten hingegen können die gespielten Noten dank der an den Tonausgang angeschlossenen hochauflösenden Mikrofone in elektrische Signale umgewandelt und aufgezeichnet werden. Diese Entwicklung in der elektronischen Technologie hat den Zugang zu teuren Musikinstrumenten erleichtert, die Musikausbildung ist vielfältiger geworden und hat sich einem breiteren Publikum zugänglich gemacht.

In diesem Projekt werden wir mit PicoBricks ein einfaches Klavier bauen, das 7 Noten spielen kann. Der Lautsprecher dieses Klaviers wird der sein Summer. Der Ultraschallsensor fungiert als Tasten des Klaviers.

Details und Algorithmus

In diesem Projekt werden wir eine Klavieranwendung mit dem Ultraschall-Abstandssensor HC-SR04 und dem Summermodul auf PicoBricks erstellen. Wir lassen den Summer je nach den vom Abstandssensor kommenden Werten unterschiedliche Töne spielen und erzeugen Melodien, indem wir unsere Hand näher an den Sensor heran und von ihm weg bewegen. Darüber hinaus drucken wir sofort die Distanz und die gespielten Noteninformationen auf dem Gerät aus OLED-Bildschirm.

Komponenten

1X PicoBricks
1X HC-SR04 Ultraschallsensor
Überbrückungskabel
Einfache Verbindungskabel

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

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 klicken Taste.

Mikroblöcke führen TabI aus

MicroPython-Codes der PicoBricks

 


Vom Maschinenimport Pin, PWM, I2C
aus utime import schlaf
Zeit importieren
Von Picobricks importieren Sie SSD1306_I2C
_thread importieren

# Definieren Sie die Bibliotheken
Summer = PWM(Pin(20, Pin.OUT))
Trigger = Pin(15, Pin.OUT)
echo = Pin(14, Pin.IN)

# Definieren Sie die Eingangs- und Ausgangspins
BREITE = 128
HÖHE = 64

# OLED-Bildschirmeinstellungen
sda = machine.Pin(4)
scl = machine.Pin(5)
i2c = machine.I2C(0, sda=sda, scl=scl, freq=1000000)

# Initialisieren Sie die digitalen Pins 4 und 5 als AUSGANG für die OLED-Kommunikation
oled = SSD1306_I2C(BREITE, HÖHE, i2c)
Maß = 0

def getDistance():
    trigger.low()
    utime.sleep_us(2)
    trigger.high()
    utime.sleep_us(5)
    trigger.low()
    while echo.value() == 0:
        signaloff = utime.ticks_us()
    while echo.value() == 1:
        signalon = utime.ticks_us()
    timepassed = signalon – signaloff
    Distanz = (verstrichene Zeit * 0,0343) / 2
    Rückweg

def airPiano():
    globales Maß
    während True:
        wenn 5 < Maß < 11:
            Buzzer.duty_u16(4000)
            Buzzer.freq(262)
            Schlaf(0,4)
        elif 10 < Takt < 16:
            Buzzer.duty_u16(4000)
            Buzzer.freq(294)
            Schlaf(0,4)
        # ... [Kodun geri kalanı bu şekilde devam ediyor]

# Spielen Sie den Ton ab, der durch den Wert des Abstandssensors bestimmt wird
während True:
    Measure = int(getDistance())
    oled.text("Distance " + str(measure) + " cm", 5, 30)
    oled.show()
    Schlaf(0,01)
    oled.fill(0)
    oled.show()

Arduino C-Codes der PicoBricks

 


#include 
#include „ACROBOTIC_SSD1306.h“
#include 
#define TRIGGER_PIN 15
#define ECHO_PIN 14
#define MAX_DISTANCE 400
NewPing-Sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
#define T_C 262
#define T_D 294
#define T_E 330
#define T_F 349
#define T_G 392
#define T_A 440
#define T_B 493
const int Buzzer = 20;

void setup() {
    pinMode(Summer,OUTPUT);
    Wire.begin();
    oled.init();
    oled.clearDisplay();
    #if definiert(__AVR_ATtiny85__) && (F_CPU == 16000000)
    clock_prescale_set(clock_div_1);
    #endif
}

void loop() {
    Verzögerung(50);
    int distance = sonar.ping_cm();
    if(Abstand > 5 & Abstand < 11) {
        Ton (Summer, T_C);
    }
    // ... [Kodun geri kalanı bu şekilde devam ediyor]
    oled.clearDisplay();
    oled.setTextXY(2, 4);
    oled.putString("Entfernung: ");
    oled.setTextXY(4, 6);
    String string_distance = String(distance);
    oled.putString(string_distance);
    oled.setTextXY(4, 8);
    oled.putString("cm");
}

GitHub-Seite
Vorheriger Beitrag
Nächster Beitrag

Danke fürs Abonnieren!

Diese E-Mail wurde registriert!

Shoppen Sie den Look
Wählen Sie Optionen

Bearbeitungsoption

Benachrichtigung wieder auf Lager

Vergleichen

Produkt ArtikelnummerBewertungBeschreibung Sammlung Verfügbarkeit Produktart Andere Details
this is just a warning
Anmeldung
Einkaufswagen
0 Artikel
Same Day Shipping No Extra Costs
Easy Returns Guarantee Return with Ease
Secure Checkout Secure Payment