Hallo,
so langsam bin ich wirklich am Verzweifeln und sehe den Wald vor lauter
Bäumen nicht.
Ich habe diesen Adapter in Version 1.
https://freematics.com/pages/products/freematics-obd-ii-uart-adapter-mk2/
Nun möchte ich abhängig von der Drehzahl oder der Stellung des Gaspedals
einen WS2812B Streifen leuchten lassen.
Im Code unten lese ich gerade die Stellung vom Gaspedal aus. Über den
Seriellen Monitor klappt das auch prima, nur der Streifen leuchtet nicht
so wie er soll. Eigentlich sollen jeweils zwei Leds für 25% leuchten.
Findet jemand von euch den Fehler? Und wahrscheinlich gibt es 100
bessere Wege, um das besser zu programmieren. Ich bin noch neu und würde
mich über generelle Tipps auch freuen. :)
Du darfst keine Abfrage in einer Abfrage einbauen.
Wenn die Drehzahl größer als 25 ist, kommst du nicht in die anderen
Bedingung rein.
Probier es mal so:
Robin F. schrieb:> Du darfst keine Abfrage in einer Abfrage einbauen.> Wenn die Drehzahl größer als 25 ist, kommst du nicht in die anderen> Bedingung rein.
Ah, das klingt logisch. Vielen Dank für den Tipp.
Robin F. schrieb:> Probier es mal so:
Werde ich morgen nach der Arbeit gleich ausprobieren.
Arduino OBD2 schrieb:> if (Drehzahl < 25)> strip.setPixelColor(0, 100, 0, 0);
Da fehlen geschweifte Klammern um den Block.
Aktuell fällt nur die Zeile "strip.setPixelColor(0, 100, 0, 0);" unter
die if-Abfrage. Die darauffolgenden werden immer ausgeführt.
Und natürlich wie oben gesagt die ifs nicht ineinander schachteln.
noch ein paar Ungenauigkeiten - was passiert bei 25 und 50?
Und einfacher wirds so herum (ohne doppelte Bedingungen)
if (Drehzahl > 75)
{
}
else if (Drehzahl>50)
.
.
.
else { //<25
}
Hi
Achte auch auf die geshweiften Klammern.
Müsste Es selber testen, denke aber, daß Deine ganzen Abschnitte:
1
if(Drehzahl<25)
2
strip.setPixelColor(0,100,0,0);
3
strip.setPixelColor(1,100,0,0);
4
strip.setPixelColor(2,0,0,0);
5
strip.setPixelColor(3,0,0,0);
6
strip.setPixelColor(4,0,0,0);
7
strip.setPixelColor(5,0,0,0);
8
strip.setPixelColor(6,0,0,0);
9
strip.setPixelColor(7,0,0,0);
10
strip.show();
nur je die erste Zeile unter der IF-Abfrage bedingt ausführen.
Die restlichen Zeilen dürften, meiner Meinung nach, nicht mehr zur
IF-Abfrage gehören und somit immer ausgeführt werden - und dort löscht
Du die LEDs (bis auf die 1).
Dadurch sollten aber alle IF-Abfragen abgearbeitet werden, da Diese ja
auch nur in einer 'nächsten Zeile' stehen.
Rein spekulativ :)
Das Klammern-Gewirr gliedert aber auch, wenn Es eigentlich nicht
benötigt wird.
MfG
So klappt es nun. Nochmal danke für die schnelle Hilfe. Den Rest schaffe
ich nun wohl alleine.
Zwei weitere Fragen habe ich aber noch.
1.
Wie funktioniert dieses Modul?
http://www.happylightshow.com/happyblue/happyblue-1.html
Die Werte kann ich mit meinem Gerät und einem Arduino ja bereits
auslesen, aber kann ich auch irgendwelche Sachen senden?
2.
Ich möchte mehrere Modis haben, welche mit einem Taster umgeschaltet
werden können. Wie realisiert man das mit dem Arduino am besten? Ein
Begriff zum Googeln würde mir schon reichen. Ich finde einfach nicht das
richtige. :-)
Schalter an ein paar digitalpins und dann DigitalRead. Abhängig vom
gelesenen Wert dann if oder eine andere Programmablaufseuerung benutzen.
https://www.arduino.cc/en/Reference/DigitalRead
Hi
Debounce (Entprellen) - dazu gibt es auch eine Lib
https://www.arduino.cc/en/Tutorial/Debounce
Wenn man mechanische Taster nimmt, sieht der µC durch das Prellen
mehrere Tastungen - kann beim Durchblättern eines Menü zu Frust führen.
OBD_II scheint ein interessantes Thema zu sein - vll. gebe ich Da auch
Mal was Geld aus ... Jemand Erfahrungen damit?
MfG