Praxis

 

Praxis 10: Dimmen von vier LEDs geregelt über einen „Joystick“

 

Benötigtes Material:

  • ESP32 Dev Modul mit USB-Kabel
  • Breadboard
  • sechs Kabelstücke (männlich↔männlich)
  • acht Kabelstücke (weiblich↔männlich)
  • vier LEDs
  • vier Widerstände 220 Ω
  • ein Joystick (evtl. zweiteilig)

 

 

Der Joystick der den Elegoo-Boxen beiliegt enthält zwei Potentiometer, einen für die x- und einen für die y-Bewegung.

An den fünf Anschlusspins kann man der Beschriftung entnehmen, was jeweils angeschlossen werden muss.

 

Die vier LEDs sind in etwa so angeordnet wie die Richtungen an dem Joystick.

 

#include <Arduino.h>
/* -------------------------------------
    Praxis 10
    Dimmen von vier LEDs am ESP32
    einstellbar über einen Joystick
  -----------------------------------*/

int ReglerWert1, ReglerWert2;
int REGLER1 = 36;           // x-Richtung
int REGLER2 = 39;           // y-Richtung
const int ledxp = 25;
const int ledxn = 33;
const int ledyp = 26;
const int ledyn = 32;

int kalx;
int kaly;

void setup() {
  Serial.begin(115200);
  kalx = analogRead(REGLER1);
  kaly = analogRead(REGLER2);
  pinMode(REGLER1, INPUT);
  pinMode(REGLER2, INPUT);
  pinMode(ledxp, OUTPUT);
  pinMode(ledxn, OUTPUT);
  pinMode(ledyp, OUTPUT);
  pinMode(ledyn, OUTPUT);
}

void loop()
{
  ReglerWert1 = analogRead(REGLER1);
  ReglerWert2 = analogRead(REGLER2);
  Serial.print("x:");
  Serial.print(ReglerWert1);
  Serial.print("| y:");
  Serial.print(ReglerWert2);
  delay(25);
  ReglerWert1 = ReglerWert1 - kalx;
  ReglerWert2 = ReglerWert2 - kaly;
  if (ReglerWert1 >=0) {
    analogWrite (ledxp, map(ReglerWert1, 0, 4096-kalx, 0, 255));
    analogWrite (ledxn, map(0, 0, kalx, 0, 255));
    Serial.print("xn");
  }else{
    analogWrite (ledxn, map(-ReglerWert1, 0, kalx, 0, 255));
    analogWrite (ledxp, map(0, 0, 4096-kalx, 0, 255));
    Serial.print("xp");
  }
  if (ReglerWert2 >=0) {
    analogWrite (ledyp, map(ReglerWert2, 0, 4096-kaly, 0, 255));
    analogWrite (ledyn, map(0, 0, kaly, 0, 255));
    Serial.print("yn");
  }else{
    analogWrite (ledyn, map(-ReglerWert2, 0, kaly, 0, 255));
    analogWrite (ledyp, map(0, 0, 4096-kaly, 0, 255));
    Serial.print("yp");
  }
}

Ziel dieses Aufbaues und Sketches ist es, dass die entsprechende „Richtungs-LED“ umso heller leuchtet, je weiter der Joystick in diese Richtung geschoben wird.

Zur Kontrolle der „Rohdaten“ vom AD-Wandler werden diese über die Serielle Konsole ausgegeben.

Aufgaben

  1. Stecken Sie die Schaltung auf dem Breadboard nach dem obigen Plan zusammen.
    Beachten Sie dabei die Polung der LED.
  2. Geben Sie den Sketch in die IDE ein. Kompilieren und Übertragen Sie das Programm auf den ESP32.
  3. Bewegen Sie den Joystick und prüfen Sie, wie sich die Helligkeiten der LEDs verändert.
  4. Betrachten Sie auch die Zahlenreihe im seriellen Monitor. Achten Sie auf die richtige Baudrate!
  5. Erläutern Sie, wozu die Variablen kalx und kaly genutzt werden. Warum könnte das notwendig sein? Tauschen Sie sich hierzu mit Ihren Mitschülern aus und betrachten Sie deren Werte im seriellen Monitor.