Moingsen Leute,
vielleicht könnt ihr mir einen Tip geben.
Ich habe auf einem Uno ein Sketch laufen das funktioniert. Ein OLED,
Sensor, 3 Taster und 5 LED´s.
Die Funktionsweise ist folgende:
Temperatur messen, bei Temperatur x LED ansteuern, Temperatur wird auf
dem OLED ausgegeben. Über 3 Taster, kann man zwischen einer Automatik
und Manuellen Funktion hin und her schalten, das ganze Menü wird auf dem
Display, mit der Temperatur angezeigt. Funktioniert tadellos.
Nun will ich das ganze auf einem Arduino Nano_V3 laufen lassen.
Uno und Nano sollen ja gleich sein, sind sie aber nicht.
Nach einigem Lesen komme ich drauf, das der Nano pullup Widerstände
braucht, das Löst mein Problem auch nicht.
Ich möchte (wie vorher beim UNO auch) über die Taster durch das Menü
blättern, allerdings scheine ich irgendwas zu übersehen ... weil nichts
passiert.
So sieht der Teil aus der nicht funzt:
1
if(!digitalRead(downButton8)==LOW)
2
{//warten das der downbutton von low/high wechselt
3
menu++;//erhöht sich die menuvariable um 1
4
updateMenu();
5
delay(10);
6
while(!digitalRead(downButton8)==LOW);//für eine dauerschleife, falls button dauerhaft gedrückt wird
7
}
8
if(!digitalRead(upButton7)==LOW)
9
{
10
menu--;
11
updateMenu();
12
delay(10);
13
while(!digitalRead(upButton7)==LOW);
14
}
15
if(!digitalRead(selectButton9)==LOW)
16
{
17
executeAction();
18
updateMenu();
19
delay(10);
20
while(!digitalRead(selectButton9)==LOW);
21
}
Der Arduino schaltet eine seiner LED´s übrigens aus, wenn einer der drei
Taster gedrückt wird.
Wenn wer eine Idee hat, ich bin ganz Ohr.
Vielen Dank.
Wenn du schon die Schaltung verdächtigst, dann zeige sie doch mal! Fotos
vom Aufbau und den dazugehörigen Schaltplan bitte. Mit Angabe der
verwendeten Bauteile und Module.
Und wenn du Fragen zum Quelltext hast, dann hänge den ganzen Quelltext
an, damit man es nachvollziehen kann.
> if (!irgendwas == LOW)
Da kriege ich einen Knoten in den Kopf. Warum schreibst du nicht
einfach:
> if (irgendwas == HIGH)
oder noch einfacher:
> if (irgendwas)
???
Wie dem auch sei, an den paar Zeilen ist kein Fehler erkennbar. Du musst
viel mehr Infos liefern.
Ich würde die Tastenabfrage in Funktionen mit sprechenden Namen
verpacken:
if ( plus_taste_gedrückt() )
{
...
}
if ( minus_taste_gedrückt() )
{
...
}
if ( select_taste_gedrückt() )
{
...
}
Keine Sorge, dadurch wird der Code weder größer noch langsamer.
Arduino Fanboy D. schrieb:> Denn, du benutzt in 13 als Input.
hä?
verstehe ich nicht ... richtig ist, die 3 Taster hängen beim Nano an den
Digitaleingängen 13, 12, 11. Meinst du das?
Stefan ⛄ F. schrieb:> Wenn du schon die Schaltung verdächtigst, dann zeige sie doch mal!>> Wie dem auch sei, an den paar Zeilen ist kein Fehler erkennbar. Du musst> viel mehr Infos liefern.
Die Schaltung verdächtige ich nicht ... wirklich.
Auf der Suche nach der Frage ob die Schaltung oder der Nano ursächlich
ist, habe ich an die Schaltung einen Uno gehängt, und der Funzte mit den
Tastern einwandfrei. Ergo vermute ich einen Unterschied zwischen UNO und
NANO.
Ein Unterschied ist z.b. das der UNO bereits integrierte
Pullup-Widerstände an den Ausgängen hat. Ein 10k und ein 100k Widerstand
löste aber das Problem nicht.
Die Leitungen der Taster gehen von D13, D12; D11 an den Taster(Eingang),
dort bekommen die von 5V Plus und einem 100k Widerstand Spannung und
gehen nach dem Taster auf Ground.
im Setup:
1
pinMode(upButton7,INPUT_PULLUP);// taster ist an steckplatz12
2
pinMode(downButton8,INPUT_PULLUP);// taster ist an steckplatz13
3
pinMode(selectButton9,INPUT_PULLUP);// taster ist am steckplatz11
In der Deklaration:
1
constintupButton7=12;
2
constintdownButton8=13;
3
constintselectButton9=11;
Die Schaltung funktioniert mit dem Uno, mit dem Nano nicht und eine
andere Pinbelegung sehe ICH in dem Schaltplan des Nano nicht, was aber
auch nichts heißen muss....
Am Ausgang braucht man keine Pullups oder -downs, außer um
sicherzustellen das die angeschlossene Hardware nicht Amok läuft wenn
der Prozessor nicht läuft, z.B. beim Bootloading.
Der Nano hat am 13er ebenfalls eine LED, ansonsten sind Nano und Uno
identisch, da fehlt halt nur der Platz.
Xaver M. schrieb:> Die Leitungen der Taster gehen von D13, D12; D11 an den Taster(Eingang),> dort bekommen die von 5V Plus und einem 100k Widerstand Spannung und> gehen nach dem Taster auf Ground
Das ist zwar doppelt gepullupt, macht aber nix.
Wenn am Pin wirklich H bei "nicht gedrückt" und L bei "gedrückt" ankommt
ist alles gut. Entprellen wäre vielleicht noch ne Idee, aber das kann ja
im nicht gezeigten Code sein.
Dein Problem ist jedenfalls mit reichlicher Sicherheit die Hardware.
Deine Schaltung ist Murks oder dein Prozessor defekt, aber die Software
ist definitiv identisch auf beiden Teilen.
Xaver M. schrieb:> Arduino Fanboy D. schrieb:>> Denn, du benutzt in 13 als Input.>> hä?> verstehe ich nicht ... richtig ist, die 3 Taster hängen beim Nano an den> Digitaleingängen 13, 12, 11. Meinst du das?
Korrekt!
Ich meine Pin 13 und nicht in 13.
(hatte wohl gerade nicht genügend große p im Lager)
Xaver M. schrieb:> Ein Unterschied ist z.b. das der UNO bereits integrierte> Pullup-Widerstände an den Ausgängen hat.
Bitte, bitte, vergleiche noch einmal genau die Schaltpläne von Uno und
Nano!
LG, Sebastian
Xaver M. schrieb:> Die Schaltung verdächtige ich nicht ... wirklich.
Wenn das Programm das gleiche ist, kann es doch nur an der Schaltung
liegen, meinst du nicht?
Taster schließt man an 4,7kΩ Widerstände an, nicht 100kΩ. 100kΩ ist viel
zu hochohmig, so empfängt man Radiowellen und die Taster verschleißen
frühzeitig weil sie zu gering belastet werden.
Ziehen deine 100kΩ Widerstände jetzt auf HIGH oder LOW? Und wie sind die
Taster angeschlossen? Wir brauchen immer noch den Schaltplan, sonst
verschwenden wir unsere Zeit damit, deine unklaren Worte zu
interpretieren.
Ich schätze mal, dass du deinen I²C Bus auch zu hochohmig betreibst.
Hast du das mit einem Oszilloskop überprüft? Wenn nicht, tue das.
Auf jeden Fall ist es wichtig, den Fehler systematisch einzukreisen.
Also erstmal alle statischen Spannungen nachmessen und bei I²C die
Signalqualität. Mit der Info, dass das Programm aus irgendeinem Grund
irgendwie nicht funktioniert, kann keiner voran kommen.
Es gibt Unterschiede. Die meisten führen jedoch zu einen Fehler während
des compilieren.
1. Du musst das RICHTIGE Board wählen. Bei den Nano gibt es 2 Board.
OLD und "normal". Da meine Nanos schon über 1 Jahr alt sind, laufen
die nur sauber wenn ich OLD auswähle.
Ansonsten überprüfe nochmal ob du alle Pins richtig angeschlossen hast.
Am besten mit einen Pin-Layout-Plan.
Hier ist z.b. ein feiner Plan.
http://s6z.de/cms/index.php/arduino?view=featured&start=45
Wer lesen kann ist klar im Vorteil ... das Problem ist nur, es gibt so
viel davon.
Hier steht es:
https://www.arduino.cc/en/Tutorial/Foundations/DigitalPins
NOTE: Digital pin 13 is harder to use as a digital input than the other
digital pins because it has an LED and resistor attached to it that's
soldered to the board on most boards. If you enable its internal 20k
pull-up resistor, it will hang at around 1.7V instead of the expected 5V
because the onboard LED and series resistor pull the voltage level down,
meaning it always returns LOW.
Ich habe es geändert, (am Nano von Pin 13 an Pin 10) und siehe da, die
Taster reagieren.
Zwar reagieren sie noch nicht so wie gewollt, weil jetzt ein Fehler
offensichtlich wird, alle Taster machen das gleiche, ergo stimmt die
Verdrahtung noch nicht.
Das werde ich auch noch hinbekommen.
Danke bis hierhin.
Xaver M. schrieb:> Zwar reagieren sie noch nicht so wie gewollt, weil jetzt ein Fehler> offensichtlich wird, alle Taster machen das gleiche, ergo stimmt die> Verdrahtung noch nicht.
Nimm doch einfach ein Keyboard. ;) Kostet bei 16 Tasten 8 Digitalpins
(Gibt es auch kleiner). Dann brauchst du dich da nicht drum zu kümmern.
;)
Arduino Fanboy D. schrieb:> Xaver M. schrieb:>> Ich habe es geändert, (am Nano von Pin 13 an Pin 10) und siehe da, die>> Taster reagieren.>> Fein!
Jepp, finde ich auch.
Ich habe jetzt auch die Verdrahtung geändert und alles ist im grünen
Bereich.
Danke nochmal, auch wenn du nicht wissen konntest das ich Pin 13
benutze, was das der richtige Hinweis.
Xaver M. schrieb:> If you enable its internal 20k pull-up resistor, it will hang at around> 1.7V instead of the expected 5V because the onboard LED and series> resistor pull the voltage level down, meaning it always returns LOW.
Und warum funzt das mit dem Uno? Schau dir den Schaltplan an! Der Uno
hat an der Stelle noch einen OpAmp als Verstärker dazwischen, der beim
Nano fehlt!
LG, Sebastian
Xaver M. schrieb:> Danke nochmal, auch wenn du nicht wissen konntest das ich Pin 13> benutze, was das der richtige Hinweis.
Gerne doch...
Wobei wenn ich es nicht wusste, oder zumindest stark vermutet habe, so
stark, dass die Kristallkugel gebebt und laut geflackert hat, wie hätte
ich dir das dann sagen können?
Die Frage war einfach!
Was verbirgt er/sei/es vor mir und uns anderen?
Verknüpft mit der Frage, was ist am Nano anders?
Dann gibt es nur die eine offensichtliche Antwort....
(auch wenn mir das hier mal wieder negative Bewertungen einbringt)
Schlaumaier schrieb:> Pin 13 ist immer pöse. Weil ist ja die 13 ;)> Ernsthaft. Wegen seiner besonderen Funktion drücke ich mich wenn es> irgend geht den zu benutzen.
Vielleicht unbewusst, habe ich D13 nirgendwo als Eingang benutzt. Er
scheint aber Standard zu sein, wenn man eine SD-Karte anbindet, da ist
er Ausgang SCK.
Sebastian schrieb:> Und warum funzt das mit dem Uno? Schau dir den Schaltplan an! Der Uno> hat an der Stelle noch einen OpAmp als Verstärker dazwischen, der beim> Nano fehlt!
Ich gucke mir gerade mal Schaltpläne an, beim Original-UNO finde ich
keine LED an D13 / PB5. Die Chinesen haben die LED über einen OP
angeschaltet, also belastungsfrei.
Das Problem ist damit erklärbar, aber nicht, weshalb hier gefragt werden
musste: Wenn bei mir ein Ein- oder Ausgang nicht spielt, habe ich ein
Multimeter zur Hand und gucke mir den Pegel an. Bekommt niemand mehr
selbstständig die Schuhe gebunden?
Manfred schrieb:> Die Chinesen haben die LED über einen OP> angeschaltet, also belastungsfrei.
Italiener, nix Chinesen.
Die Chinesen bauen das nur erfolgreich nach.
Arduino Fanboy D. schrieb:>> Die Chinesen haben die LED über einen OP>> angeschaltet, also belastungsfrei.> Italiener, nix Chinesen.> Die Chinesen bauen das nur erfolgreich nach.
Wo im Anhang ist die LED?
Es scheint unterschiedlich zu sein, ob SMD oder DIL-Version.
Arduino Fanboy D. schrieb:> Dann gibt es nur die eine offensichtliche Antwort....> (auch wenn mir das hier mal wieder negative Bewertungen einbringt)
Habe mir die Freiheit genommen, deine Bewertungen etwas zurechtzurücken.
Marc V. schrieb:> Bewertungen etwas zurechtzurücken.
Ich danke dir dafür...
Es ist ein klein wenig Enttäuschend, dass einige die Bewertungsfunktion
nutzen, um ihre Abneigung gegen Personen zum Ausdruck zu bringen, aus
dem Hinterhalt.
Der fachliche Gehalt, da etwas untergeht.
Aber andererseits ist es auch schon fast eine Auszeichnung:
> Viel Feind, viel Ehr!
Arduino Fanboy D. schrieb:> Marc V. schrieb:>> Bewertungen etwas zurechtzurücken.>> Ich danke dir dafür...>> Es ist ein klein wenig Enttäuschend, dass einige die Bewertungsfunktion> nutzen, um ihre Abneigung gegen Personen zum Ausdruck zu bringen, aus> dem Hinterhalt.> Der fachliche Gehalt, da etwas untergeht.>> Aber andererseits ist es auch schon fast eine Auszeichnung:>> Viel Feind, viel Ehr!Arduino Fanboy D. schrieb:> Es ist ein klein wenig Enttäuschend, dass einige die Bewertungsfunktion> nutzen, um ihre Abneigung gegen Personen zum Ausdruck zu bringen
Lass die doch klicken, was sie wollen. Ist doch sch..egal! Wichtig ist,
dass die Fragen zügig und zielführend beantwortet werden. Und das haste
gemacht. Auch OHNE Schaltplan. Finde ich gut.
Arduino Fanboy D. schrieb:> Es ist ein klein wenig Enttäuschend, dass einige die Bewertungsfunktion> nutzen, um ihre Abneigung gegen Personen zum Ausdruck zu bringen, aus> dem Hinterhalt.
Wer auf die nichtssagenden Zahlen irgend etwas gibt, ist halt selber
schuld.
Nur ma als Info: ich lese und schreibe hier per Tablett, und nutze zum
Scrollen den rechten Daumen. Da trifft es öfter mal unbeabsichtigt einen
Bewertungspfeil. Geht halt nicht anders, neben völliger Sinnlosigkeit
ist das auch noch hirnrissig implementiert.
So what…
Oliver
Oliver S. schrieb:> Da trifft es öfter mal unbeabsichtigt einen> Bewertungspfeil.
Mag sein, dass du einen zu breiten Finger hast.....
Das ist hier sicherlich nicht das Problem, mit der Bewertung.
Das liegt ganz woanders.
Es wird dafür genutzt um Personen abzuwerten. Also pervertiert.
Oliver S. schrieb:> ist das auch noch hirnrissig implementiert.
Eine "gerechte" Bewertung von Antworten kann nur erfolgen, wenn die
bewertende Person mehr Fachkenntnis hat, als die zu bewertenden Antwort
erfordert.
Vergleiche mit Schule/Notengebung, da sollte es gegeben sein.
Das ist in diesem Forum nicht gegeben, zumindest nicht überprüfbar
gewährleistet.
Arduino Fanboy D. schrieb:> Vergleiche mit Schule/Notengebung, da sollte es gegeben sein.> Das ist in diesem Forum nicht gegeben, zumindest nicht überprüfbar> gewährleistet.
Auch wenn ich sehr gut deine Argumente nachvollziehen kann, ist das
weder in diesem Forum noch in anderen Foren so, und auch für die Schule
trifft das meiner Erfahrung nach nicht zu.
Es menschelt halt an allen Ecken und Enden und so wie man im RL auch
nicht mit jedem kann oder will, ist es hier nicht anders und lohnt die
Energie nicht sich aufzuregen, einfach öfter mal das Teflonspray
benutzen.
Arduino Fanboy D. schrieb:> Aber andererseits ist es auch schon fast eine Auszeichnung:>> Viel Feind, viel Ehr!
ist auch mittlerweile meine Devise, trotzdem zeige ich gerne mal die
Absurdität der Bewertungen auf.
übrigens unter uns:
du schriebst mir doch mal 2019:
Hi!
Frage ruhig im Forum!
Ich versuche das Feuer sowieso auf mich zu ziehen.
Und die Frage ist interessant, auch für andere.
nur was hat dich verändert das du so dünnhäutig geworden bist?
Du hast mir später so oft Contra gegeben, ich weiss ja das ich nicht
perfekt bin und auch mal einem Irrtum unterliege, aber denkst du
wirklich das du dich NIE irrst?
Joachim B. schrieb:> nur was hat dich verändert das du so dünnhäutig geworden bist?
Ja, nee ....
Ich bin nicht "dünnhäutiger" geworden.
Weiterhin durchaus bereit mich jedem, z.B. Arduino Basher, fachlich und
auch emotional zu stellen. Nur werden die Deliquenten mittlerweile
seltener, dadurch kann es sein, dass ich "friedlicher" erscheine.
Habe allerdings eine "leichte" Abneigung gegen Heckenschützen, welche
aus der Anonymität schlechte Bewertungen verteilen. Auch wenn ich
teilweise Verständnis dafür habe, dass die Situation so ist wie sie ist.
Denn einigen bin ich schon recht arg in die Parade gefahren.
Xaver M. schrieb:> Teflonspray
Auch das ist nicht die richtige Methode.
Mich stört, dass richtige Antworten negativ bewertet werden (nicht nur
meine), nur weil irgendwem die Nase nicht gefällt.
Joachim B. schrieb:> aber denkst du> wirklich das du dich NIE irrst?
Nein, ich habe in diesem Forum schon ein paar mal bewiesen, dass ich
mich irren kann!
Allerdings auch bereit bin, den jeweiligen Irrtum (vielleicht auch mit
Verspätung) zu erkennen und angemessen darauf zu reagieren.
"Wahre Größe" zeigt sich nicht darin, dass man sich nie irrt, sondern
dass man zu seinem Fehlern steht, daraus lernt.
Mantra:
> Irren ist menschlich.> Im Irrtum verharren ist Dummheit!