Banner Ausblenden
Kleines Logo

Willkommen auf PSI-Online

Keyboard

Ziel: Mit dem Arduino sollen Melodien gespielt werden können.

Material: - 1 Arduino Uno/ Mega

                - 7 große Taster

                 - 5 kleine Taster

                 - viele Kabel

                 -13 Wiederstände (10 oder 100 Kiloohmen)

                 - 2 Breadboards

Aufbau:

Klavier Bild Aufbau

Erklärung: Zuerst werden die Taster den entsprechenden Pins zugeordnet. Anschließend wird auch der Lautsprecher seinem Pin zugeordnet. Im void setup werden die Taster dann als Eingänge definiert, der Lautsprecher als Ausgang.

Drückt mann den "Oktavenschalter, so werden die Töne um eine Oktave angehoben. Wird er nicht gedrückt, bleiben die Töne in ihrer ursprünglichen Oktave. Drückt man zum Beispiel den ersten Taster, so wird der Ton c ausgegeben. Hät man dazu den "Oktavenschalter gedrückt, so wird der Ton c1 ausgegeben.

Der Code:


int buzz = 53;// Pin Lautsprecher
int button1 = 12;//"weiße Tasten"
int button2 = 11;
int button3 = 10;
int button4 = 9;
int button5 = 8;
int button6 = 7;
int button7 = 6;
int kl1 = 40;//"schwarze" Tasten
int kl2 = 41;
int kl3 = 42;
int kl4 = 43;
int kl5 = 44;
int okt = 22;// Taste zum Erhöhen der Oktave
void setup() {
  pinMode(button1, INPUT); // alle "weißen" Tasten werden als Eingänge deffiniert
  pinMode(button2, INPUT);
  pinMode(button3, INPUT);
  pinMode(button4, INPUT);
  pinMode(button5, INPUT);
  pinMode(button6, INPUT);
  pinMode(button7, INPUT);
  pinMode(kl1, INPUT); // alle "schwarzen" Tasten werden als Eingänge deffiniert
  pinMode(kl2, INPUT);
  pinMode(kl3, INPUT);
  pinMode(kl4, INPUT);
  pinMode(kl5, INPUT);
  pinMode(okt, INPUT);
  pinMode(buzz, OUTPUT); // der Lautsprecher wird als Ausgang deffiniert
 
}
void loop() {
  if (digitalRead(okt) == HIGH) //wenn die Taste gedrückt wir, werden die Töne um eine Oktave angehoben
  { if (digitalRead(button1) == HIGH) //Es wird überprüft, ob eine Taste gedrückt wird....
    {
      digitalWrite(buzz, HIGH); // ... wenn z.B. die "c-Taste" gedrückt wird, wird der Ton c ausgegeben
      tone(buzz, 261.63);// gib den Ton c1 an
      delay(200);
    }
    if (digitalRead(button2) == HIGH)
    {
      digitalWrite(buzz, HIGH);
      tone(buzz, 293.67);// gib den Ton d1 an
      delay(200);
    }
    if (digitalRead(button2) == LOW)
    {
      noTone(buzz);
    }
    if (digitalRead(button3) == HIGH)
    {
      digitalWrite(buzz, HIGH);
      tone(buzz, 329.63);// gib den Ton e1 an
      delay(200);
    }
    if (digitalRead(button4) == HIGH)
    {
      digitalWrite(buzz, HIGH);
      tone(buzz, 349.23);// gib den Ton f1 an
      delay(200);
    }
    if (digitalRead(button5) == HIGH)
    {
      digitalWrite(buzz, HIGH);
      tone(buzz, 392);// gib den Ton g1 an
      delay(200);
    }
    if (digitalRead(button6) == HIGH)
    {
      digitalWrite(buzz, HIGH);
      tone(buzz, 440);// gib den Ton a1 an
      delay(200);
    }
    if (digitalRead(button7) == HIGH)
    {
      digitalWrite(buzz, HIGH);
      tone(buzz, 493.88);// gib den Ton h1 an
      delay(200);
    }
    if (digitalRead(kl1) == HIGH)
    {
      digitalWrite(buzz, HIGH);
      tone(buzz, 277.18);// gib den Ton cis1 an
      delay(200);
    }
    if (digitalRead(kl2) == HIGH)
    {
      digitalWrite(buzz, HIGH);
      tone(buzz, 311.13);// gib den Ton dis1 an
      delay(200);
    }
    if (digitalRead(kl3) == HIGH)
    {
      digitalWrite(buzz, HIGH);
      tone(buzz, 369.99);// gib den Ton fis1 an
      delay(200);
    }
    if (digitalRead(kl4) == HIGH)
    {
      digitalWrite(buzz, HIGH);
      tone(buzz, 415.31);// gib den Ton gis1 an
      delay(200);
    }
    if (digitalRead(kl5) == HIGH)
    {
      digitalWrite(buzz, HIGH);
      tone(buzz, 466.16);// gib den Ton ais1 an
      delay(200);
    }
 
  }
  else // wenn die Oktavänderungstaste nicht gedrückt wird, bleiben die Töne auf ihrer ursprünglichen Oktave
  {
    if (digitalRead(button1) == HIGH) //Es wird überprüft, ob eine Taste gedrückt wird....
    {
      digitalWrite(buzz, HIGH); // ... wenn z.B. die "c-Taste" gedrückt wird, wird der Ton c ausgegeben
      tone(buzz, 130.81);// gib den Ton c an
      delay(200);
    }
    if (digitalRead(button2) == HIGH)
    {
      digitalWrite(buzz, HIGH);
      tone(buzz, 146.83);// gib den Ton d an
      delay(200);
    }
    if (digitalRead(button2) == LOW)
    {
      noTone(buzz);
    }
    if (digitalRead(button3) == HIGH)
    {
      digitalWrite(buzz, HIGH);
      tone(buzz, 164.81);// gib den Ton e an
      delay(200);
    }
    if (digitalRead(button4) == HIGH)
    {
      digitalWrite(buzz, HIGH);
      tone(buzz, 174.61);// gib den Ton f an
      delay(200);
    }
    if (digitalRead(button5) == HIGH)
    {
      digitalWrite(buzz, HIGH);
      tone(buzz, 196);// gib den Ton g an
      delay(200);
    }
    if (digitalRead(button6) == HIGH)
    {
      digitalWrite(buzz, HIGH);
      tone(buzz, 220);// gib den Ton a an
      delay(200);
    }
    if (digitalRead(button7) == HIGH)
    {
      digitalWrite(buzz, HIGH);
      tone(buzz, 246.94);// gib den Ton h an
      delay(200);
    }
    if (digitalRead(kl1) == HIGH)
    {
      digitalWrite(buzz, HIGH);
      tone(buzz, 138.59);// gib den Ton cis an
      delay(200);
    }
    if (digitalRead(kl2) == HIGH)
    {
      digitalWrite(buzz, HIGH);
      tone(buzz, 155.56);// gib den Ton dis an
      delay(200);
    }
    if (digitalRead(kl3) == HIGH)
    {
      digitalWrite(buzz, HIGH);
      tone(buzz, 185);// gib den Ton fis an
      delay(200);
    }
    if (digitalRead(kl4) == HIGH)
    {
      digitalWrite(buzz, HIGH);
      tone(buzz, 207.65);// gib den Ton gis an
      delay(200);
    }
    if (digitalRead(kl5) == HIGH)
    {
      digitalWrite(buzz, HIGH);
      tone(buzz, 233.63);// gib den Ton ais an
      delay(200);
    }
  }

}

 

Erstellt: Sebastian Grüttner (27.06.2017) Letzte Änderung: Jacob Busshart (28.06.2017)