genau wie die meisten anderen auch, arbeite ich gerade an meinem Arduino Projekt, komme aber gerade nicht wirklich weiter. Ich lasse mir über die serielle Schnittstelle den Wert von D4 ausgeben. Also:
Serial.print(digitalRead(7)); // D4
Es wird aber immer 0 ausgegeben. Wenn ich aber mit dem Multimeter genau am Board vom Arduino nachmesse, wird mir die korrekte Spannung von 5V angezeigt. Habe es auch mit 2 weiteren Arduino Nano's probiert, komme aber immer auf das gleiche Ergebniss. Woran liegt das ?
Schalter ist mit 5V (Port 27) und wie gesagt D4 (Pin 7) verbunden. Der Arduino soll also nur kennen ob der Schalter gedrückt (1 / HIGH) oder nicht (0/LOW) ist.
if(digitalRead(7) == 0){ // Auslesen ob Schalter an (1) oder aus (0) ist
Value = 0;
digitalWrite(14, LOW);
} else {
Value = 1;
digitalWrite(14, HIGH);
}
Da Du nach 5V schaltest, brauchst Du einen PullDown-Widerstand vom D4 nach GND je nach "elektrischer Verseuchung" der Umgebung und Leitungslänge von 10 kOhm bis 1 kOhm.
Offene Eingänge wirken wie Antennen und fangen alles (un)mögliche ein.
Wenn es dann immer noch nicht funktioniert, ist irgend etwas defekt.
HotSystems:
Und schon wieder die 7....warum nimmst du den falschen Pin ?
Weil der Pin D4 laut Layout an dem IC-Pin 7 liegt.
Blöd, daß Das Einem die Arduino-IDE abnimmt.
@TO
Du schreibst 4 für D4 und A0 für A0.
Ob der Pin nun am Nano am 'Beinchen' 7 hängt, oder am Mini an einem ganz Anderem - für Dich als Anwender ist Das der Pin D4.
Die Zahlen in Klammer sind die Numerirung der Beinchen der Anschlusse. Die Arduino-Pins sind die Zahlen ohne Klammer.
I2C ist nicht auf Digital 4 und 5 sondern Analog 4 und 5.
Ich weiß nicht ob da noch andere Fehler drin sind.
Zur Numerierung.
Bei DigitalRead bzw digitalWrite kann zB D2 und auch 2 verwendet werden. Die Pins von A0 bis A5 können als Digitale Pins verwendet werden und mit A0 bis A5 oder 14 bis 19 genannt werden. Die bei SMD Atmega328 vorhandenen A6 und A7 sind nur analoge Eingänge, keine Digitalen Pins.
Bei analogRead kann zB A0 oder auch 0 verwendet werden.