Anleitung: Autodesk Circuits
Seite 6: PWM-Signal erzeugen
Im nächsten Schritt sollen dem Aufbau noch ein paar weitere Bauteile hinzugefügt werden: Taster, LED mit Vorwiderstand (1 kΩ), Voltmeter und Oszilloskop. Nachdem Sie das Multimeter eingebaut haben, ändern Sie bei den Eigenschaften zum Objekt die Messgröße (Mode) auf Voltage, um Spannungen zu messen. Für das Scope stellen Sie bei Time per division 1 ms ein.
Ergänzen Sie den Quelltext zu diesem Gesamtprogramm:
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
uint8_t ledPin = 9;
uint8_t btnPin = 7;
uint8_t valuePWM = 128;
void setup()
{
lcd.begin (16, 2); // set up the LCD's number of columns and rows:
lcd.print ("hello Make:"); // Print a message to the LCD.
pinMode (ledPin, OUTPUT); // sets pin as output
pinMode (btnPin, INPUT_PULLUP); // set pin as input with internal Pullup
analogWrite (ledPin, valuePWM); // PWM signal out
lcdOutValue();
}
void lcdOutValue(void)
{
lcd.setCursor(0, 1); // set the cursor to column 0, line 1. (note: line 1 is the second row, since counting begins with 0)
lcd.print("PWM value: ");
lcd.print(valuePWM); // print the value
lcd.print(" "); // overwrite old values
}
void loop()
{
if (!digitalRead (btnPin)) // Button pressed (=LOW)?
{
_delay_ms(20); // debouncing
while (!digitalRead (btnPin)) ; // wait until released
valuePWM += 16;
analogWrite (ledPin, valuePWM); // PWM signal out
lcdOutValue();
}
}
Wenn Sie anschließend die Ausführung wieder starten, dann sollte auf dem Oszilloskop das phasenmodulierte Signal (PWM) zu sehen sein. Mit jedem Klick auf den Taster wird der Wert erhöht, bis die Variable überläuft und wieder bei 0 begonnen wird. Geänderte PWM-Werte führen zu einer Änderung der Helligkeit der LED, weil die LED mit längeren oder kürzeren Impulsen angesteuert wird. Am oberen Rand sehen Sie die Zeit, die die Simulation bereits läuft. Hier wird deutlich sichtbar, dass es sich um keine Echtzeitsimulation handelt, da die Sekunden langsamer verstreichen. Bei zeitkritischen Anwendungen ist das zu berücksichtigen.