value = analogRead(pin); // setzt 'value' gleich mit 'pin'
Bemerkung: Analoge Pins müssen im Gegensatz zu digitalen nicht zuerst als Eingang oder Ausgang deklariert werden.
analogWrite(pin, value)
Schreibt pseudo-analoge Werte mittels einer hardwarebasierten Pulsweiten Modulation (PWM) an einen Ausgangspin. Auf neueren Arduino Boards mit dem ATmega 168 Chip ist diese Funktion für die Pins 3, 5, 6, 9, 10 und 11 anwendbar. Ältere Arduinos mit dem ATmega8 unterstützen nur die Pins 9,10 und 11. Der Wert kann als Variable oder Konstante Bereich 0-255 festgelegt werden.
analogWrite(pin, value); // schreibt 'value' auf den analogen 'pin'
Ein Wert 0 generiert eine gleichmäßige Spannung von 0 Volt an einem festgelegten Pin; Ein Wert von 255 generiert eine gleichmäßige Spannung von 5 Volt an eine festgelegten pin. Für Werte zwischen 0 und 255 wechselt der Pin sehr schnell zwischen 0 und 5 Volt - je höher der Wert, desto länger ist der Pin HIGH (5 Volt). Bei einem Wert von 64 ist der Pin zu dreivierteln der Zeit auf 0 Volt und zu einem Viertel auf 5 Volt. Ein Wert von 128 führt dazu, dass die Ausgangsspannung zur Hälfte der Zeit auf HIGH steht und zur anderen Hälfte auf LOW. Bei 192 misst die Spannung am Pin zu einer Viertel der Zeit 0 Volt und zu dreivierteln die vollen 5 Volt.
Weil dies eine hardwarebasierte Funktion ist, läufte die konstante Welle unabhängig vom Programm bis zur nächsten Änderung des Zustandes per analogWrite (bzw. einem Aufruf von digitalRead oder digitalWrite am selben Pin).
Bemerkung: Analoge Pins müssen im Gegensatz zu digitalen Pins nicht zuvor als Eingang oder Ausgang deklariert werden.
Das folgenden Beispiel liest einen analogen Wert von 'pin', rechnet den Wert per Division durch 4 um und gibt ihn dann als PWM Signal an 'led' aus.
int led = 10; // LED mit 220 Widerstand an Pin 10
int pin = 0; // Potentiometer am analogen Pin 0
int value; // Wert fuer Auslesung
void setup(){} // kein Setup benoetigt
void loop()
{
value = analogRead(pin); // setzt 'value' gleich mit 'pin'
value /= 4; // wandelt 0-1023 in 0-255 um
analogWrite(led, value); // gibt das PWM Signal an 'led' aus
}
0 Antworten auf “Analoger Input - Output”