ich konnte danke diesem und weiteren foren mein projekt fast vollständig umsetzen, aber jetzt komme ich nicht weiter.
ich möchte das unterhalb einer geschwindigkeit von 5km/h "--" angezeigt wird, aber sobald der flankenwert zu groß -> geschwindigkeit zu klein wird (pwm ist bei stillstand eine 5V gleichspannung), wird "inf" im display und im serial monitor angezeigt. wie schaffe ich es das bei keinem signaleingang "--" angezeigt wird?
ich möchte auf dem display je nach schalterposition 3 werte anzeigen: geschwindigtkeit, temperatur oder bordspannung (im moment nur text)
wenn ich ein high signal auf pin11 für temperaturanzeigen lege klappt alles problemlos, wenn ich ein high signal auf die spannungsanzeige lege springt sie in der vorgegenen wartezeit zwischen geschwindigkeit und spannung geschwindigkeit hin und hier
pulldown wiederstände mit 100kOhm sind verbaut
teilst Du irgendwo durch "0"?
der Compiler könnte falschen Code erzeugen…
Hast Du FehlerMeldungen aus der IDE?
Defekte Hardware?
Ich nehme an, Du rechnest an einer Stelle falsch- oder falsche Werte Zuweisung.
Es sieht so aus, als wenn Du ein TFT/OLED nutzt. Dort ist es besser, nur den
Teil der Anzeige zu löschen, der sich ändert.
Der Arduino ist zu schnell für langsame OLED/TFT´s. Soll heißen: während das TFT
nocht fummelt, macht der Arduino schon etwas anderes-
dann kann er sich schon einmal verschlucken…
Pulldown Wiederstände nehme ich nie höher als 10k
Gruß und Spaß
Andreas
das es daran liegt das ich durch null teile habe ich auch schon gedacht und den code dementspreechend umgeschschieben, jedoch keine verbesserung
oberhalb von 5km/h passt alle
zwischen 2 km/h und 5km/h wird zuverlässig wie gewünscht "--" angezeigt
unterhalb von 2km/h ab und zu "inf" und ohne signaleingang oder bei gleichspannung dauerhaft
ich schätze es gefällt ihm einfach nicht das er keine positive flanke messen kann, aber wie sag ich ihm das wenn da nichts ist er 0 annehmen soll?
zu 2:
bei 10kOhm springt die anzeige weiterhin
in der IDE werden keine fehler angezeigt. mir ist gerade aufgefallen das die geschwindigkeit sogar im serial monitor angezeigt wird, obwohl die in der if schleife nicht vorkommt.
irgendwie arbeitet er erst die if abfrage ab wie er soll und springt dann nach delay in der else abfrage zu landen um dann nach delay wieder (so wie es soll) die spannung anzuzeigen
Hallo,
positive oder negative Flanken kannst Du mit einen IRQ feststellen.
Also,
wenn Flanke positiv- dann mache etwas.
"bei 10kOhm springt die anzeige weiterhin"
wenn Du analog mist, dann zappelt das meistens wie wild.
Du darfst nur "einmal" messen, über logische Abfrage geht das ganz gut.
Hole analog einmal
mache etwas
Hole analog einmal
mache etwas
u.s.w
Wenn das im serillen Monitor funktioniert, und mit dem TFT nicht, dann kannst
Du Dich fast darauf verlassen, das Dein TFT den Arduino ausbremmst.
Wenn der Arduino etwas schnell machen soll, und es auf einem TFT darstellen
soll, dann wird das recht tricky, das zu programmieren.
Am besten geht:
eingabe der Daten
verarbeiten der Daten
ausgabe der daten
Erst- wenn die Ausgabe der Daten beendet ist, dann wieder- eingabe der Daten.
Arduino und schnell- und TFT/OLED ist fast immer Müll, das ist nicht so
einfach.
Schreibe Deinen Sketch doch mal nur für den seriellen Monitor. Also alles
"Anzeige auf TFT/OLED" raus.
Wenn das dann läuft, probierst Du es wieder mit dem TFT/OLED.
Gruß und Spaß
Andreas
das oled wird über I2C angesprochen und zeigt exakt das an was auch im serial monitor angezeigt wird, also kann man es als fehlerursache wohl ausschließen.
schalter position1 -> temperaturen werden angezeigt (so wie es soll) -> if pin 8 high
schalter position2 -> display springt ziwschen geschwindigkeit und spannung hin und der (nicht so wie es soll) -> if pin11 high
schalter position0 -> geschwindigkeit km/h (so wie es soll) -> else
geschwindigkeit (pwm) wird über den digital pin 2 eingelesen
temperaturen über zwei analog pins
spannung wird derzeit nur als text ausgegeben, kommt aber noch
wenn er die termperatur anzeigt beendet er ordnungsgemäß den if ablauf
wenn er den text anzeigt durchläuft er den if ablauf und geht dann in den else ablauf
ich habe jetzt alle rausgeschmissen was geht, sogar das display und sämtliche libarys.
Fehler ist weiterhin...
wahrscheinlich seht ihr den fehler gleich auf den ersten blick nur ich als neuling sehe es nicht.
int MFAschalterP1 = 9;
int MFAschalterP0 = 11;
int test = 8;
void setup() {
Serial.begin(9600);
pinMode(MFAschalterP1, INPUT);
pinMode(MFAschalterP0, INPUT);
pinMode(test, INPUT);
}
void loop() {
if (digitalRead(MFAschalterP1) == HIGH) {
Serial.println("pin9 bruecke gesteckt");
delay(500);
}
if (digitalRead(MFAschalterP0) == HIGH) {
Serial.println("pin11 bruecke gesteckt");
delay(500);
}
if (digitalRead(MFAschalterP1 & MFAschalterP0 & test) == LOW) {
Serial.println("keine bruecke gesteckt");
delay(500);
}
if (digitalRead(test) == HIGH) {
Serial.println("pin 8 bruecke gesteckt");
delay(500);
}
}
auf dem ersten bild seht ihr den aufbau mit 10kOhm widerständen
das weiße kabel ist mein schalter
auf den restlichen bildern ist zu sehen, dass wenn keine brücke gesteckt ist alles funktioniert und wenn das kabel bei pin 8 ist auch alles funktionert
wenn ich pin 9 oder pin11 stecke zeigt erst den richtigen an, dann den "flaschen" und wieder zurück.
Was zum teufel nochmal ist an pin8 anders, besser.... als bei den anderen? -_-
if (digitalRead(MFAschalterP1 & MFAschalterP0 & test) == LOW) {
...
macht nicht, was du wahrscheinlich denkst.
Der folgende Code (zum Beispiel) macht hingegen was du anscheinend willst:
if (digitalRead(MFAschalterP1)==LOW && digitalRead(MFAschalterP0)==LOW && digitalRead(test) == LOW)) {
...
P.S.:
Bitte lade Bilder doch direkt hier im Forum hoch (verwende nicht "Quick Reply" sondern "Reply", dort kannst du unter "Attachments and other options" Bilder direkt hochladen).
Die Werbung bei der "abload"-Seite ist ziemlich penetrant, das schauen sich wohl nur wenige Leute freiwillig an.