Hallo,
ich habe mir zum Test der arduino NANO Pins eine kleine Routine geschrieben.
Ich prüfe nur, ob die PINs eine Verbindung haben, keine Funktionsprüfung. Also die Kontrolle der Lötstellen. (Ich weiß, dass bei ordnungsgemäßem Löten sowas eigentlich nicht notwendig ist ...)
Die meisten PINS schalte ich auf GND und teste mit digitalRead(). Bei einigen PINs prüfe ich die Spannung an analogen PINS mit analogRead().
Wenn gewünscht, kann ich auch den kompletten Code ergänzen.
Alles klappt soweit außer RST, REF, D0 und D1.
Die Ausgabe erfolgt im seriellen Monitor.
Wie könnte ich die PINS D0 und D1 prüfen, ohne die serielle Ausgabe zu beeinflussen ?
Das wird nix.
Du musst beide Zustände setzen und auch auslesen. Wie willst Du sonst erkennen, ob der PIN umgeladen wurde oder nicht doch schon von vornherein keinen HIGH-Pegel hatte?
(Im DaBla steht, ab welcher Spannung HIGH erkannt wird)
Wenn die serielle Ausgabe funktioniert ist Pin1 ok, Wenn die serielle Eingabe funktioniert ist Pin 0 ok. Kann auch umgekehrt sein, ich habe die genaue Belegung nicht im Kopf…
Na ja, mit der Feststellung, weiß ich aber nicht, ob der PIN mit dem arduino verbunden ist oder nicht ? Hatte ich noch nicht gesagt, dass die serielle Ausgabe über USB am PC angezeigt wird.
Ich habe einfach den Unterschied "PIN angeschlossen" und "PIN nicht angeschlossen" verglichen/gemessen und daraus ergab sich die Logik. Meiner Meinung nach funktioniert das...
Das geht, wenn Du den PIN mit INPUT_PULLUP HIGH vorbelegst und den PIN mit einer Verbindung nach GND ziehst. Aber um zu testen, das Du nicht zufällig irgendwo einen Schluß hast, musst Du auch auswerten, ob der PIN HIGH geht, wenn das Kabel abgezogen ist.
Verbindung zum Steckbrett?
Die meisten Verbindungsprobleme fangen danach erst an ... :)
Pin 1 (Tx) muss OUTPUT HIGH sein, wenn gerade nichts ausgegeben wird, nach Serial.begin
Pin 0 (Rx) ist INPUT HIGH beim Uno/Nano, wenn gerade nicht an Serial gesendet wird.
Was mit Serial passiert, wenn man pinMode(0,OUTPUT) macht. hab ich noch nie probiert.
Ich mache bei den D-PINs im setup() nur
pinMode(pin,INPUT_PULLUP);
Getestet wird mit digitalRead() ;
Zur Vorbelegung ein zusätzliches digitalWrite(pin,HIGH) ändert am Ergebnis nichts.
Schwieriger ist D13. Hier kann ich nur D13 mit zB. A4 verbinden und die Spannung testen
pinMode(13,OOUTPUT)
digitalWrite(13,LOW)
Wenn analogRead(18) > 1000 ist, dann ist der PIN unterbrochen. Ich verstehe es nicht aber funktioniert ???
Ich bezweifle einfach mal die Sinnhaftigkeit des Tests.
Wie soll ich eine Hardwareverbindung ausserhalb eines Chip messen, wenn auf dem gleichen Pin eine Ausgabe erfolgt und dort das Ergebniss eingelesen wird.
Ist ungefähr so, wie wenn ich mittels Lautsprecher eine Nachricht nach München schreien möchte und zur Kontrolle dann sage, dass ich es ja gehört hab', obwohl ich hier im Alpenvorland stehe.
Beantworte Dir doch einfach mal die Frage, was Du erwartest wenn z.B. eine Lötstelle nicht gelötet wurde.
Das möchte auch niemand
Ein paar Beispiele:
D2 bis D12 sind mit PIN-GND-D(zwischen D1 und D2) fest verbunden
Wenn D2 bis D12 alles Fehler sind, dann liegt es wahrscheinlich an PIN-GND-D.
Test zB. D2:
pinMode(2, INPUT_PULLUP), wenn digitalRead(2)==HIGH, dann Fehler, also ist PIN D2 nicht verbunden
A0 bis A3 sind mit PIN-GND-A(zwischen Vin und 5V) verbunden
Wenn A0 bis A3 alles Fehler sind, dann liegt es wahrscheinlich an PIN-GND-A.
Prüfung der A-PINs genau wie D-PINs.
A4 bis A7 teste ich immer in Kombination mit einem bestimmten PIN(PIN-Vin, PIN-5V, PIN-3,3V oder PIN-D13)
zB. PIN-5V wird verbunden mit PIN-A4(18)
pinMode(18, INPUT_PULLUP), wenn analogRead(18) > 1000, dann ist das ein Fehler
Also ist entweder PIN-5V oder PIN-A4 fehlerhaft. Das müßte man nun manuell prüfen.
Das ganze in sinnvolle Meldungen und einer Zusammenfassung angezeigt.
Leider kann ich am Ende keine Rote oder Grüne LED blinken lassen - ich habe keinen PIN frei.
Für den Test von D0 und D1 habe ich leider noch keine Lösung gefunden.
Ich bitte um Hinweise, was ich verbessern/ändern muss, bevor ich die Steckbrettvariante fest verdrahte.
Du überprüfst also eine Schaltung, auf welcher die zu testenden Pins auf GND gebrückt sind? Damit kannst Du aber dann nichts mehr anfangen... (Wozu also der Test?).
Wenn das ein fertiges Projekt sein soll dann wergrisse sehr schnell das Steckbrett, hat mickrige Kontakte was mit der zeit Oxidieren wen man die nicht benutzt == ausstecken, einstecken.
Schreibt einer was damit auf die Schnauze gefallen ist.
Denkst Du wirklich ?
Ich möchte nicht die Funktion hinter D0 und D1 testen, sondern ich möchte wissen, ob die PINs also die beiden Drähte die da "rausgucken" wirklich mit dem arduino verbunden sind.
Multimeter und messen?
Andere Möglichkeit irgend ein Display anschliesen und die Pins testen, oder die interne LED als anzeige, willst doch nicht 100 mall die Pins testen.
Persönlich habe noch keine MCU (um die 10) gehabt was falsch verlötet war, zwei Pins zusammen verlötet schon dafür ist aber Lupe da