|
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.