sitemap link mailform link home

Musik mit Arduino UNO

Mit Hilfe eines sehr einfachen Befehls kann man Töne / Musik mit dem Arduino UNO erzeugen:

tone(Pin, Tonhöhe, Länge)

Sofern man verhindern möchte, dass die Töne ohne Pause gespielt werden, mus  man noch Delays einfügen. Für das folgende kleine Programm wurde ein dynamischer Lausprecher mit einem Vorwiderstand 470 Ohm an Pin 12 angeschlossen.

******************************************************

// Erzeugen von Tönen
// Autor: Niels Nikolaisen, Datum: 27. 2. 2017
// Der Anfang des beliebten Liedes "Alle meine Entchen"
#define LSP_PIN 12 // Anschluss für Lautsprecher
#define VIERTEL 400
#define HALBE 800
#define GANZE 1600
#define PAUSE 30
#define c1 261
#define d1 294
#define e1 329
#define f1 349
#define g1 392
#define a1 440
#define b1 493
#define c2 523

void setup() {
pinMode(13, OUTPUT); // Schaltet den Pin 13 auf Ausgang
}

void loop() {
// tone(Pin, Tonhöhe, Länge)
tone(LSP_PIN, c1, VIERTEL);
delay(PAUSE + VIERTEL);
tone(LSP_PIN, d1, VIERTEL);
delay(PAUSE + VIERTEL);
tone(LSP_PIN, e1, VIERTEL);
delay(PAUSE + VIERTEL);
tone(LSP_PIN, f1, VIERTEL);
delay(PAUSE + VIERTEL);
tone(LSP_PIN, g1, HALBE);
delay(PAUSE + HALBE);
tone(LSP_PIN, g1, HALBE);
delay(PAUSE + HALBE);
exit(0); // Programm beenden
}

******************************************************

Siehe auch:

https://www.arduino.cc/en/Tutorial/ToneMelody?from=Tutorial.Tone

Externer Link https://www.arduino.cc/en/Reference/Tone

Externer Link https://www.arduino.cc/en/Tutorial/ToneMelody?from=Tutorial.Tone

Externer Link http://funduino.de/nr-08-toene-erzeugen

 


 

Arduino-Keyboard mit 3 Tasten

Damit lässt sich zwar noch nicht Klavier spielen - aber drei verschiedene Töne sind möglich. Kiss
Es muss ein dynamischer Lausprecher mit einem Vorwiderstand von 470 Ohm an Pin 2 angeschlossen werden. Bei Verwendung eines Piezo-Lautsprechers benötigt man keinen Vorwiderstand.

Musikkeyboard

 

Piezomikrofon als Drumpad und Steuerung der Tonhöhe


// Steuerung der Tonhöhe und Ausgabe
// mit Lautsprecher

#define CURSORPOS 12
#define SCHWELLWERT 100
#define SAMPLES 100
#define LSP_PORT 8

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

int Messwert = 0;

void setup() {
  lcd.begin(16, 2);
  Serial.begin(9600);
}

void loop() {
  Messwert = analogRead(A0);
  int MesswertAlt = Messwert;
  if (Messwert > SCHWELLWERT)
  {
    for (int i = 0; i < SAMPLES; i++)
    {
      Messwert = analogRead(A0);
      if ((MesswertAlt > Messwert) && (MesswertAlt > SCHWELLWERT)) Messwert = MesswertAlt;
    }

    for (int i = 0; i < 4; i++)
    {
      lcd.setCursor(CURSORPOS + i, 1);
      lcd.print(" ");
    }
    // 0 = links, 1 = 2. Zeile
    lcd.setCursor(CURSORPOS, 1);
    lcd.print(Messwert);
    Serial.println(Messwert);
    tone(LSP_PORT, Messwert, 300);
    delay(300);
  }
}

 

.

Letzte Änderung:
March 23. 2023 21:04:40
«    top    »