Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
uc-welt:gscheiduino:05-eingaenge [2016/01/05 09:27] Hannes Jochriemuc-welt:gscheiduino:05-eingaenge [2024/02/06 09:43] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
-[[uc-welt:gscheiduino:04-ampelsteuerung|← Kapitel 4: Ampelsteuerung]] | [[uc-welt:gscheiduino:00-uebersicht|↑ Übersicht]]  | [[uc-welt:gscheiduino:06|Kapitel 6:  →]]+[[uc-welt:gscheiduino:04-ampelsteuerung|← Kapitel 4: Ampelsteuerung]] | [[uc-welt:gscheiduino:00-uebersicht|↑ Übersicht]]  | [[uc-welt:gscheiduino:06-treppenhaus|Kapitel 6: Treppenhauslicht →]]
  
 ====== Kapitel 5: Eingänge ====== ====== Kapitel 5: Eingänge ======
Zeile 98: Zeile 98:
  
 <note important>Ein hochohmiger Eingang ist in der Digitaltechnik instabil, es sollte immer ein Widerstand gegen VCC oder GND verwendet werden, um einen definierten Pegel zu erhalten!</note> <note important>Ein hochohmiger Eingang ist in der Digitaltechnik instabil, es sollte immer ein Widerstand gegen VCC oder GND verwendet werden, um einen definierten Pegel zu erhalten!</note>
 +
 +===== Interner Pullup =====
 +
 +Um uns diesen externen Widerstand zu sparen, können wir eine sehr geniale Funktion der AVR-Controller nutzen: Die internen Pullup-Widerstände.
 +
 +Im Datenblatt ist dieser so dargestellt:
 +
 +{{:uc-welt:gscheiduino:005-pullup.png?direct&200|internet Pullupwiderstand}}
 +
 +Jeder I/O-Pin besitzt so einen Pullup-Widerstand. Eingeschaltet wird dieser sehr einfach mit folgenden zwei Schritten:
 +
 +  - Pin als Eingang definieren
 +  - Pin auf HIGH setzen
 +
 +Pin auf HIGH-setzen geschieht wie wir es in [[uc-welt:gscheiduino:02-ausgaenge|Kapitel 2]] gelernt haben. Der Code sieht also so aus:
 +
 +<code c>
 +pinMode(PIN, INPUT);
 +digitalWrite(PIN, HIGH);
 +</code>
 +
 +Testen können wir das an unserem aktuellen Aufbau, bei dem wir den Widerstand entfernt haben. Wir erweitern den Code wie folgt:
 +
 +<file c kapitel05_eingang-pullup.ino>
 +void setup()
 +{
 +  pinMode(13, OUTPUT);   // Pin13 als Ausgang definieren
 +  pinMode( 7, INPUT);    // Pin7 als Eingang definieren
 +  digitalWrite(7, HIGH); // Pullup an Pin7 einschalten
 +}
 +
 +void loop() 
 +{
 +  digitalWrite(13, digitalRead(7)); // Anstatt HIGH oder LOW fragen wir hier Pin7 ab
 +}
 +</file>
 +
 +Wenn wir diesen Code auf den Controller laden erhalten wir das selbe Ergebnis wie mit Widerstand, die LED erlischt erst, wenn wir die Taste drücken. Ein Berühren des violetten Kabels hat keine Auswirkungen.
 +
 +Wir vertiefen unser Wissen wieder mit einem kleinen Beispiel: [[uc-welt:gscheiduino:06-treppenhaus|Kapitel 6: Treppenhauslicht]]