Banner Ausblenden
Kleines Logo

Willkommen auf PSI-Online

das Multitool

 Auf dem Multi-Tool werden 3 Punkte des Arduinos näher betrachtet:

-die LEDs

- der passive Buzzer

-der Servomotor

Vorherige Kenntnisse:

-Tastermatrix

Auf dem Multitool sollen über die Tastermatrix 3 verschiedene Aktionen ausgeführt weren können. Eine Reihe der Matrix (in diesem Fall Reihe1) ist eingeschaltet. Über die verschiedenen Spalten, die durch 'digitalRead' angesprochen werden, werden die 3 If-Schleifen der 3 Tools aktiviert.

If-Schlleife 1 aktiviert die LED-Lichterkette, die durch Auf- und Ablaufen der 4 LEDs eine weihnachtliche Lichterkette immitieren soll.

If-Schleife 2 aktiviert den Buzzer 'sven', der die Opening Melodie von StarWars spielt. hierbei wurden die einzelnen Notenwerte zuvor in Hertz umgewandelt. die Hertzwerte wiederum werden vom Buzzer als Töne ausgegeben. Die Delays machen den Rhythmus

If-Schleife 3 aktiviert den Servomotor. Dieser wird über eine Library gesteuert, dioe zuvor im Setup aktiviert wurde. Die Eingabe der Zahlen in 'servoblau.write(Zahl)' bestimmt, um wie viel Grad der Servo sich im Uhrzeigersin dreht

 

Zur Schaltung:

 

 

 

#include <Servo.h> //Die Servobibliothek wird aufgerufen. Sie wird benötigt, damit die Ansteuerung des Servos vereinfacht wird.int reihe1=13;
int reihe1=13;
int reihe2=12;
int reihe3=11;
int reihe4=10;
int spalte1=9;
int spalte2=8;
int spalte3=7;
int spalte4=6;
int LED1=5;
int LED2=4;
int LED3=3;
int LED4=2;
int sven=1;

 

Servo servoblau; //Erstellt für das Programm ein Servo mit dem Namen „servoblau“

 


                                                                                                                                                                                                  



void setup()
{ //legt jede Zeile als Output und jede Spalte als Input fest
 pinMode (reihe1, OUTPUT);
 pinMode (reihe2, OUTPUT);
 pinMode (reihe3, OUTPUT);
 pinMode (reihe4, OUTPUT);
 pinMode (spalte1, INPUT);
 pinMode (spalte2, INPUT);
 pinMode (spalte3, INPUT);
 pinMode (spalte4, INPUT);
 pinMode (LED1, OUTPUT);
 pinMode (LED2, OUTPUT);
 pinMode (LED3, OUTPUT);
 pinMode (LED4, OUTPUT);
 pinMode (sven, OUTPUT);
 servoblau.attach(0); //Das Setup enthält die Information, dass das Servo an der Steuerleitung  mit Pin 0 verbunden wird

 
}

void loop() {//die LEDs sind aus, es sei denn sie werden vom Taster angesprochen

digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
digitalWrite(LED4, LOW);


digitalWrite(reihe1, HIGH);//Reihe 1 ist immer angeschaltet



  if(digitalRead(spalte4) == HIGH)//Erhält die Spalte 4 ein Signal, werden die LEDs eingeschaltet

  {
  digitalWrite(LED1, HIGH);
  delay(200);
  digitalWrite(LED1,LOW);
  delay(200);
  digitalWrite(LED2, HIGH);
  delay(200);
  digitalWrite(LED2,LOW);
  delay(200);
  digitalWrite(LED3, HIGH);
  delay(200);
  digitalWrite(LED3,LOW);
  delay(200);
  digitalWrite(LED4, HIGH);
  delay(200);
  digitalWrite(LED4,LOW);
  delay(2);

 
  }
 
 
   
 

    
 else//wenn von Spalte 4 kein Signal(HIGH) kommt, bleiben die LEDs aus
{
   digitalWrite(LED1, LOW);
}
 if(digitalRead(spalte2)==HIGH)//wenn spalte 2 als HIGH ausgelesen wird, wird der Buzzer 'Sven' angesprochen
{
 tone(sven,293);//folgende Schaltung (die Notenwerte  in Hertz umgewandelt) spielt die ersten 16 Takte des StarWars Openings
 delay(100);
 noTone(sven);
 delay(100);
 tone(sven,293);
 delay(100);
 noTone(sven);
 delay(100);
 tone(sven,293);
 delay(100);
 noTone(sven);
 delay(100);
 tone(sven,391);
 delay(400);
 noTone(sven);
 delay(400);
 tone(sven,587);
 delay(400);
 noTone(sven);
 delay(400);
 tone(sven,523);
 delay(100);
 noTone(sven);
 delay(100);
 tone(sven,466);
 delay(100);
 noTone(sven);
 delay(100);
 tone(sven,440);
 delay(100);
 noTone(sven);
 delay(100);
 tone(sven,783);
 delay(400);
 noTone(sven);
 delay(400);
 tone(sven,587);
 delay(400);
 noTone(sven);
 delay(400);
  tone(sven,523);
 delay(100);
 noTone(sven);
 delay(100);
 tone(sven,466);
 delay(100);
 noTone(sven);
 delay(100);
 tone(sven,440);
 delay(100);
 noTone(sven);
 delay(100);
 tone(sven,783);
 delay(400);
 noTone(sven);
 delay(400);
 tone(sven,587);
 delay(400);
 noTone(sven);
 delay(400);
   tone(sven,523);
 delay(100);
 noTone(sven);
 delay(100);
 tone(sven,466);
 delay(100);
 noTone(sven);
 delay(100);
  tone(sven,523);
 delay(100);
 noTone(sven);
 delay(100);
 tone(sven,440);
 delay(400);
 noTone(sven);
 delay(400);
}


else //bei keinem Signal von Spalte2 bleibt der Buzzer 'Sven' stumm
{
 noTone(sven);
}

if (digitalRead(spalte1)==HIGH)
{ //Im loop wird über den write-Befehl 'servoblau.write(Grad)' das Servo angesteuert.
servoblau.write(0); //Position 1 ansteuern mit dem Winkel 0°
delay(3000);
servoblau.write(90); //Position 2 ansteuern mit dem Winkel 90°
delay(3000);
servoblau.write(180); //Position 3 ansteuern mit dem Winkel 180°
delay(3000);
servoblau.write(45); //Position 4 ansteuern mit dem Winkel 45°
delay(3000);
}
}
 

Erstellt: Luis Börner (22.01.2020) Letzte Änderung: Luis Börner (22.01.2020)