Go Down

Topic: [Uno:] Anfängerfrage zu pin13 und LEDs (Read 1 time) previous topic - next topic

HaWe

Jul 13, 2014, 10:46 am Last Edit: Jul 13, 2014, 12:05 pm by HaWe Reason: 1
hallo,
ich versuche gerade pin 13 über einen externen Taster zu lesen.
der Taster ist mit 1 Anschluss an Masse, mit dem anderen an pin13.
Code:
Code: [Select]

void setup() {
 pinMode(13, INPUT_PULLUP);
 Serial.begin(115200);

}

void loop() {
 byte pinval=digitalRead(13);
 Serial.println(pinval);
 delay(10);
}


wenn ich nichts mache, ist led13 schwach an, wenn ich den Taster drücke, geht sie aus - das hatte ich in etwa erwartet.
Über Serial.println wird aber IMMER nur 0 angezeigt - wieso?

jurs


wenn ich nichts mache, ist led13 schwach an, wenn ich den Taster drücke, geht sie aus - das hatte ich in etwa erwartet.
Über Serial.println wird aber IMMER nur 0 angezeigt - wieso?


Dann hast Du einen "alten" UNO mit historischer Schaltung und keinen "UNO R3"!

An den "alten" UNOs ist an Pin-13 eine LED direkt über Vorwiderstand angeschlossen. Diese LED-Widerstandsschaltung zieht den Pegel auf ca. 1.7V und damit auf LOW, wenn Du den internen PullUp-Widerstand aktivierst. Deshalb verwendest Du Pin-13 an diesen alten Boards besser nur als OUTPUT.

Nur an den "R3" UNO-Boards ist Pin-13 ohne Einschränkungen als INPUT oder OUTPUT nutzbar, da hier die angeschlossene LED über einen Operationsverstärker vom Controller entkoppelt ist.

HaWe

aha - das stimmt, einen R3 habe ich nicht :(

danke für die Info! 8)

HaWe

#3
Jul 13, 2014, 11:40 am Last Edit: Jul 13, 2014, 11:42 am by HaWe Reason: 1
Anschlussfrage:
so funktioniert jetzt der Code mit Schalter an pin 12:
Code: [Select]

void setup() {
  pinMode(12, INPUT_PULLUP);
  pinMode(13, OUTPUT);
  Serial.begin(115200);

}

void loop() {
  byte pinval=digitalRead(12);
  digitalWrite(13, pinval);
  Serial.println(pinval);
  delay(10);
}


wenn ich jetzt eine externe led (z.B. an pin11) ohne Vorwiderstand ansteuren will, wollte ich
pinMode(11, OUTPUT_PULLUP);
verwenden, das versteht er aber nicht. Was mache ich da falsch?

combie

Quote
wenn ich jetzt eine externe led (z.B. an pin11) ohne Vorwiderstand ansteuren will, wollte ich

So entscheidet der Chiphersteller, ob die LED getötet wird, oder der Prozessor.

Also:
Vergiss  es.
Tus nicht.
Wer seine Meinung nie zurückzieht, liebt sich selbst mehr als die Wahrheit.

Quelle: Joseph Joubert

jurs


wenn ich jetzt eine externe led (z.B. an pin11) ohne Vorwiderstand ansteuren will, wollte ich
pinMode(11, OUTPUT_PULLUP);
verwenden, das versteht er aber nicht. Was mache ich da falsch?


Es gibt kein "OUTPUT_PULLUP".

Und ich weiß nicht, was das werden soll.

LEDs haben Vorwärtsspannungen zwischen circa 2V (rot) und 3V (weiß) und dürfen an einem 5V Output nur mit Vorwiderstand betrieben werden.

HaWe

ja, das habe ich gemerkt, dass es keinen OUTPUT_PULLUP gibt - denn da meckert ntl der Compiler  :smiley-eek:
ich dachte, man könnte auch zu jedem output-pin einen eingebauten Vorwiderstand einschalten, um den externen Vorwiderstand zu sparen?

Serenifly

Ein Pullup Widerstand ist kein Vorwiderstand

HaWe

oha!  :~

na, dann gehts wohl nicht so einfach wie ich dachte  ;)

jurs


ich dachte, man könnte auch zu jedem output-pin einen eingebauten Vorwiderstand einschalten, um den externen Vorwiderstand zu sparen?


Nein, Du kannst zu jedem Input-Pin einen eingebauten PullUp-Widerstand einschalten ("INPUT_PULLUP").
Pull-Widerstand, nicht Vor-Widerstand!
Schaltbare Vorwiderstände gibt es nicht.

HaWe

ok, danke an alle für die schnellen Antworten :)

Go Up