Arduino Uno Eingangsproblem?
tldr; Die Pins A4, A5 und 2 erzeugen einen Kurzschluss wenn ich sie auf GND schalte um ein Signal zu erzeugen wie in der Doku beschrieben ist, während die Pins A1, A2, A3 und 3 funktionieren wie erwartet.
Ich bin dabei einen DataLogger auf einem Arduino Uno zu programmieren. Ich habe den Uno aufgerüstet mit einem DataLogger Shield und einem LCD Shield. Ich will die Eingänge A1 - A3 für DHT11 Temperatur und Luftfeuchtigkeits-Sensoren verwenden und die Eingänge A4 und A5 als Digitale Eingänge nutzen.
Die Dokumentation sagt mir den Eingang auf GND zu legen (über einen Taster/ein Relais natürlich) um das Signal zu schalten. Nur immer wenn ich das tue, schmiert mir der UNO wegen nem Kurzschluss ab.
Das Gleiche gilt für den digitalen Eingang 2, während der Eingang 3 so funktioniert wie ich mir das vorgestellt habe.
Wenn ich die DHT11 von A1 - A3 runternehme und die Pins als INPUT deklariere funktioniert auch alles wie geplant.
Ich weiß, dass die Pins A0, 0, 1, 4, 5, 6, 7, 8, 9 und 10 von verschiedenen Funktionen (SD und LCD Shield) verwendet werden. Die Pinne 11, 12 und 13 haben wegen dem LCD Shield keine Anschlussmöglichkeit.
Was mache ich falsch?
2 Antworten
Okay, ich habs hinbekommen. Gut die Doku durchschauen und darauf achten die richtigen Pinne zu belegen hilft. Dementsprechend:
Bei einem Arduino Uno mit SD DataLogger Shield und LCD Shield gilt folgender Pinout:
const int AI_0 = A0; // LCD keys
const int AI_1 = A1; // <= Nutzbarer Analoger Eingang
const int AI_2 = A2; // <= Nutzbarer Analoger Eingang
const int AI_3 = A3; // <= Nutzbarer Analoger Eingang
const int AI_4 = A4; // RTC I2C
const int AI_5 = A5; // RTC I2C
const int DIO_0 = 0; // RX in
const int DIO_1 = 1; // TX out
const int DIO_2 = 2; // <= Nutzbarer Digitaler Eingang
const int DIO_3 = 3; // <= Nutzbarer Digitaler Eingang
const int DIO_4 = 4; // LCD_D4
const int DIO_5 = 5; // LCD_D5
const int DIO_6 = 6; // LCD_D6
const int DIO_7 = 7; // LCD_D7
const int DIO_8 = 8; // LCD_RS
const int DIO_9 = 9; // LCD_EN
const int DIO_10 = 10; // SD Chip Select
const int DIO_11 = 11; // SD SPI
const int DIO_12 = 12; // SD SPI
const int DIO_13 = 13; // SD SPI (LED)
@jort93 danke für deine Zeit
Ja, wenn du die Pins mit ground verbindest ist das ein Kurzschluss. Das ist quasi die Definition von einem Kurzschluss.
Bisschen sehr wenige Informationen um dir zu helfen, aber wenn ich wild raten müsste, vielleicht ist dein Input pin als output konfiguriert?
Die Dokumentation sieht für mich korrekt aus. hast du die richtigen pins als input konfiguriert?
Die haben einen internen pull up, haben also 5v wenn du sie nicht mit ground verbindest.
Wenn du einmal einen Kurzschluss hattest, könnte er jetzt auch schlicht kaputt sein.
Ich hab folgendes herausgefunden:
Die Pins A4 und A5 werden für die RTC I2C des SD DataLogger Shields benutzt.
Die Pins 11, 12 und 13 werden für das SPI der SD verwendet.
Und mir ist gerade aufgefallen, dass ich Statt Pin 2 und 3, Pin 1 und 2 benutzt habe, da auf dem LCD Shield die Lötpunkte nicht gegenüber den zugehörigen Pins liegen. Das Bild auf Seite 5 der Doku von AZ Delivery half weiter.
Somit ist mein Kenntnisstand:
const int AI_0 = A0; // LCD keys
const int AI_1 = A1; //
const int AI_2 = A2; //
const int AI_3 = A3; //
const int AI_4 = A4; // RTC I2C
const int AI_5 = A5; // RTC I2C
const int DIO_0 = 0; // RX in
const int DIO_1 = 1; // TX out
const int DIO_2 = 2; //
const int DIO_3 = 3; //
const int DIO_4 = 4; // LCD_D4
const int DIO_5 = 5; // LCD_D5
const int DIO_6 = 6; // LCD_D6
const int DIO_7 = 7; // LCD_D7
const int DIO_8 = 8; // LCD_RS
const int DIO_9 = 9; // LCD_EN
const int DIO_10 = 10; // SD Chip Select
const int DIO_11 = 11; // SD SPI
const int DIO_12 = 12; // SD SPI
const int DIO_13 = 13; // SD SPI (LED)
Und das werd ich jetzt mal in die Tat umsetzen.
Ich hab mir das Elegoo Starterset gekauft, in der beiliegenden Dokumentation auf Seite 60 ist die Vorgangsweise genau so beschrieben. Ich frage mich warum auf ein ein paar der digitalen und analogen EINGÄNGEN 5V anliegen.
Sämtliche inputs sind bereits konfiguriert:
pinMode(AI_1, INPUT);
pinMode(AI_2, INPUT);
pinMode(AI_3, INPUT);
pinMode(AI_4, INPUT);
pinMode(DIO_2, INPUT);
pinMode(DIO_3, INPUT);