ich spiele gerade das erste mal mit dem Framework. - tolle Sache: Loksteuerung über App und extra Z21-Zentralen-ESP klappt schonmal ganz gut.

Ich habe noch einen alten Lego-9V-Trafo mit großem Drehregler. Der hat eine Mittelstellung und pro Richtung sechs Fahrstufen, die intern über Schleifer und eine Wiederstandskaskade gebildet werden. Zum Spaß habe ich einen Spannungsteiler mit Abgriff an A0 des D1 mini angebracht.

Ich hatte vorher schonmal eine eigene kleine Software auf dem D1 mini laufen, die hat die Werte folgendermaßen in die entsprechende Richtung und Geschwindigkeit übersetzt:
Code: Alles auswählen
void loop() {
ArduinoOTA.handle(); //needed to act on OTA requests
int newValue = analogRead(potPin);
Motorspeed = 0; // Standardmotorwert ist 0
if (newValue >= 420 && newValue <= 547) {
// Rückwärts-Stufen
if (newValue >= 420 && newValue < 455) {
Motorspeed = -255;
} else if (newValue >= 455 && newValue < 470) {
Motorspeed = -240;
} else if (newValue >= 470 && newValue < 482) {
Motorspeed = -225;
} else if (newValue >= 482 && newValue < 510) {
Motorspeed = -210;
} else if (newValue >= 510 && newValue < 527) {
Motorspeed = -195;
} else {
Motorspeed = -180;
}
} else if (newValue >= 548 && newValue <= 680) {
// Vorwärts-Stufen
if (newValue >= 548 && newValue < 570) {
Motorspeed = 180;
} else if (newValue >= 570 && newValue < 590) {
Motorspeed = 195;
} else if (newValue >= 590 && newValue < 610) {
Motorspeed = 210;
} else if (newValue >= 610 && newValue < 624) {
Motorspeed = 225;
} else if (newValue >= 624 && newValue < 640) {
Motorspeed = 240;
} else {
Motorspeed = 255;
}
}
if (Motorspeed != lastMotorspeed) {
sendRequest(Motorspeed);
lastMotorspeed = Motorspeed;
}
delay(80);
}
soweit ich es aus den Dokumentationsstücken zum Framework zusammenraten kann, würde eine Umsetzung ungefähr so aussehen (die Stufen müssen natürlich noch angepaßt werden):
Code: Alles auswählen
"out":[
{
"m":"locdatacontroller",
"locaddr":[
"110"
],
"id":"lctl"
}
],
"in":[
{
"m":"analoggpio",
"gpio":"A0",
"value2out" :[
[0, 520, "absSpeed", "-128"],
[521, 570, "absSpeed", "0"],
[571, 590, "absSpeed", "60"],
[591, 1023, "absSpeed", "127"]
],
"out":[
"lctl"
]
}
],
Was ist denn der korrekte Variablenname für die absolute Geschwindigkeit und wie ist der Wertebereich? Kann die Richtung über das Vorzeichen mitgegeben werden oder gibt es eine eigene Variable? Wie kann ich dann beide übergeben?
Vielen Dank
