Forum: Mikrocontroller und Digitale Elektronik Vom Arduino Uno zum Nano macht Probleme


von Xaver M. (priapos)


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

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.

von Einer K. (Gast)


Lesenswert?

Natürlich hältst die fehlerhafe Stelle geheim!
Auch vor dir selber.
Denn, du benutzt in 13 als Input.

ohne Gewähr

von Stefan F. (Gast)


Lesenswert?

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.

von Xaver M. (priapos)


Lesenswert?

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
const int upButton7 = 12;
2
const int downButton8 = 13;
3
const int selectButton9 = 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....

von Jens M. (schuchkleisser)


Lesenswert?

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.

von Einer K. (Gast)


Lesenswert?

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)

von Sebastian (Gast)


Lesenswert?

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

von Stefan F. (Gast)


Lesenswert?

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.

von Schlaumaier (Gast)


Lesenswert?

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

von Xaver M. (priapos)


Lesenswert?

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.

von Schlaumaier (Gast)


Lesenswert?

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

von Einer K. (Gast)


Lesenswert?

Xaver M. schrieb:
> Ich habe es geändert, (am Nano von Pin 13 an Pin 10) und siehe da, die
> Taster reagieren.

Fein!

von Xaver M. (priapos)


Lesenswert?

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.

von Schlaumaier (Gast)


Lesenswert?

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.

von Sebastian (Gast)


Lesenswert?

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

von Einer K. (Gast)


Lesenswert?

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)

von Manfred (Gast)


Lesenswert?

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?

von Einer K. (Gast)


Lesenswert?

Manfred schrieb:
> Die Chinesen haben die LED über einen OP
> angeschaltet, also belastungsfrei.
Italiener, nix Chinesen.
Die Chinesen bauen das nur erfolgreich nach.

von Manfred (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Einer K. (Gast)


Lesenswert?

Manfred schrieb:
> Es scheint unterschiedlich zu sein, ob SMD oder DIL-Version.
Durchaus.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

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.

von Einer K. (Gast)


Lesenswert?

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!

von Axel R. (axlr)


Lesenswert?

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.

von Oliver S. (oliverso)


Lesenswert?

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

von Einer K. (Gast)


Lesenswert?

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.

von Xaver M. (priapos)


Lesenswert?

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.

von Joachim B. (jar)


Lesenswert?

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?

: Bearbeitet durch User
von Einer K. (Gast)


Lesenswert?

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!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.