1.3 Analoges Schreiben¶
Überblick¶
Sie können die PWM-Welle mit analogWrite() auf den Pin schreiben. Diese Methode kann verwendet werden, um die Helligkeit der LED anzupassen, die Farbe von RGB zu ändern oder die Motordrehzahl usw. anzupassen. Hier nehmen wir LED als Beispiel, um die Gradientenhelligkeit der LED zu erhalten.
Erforderliche Komponenten¶
※ Pulsweitenmodulation¶
Pulsweitenmodulation oder PWM ist eine Technik, um mit digitalen Mitteln analoge Ergebnisse zu erzielen. Die digitale Steuerung wird verwendet, um eine Rechteckwelle zu erzeugen, ein Signal, das zwischen ein und aus geschaltet wird. Dieses Ein-Aus-Muster kann Spannungen zwischen vollständig ein (5 Volt) und aus (0 Volt) simulieren, indem der Anteil der Zeit, die das Signal einschaltet, gegenüber der Zeit, die das Signal ausschaltet, geändert wird. Die Dauer der „Einschaltzeit“ wird als Impulsbreite bezeichnet. Um unterschiedliche Analogwerte zu erhalten, ändern oder modulieren Sie diese Impulsbreite. Wenn Sie dieses Ein-Aus-Muster beispielsweise mit einer LED schnell genug wiederholen, ist das Ergebnis so, als ob das Signal eine konstante Spannung zwischen 0 und 5 V ist, die die Helligkeit der LED steuert.
Ein Aufruf von analogWrite() liegt auf einer Skala von 0 - 255, sodass analogWrite(255) ein Tastverhältnis von 100 % (immer eingeschaltet) anfordert und analogWrite(127) ein Tastverhältnis von 50 % (bei der Hälfte der Zeit) ist Beispiel.
Fritzing-Schaltung¶
In diesem Beispiel verwenden wir den PWM-Pin 9, um die LED anzusteuern. Verbinden Sie ein Ende des Widerstands mit Pin 9. Verbinden Sie den langen Stift (Anode) der LED mit dem anderen Ende des Widerstands. Verbinden Sie den kurzen Stift (negativ, als Kathode bezeichnet) der LED mit GND.
Bemerkung
Die PWM-Pins der Mega2560-Platine sind 2 - 13, 44 - 46.
Schematische Darstellung¶
Code¶
Bemerkung
Sie können die Datei
1.3_analogWrite.ino
unter dem Pfadsunfounder_vincent_kit_for_arduino\code\1.3_analogWrite
direkt öffnen.Oder kopieren Sie diesen Code in Arduino IDE.
Nachdem Sie den Code auf das Mega2560-Board hochgeladen haben, können Sie sehen, dass die LED allmählich heller wird und allmählich ausgeht.
Code-Analyse¶
Deklarieren Sie Pin 9 als ledPin
.
int ledPin = 9;
analogWrite()
in loop() weist ledPin
einen analogen Wert (PWM-Welle) zwischen 0 und 255 zu, um die Helligkeit der LED zu ändern.
analogWrite(ledPin, value);
Mittels einer for-Schleife kann der Wert von analogWrite()
schrittweise zwischen dem Minimalwert (0) und dem Maximalwert (255) verändert werden.
for (int value = 0 ; value <= 255; value += 5) {
analogWrite(ledPin, value);
}
Um das experimentelle Phänomen deutlich zu sehen, muss dem for-Zyklus eine delay(30)
hinzugefügt werden, um die Helligkeitsänderungszeit zu steuern.
void loop() {
for (int value = 0 ; value <= 255; value += 5) {
analogWrite(ledPin, value);
delay(30);
}
}