Programmierung des Microcontrollers

Es ist hier wieder dir überlassen, ob du selber versuchen möchtest das Programm zu erstellen oder das Beispiel-Programm probieren nachzuvollziehen. Alle Programme sind in dem Ordner "Programme" abgelegt. Sie basieren auf einem ESP32.

Allgemeine Hinweise

Bei der Programmierung können verschiedene Programme verwendet werden. In diesem Kurs beschränken wir uns auf Ardublockly und die Arduino IDE.

Ardublockly arbeitet bausteinorientiert. Es gibt dabei vorgefertigte Programmzeilen, die in Blöcken dargestellt werden und von dem Programmierer nur per drag & drop in das Programm eingefügt werden müssen. Anschließend kann man sich das erstellte Programm in richtigen Programmzeilen, wie es bei Arduino IDE programmiert werden würde, anzeigen lassen. Es eignet sich also sehr gut für Anfänger. 

Ist das Programm fertig erstellt, kann es über eine interne Funktion der Software Ardublockly automatisch in ein neues Projekt in die Arduino IDE importiert oder per Copy/Paste vom Anwender in das neu erstellte Projekt in die Arduino IDE eingefügt werden. Von dort aus kann das Projekt bzw. das Programm nun auf den Mikrocontroller per USB-Verbindung übertragen und getestet werden. 

Wenn Du allerdings schon Erfahrungen in der Mikrocontroller Programmierung haben, kannst Du auch direkt in der Arduino IDE programmieren.


Funktionsbeschreibung des Programms

Die Programme, welches Du selber erstellst oder im Ordner "Programme" finden kannst, sind sehr analog.

In den Programmen für den aktiven und den passiven Summer sind jeweils einer von beiden, ein Taster und der Mikrocontroller vorhanden. Der Taster ist mit der einen Seite an die Versorgungsspannung von 3,3 V und mit der anderen Seite an einen Pin des Mikrocontrollers (im Beispiel G23) angeschlossen. Wird der Taster betätigt, so entsteht eine leitende Verbindung zwischen beiden Seiten und der Mikrocontroller erkennt an seinem Pin (im Beispiel G23) ein HIGH-Signal. Durch das Erkennen dieses HIGH-Signals wird der Pin des aktiven bzw. passiven Buzzers auf HIGH gesetzt, was dazu führt, dass er einen Ton erzeugt. Beim passiven Summer kommt noch hinzu, dass die erzeugte Tonhöhe über eine separate Funktion variiert und somit z.B. auch eine Sirene erzeugt werden kann.
Wird der Taster wieder losgelassen, erhält der Pin des Mikrocontrollers (im Beispiel G23) wieder ein LOW-Signal und der Akustikmelder hört auf einen Ton zu erzeugen. 


Programmieren mit Ardublockly - Aktiver Summer

Zuerst wird hier ein neues Projekt erstellt. Anschließend müssen Sie unter Edit -> Preferences den verwendeten Mikrocontroller auswählen. Bei unserm Beispiel wäre das der ESP32. Das würde dann folgender Maßen aussehen:

Zu sehen ist das Fenster, wo man den Mikrocontroller auswählen kann

Abbildung: Ardublockly Einstellungen
Quelle: BBS2 Wolfsburg

Nun kannst Du über die Reiter auf der linken Seite die gewünschten Blöcke auswählen und rechts im Fenster den dazugehörigen Quelltext sehen. Das fertige Programm für den aktiven Summer kannst Du unten nochmal sehen. Das Programm ist zusätzlich im Ordner "Programme" hinterlegt.

Ardublockly_aktiv

Abbildung: Ardublockly Aktiver Summer
Quelle: BBS2 Wolfsburg

Programmieren mit der Arduino IDE - Aktiver Summer

Wenn du direkt in der Arduino IDE programmieren möchtest, musst du zuerst wieder den richtigen Mikrocontroller auswählen. Hierzu musst du unter dem Reiter "Werkzeuge" das richtige Board auswählen. Gegebenenfalls musst du eine neue Bibliothek herunterladen.

Anschließend kannst du mit der Programmierung beginnen. Zuerst solltest du wieder die richtigen Pins deklarieren, sprich die Pins an denen dein aktiver Summer und Taster angeschlossen sind. Nun kannst du die einzelnen Funktionen nach der Funktionsbeschreibung programmieren. Das Ergebnis kann dann wie folgt aussehen:

int tasterPin = 4;
int aktivSummerPin = 2;

int statusTaster;

void setup()
{
Serial.begin(9600);

//Definition für die Pins
pinMode(tasterPin, INPUT);
pinMode(aktivSummerPin, OUTPUT);

}

void loop()
{
statusTaster = digitalRead(tasterPin);
if(statusTaster == HIGH)
{
Serial.println("Hupe aktiv");
digitalWrite(aktivSummerPin, HIGH); //Die Hupe wird aktiviert, also ein Dauerton gespielt.
}
else
{
Serial.println("Hupe inaktiv");
digitalWrite(aktivSummerPin, LOW); //Die Hupe is deaktiviert.
}

} 

Programmieren mit der Arduino IDE - Passiver Summer

Bei dem Programmieren des passiven Summers mit der Arduino IDE unterscheidet sich das Programm ein wenig stärker von dem, welches mit Ardublockly erstellt werden würde.

Das liegt daran, dass beim direkten Programmieren in der Arduino IDE nicht der Umweg über zwei neu geschriebene Funktionen ("tone" und "notone") gegangen werden muss, sondern man den Befehl "ledcWriteTone()" direkt verwenden kann. Das verkürzt das Programm ein wenig. Ansonsten ist die Funktionsweise identisch und die Programmierung verläuft analog dazu. Das fertige Programm kann dann wie folgt aussehen:

#include <SPI.h>

//Pin-Deklaration
int tasterPin = 4;
int passivSummerPin = 2;

int waitTime = 200;                   //Wartezeit in ms
int statusTaster;

void setup() {
  Serial.begin(9600);
  ledcSetup(0, 5000, 8);
  ledcAttachPin(passivSummerPin, 0);

  //Definition für die Pins
  pinMode(tasterPin, INPUT);
  pinMode(passivSummerPin, OUTPUT);
}
//Hier wird die Melodie festgelegt, in diesem Fall wird immer ein
//bestimmter Ton gespielt und dazwischen eine Pause von 200 ms gemacht.
//Der Teil kann beliebig variiert werden.
void hupe(float note)
{
  ledcWriteTone(0, note);
  delay(waitTime);
  ledcWriteTone(0, 0);
  delay(waitTime);
}

void loop() {
  statusTaster = digitalRead(tasterPin);
  if(statusTaster == HIGH)
  {
    Serial.println("Hupe aktiv");
    hupe(293.0);                          //Die Hupe wird aktiviert und die entsprechende Funktion aufgerufen.
  }
  else
  {
    Serial.println("Hupe inaktiv");
    digitalWrite(passivSummerPin, LOW);   //Die Hupe wird deaktiviert.
  }
}
Last modified: Monday, 22 January 2024, 2:27 PM