Events

:

:

Elektronik | Funk | Software

Der Technik-Blog

  • Social Media

    Werbung:


    Neue Artikel


    Events

    • Keine zukünftigen Events vorhanden

    Der Technik-Blog

    ATMega328 Amtel Studio LED PWM Fade

    ATMega328 LED PWM Fading

    Alex @ AEQ-WEB

    Zu diesem Artikel gibt es auch ein Video auf Youtube: Standalone ATMega328 PWM LED Fading - Mikrocontroller

    In diesem Beitrag geht es um die PWM (Pulsweitenmodulation) Funktion vom ATMega328. Die PWM gesteuerte LED wird langsam immer heller und dann wieder dunkler. Das Projekt ist mit dem Blink-Projekt vergleichbar, nur dass die LED mit 255 Stufen heller und dunkler wird.

    Werbung:

    Wie PWM funktioniert

    Digitale PWM-Signale sollen so aussehen, wie eine Sinuskurve, wo sich die Spannung abwechselnd ändert. Bei den Mikrocontrollern geschieht dies in digitaler Form. Im Gegensatz zur analogen Sinuswelle wird bei digitalen PWM-Signalen eine Rechteckwelle erzeugt. Das Maximum beträgt 5 Volt, das Minimum 0 Volt. Durch das extrem schnelle ein und ausschalten der LED und durch die Dauer diese Impulse, erreicht man dadurch ein PWM-Signal. Dieses Signal sieht so aus, als würde die LED eine Spannung, je nach Einstellung (0-255) von 0 bis 5 Volt haben. Viele Mikrocontroller unterstützen PWM, allerdings nicht auf jeden Port.

    Der Schaltplan

    Für die LED wird ein Vorwiderstand von 220 Ohm benötigt. Da der Mikrocontroller in diesem Beispiel nicht mit einem Board betrieben wird, muss auch der Taktgeber vorhanden sein.Der Controller ist auch mit einem AVRISP Programmer verbunden, die die Software auf den Mikrocontroller lädt. Außerdem ist noch eine externe Stromquelle von 5 Volt notwendig.

    Werbung:

    Source Code
    #include <avr/io.h>
    #include <util/delay.h>
    #define F_CPU =  16000000UL
    
    int main(void){
    DDRB |=  (1<<PORTB1); //Define PORTB1 (PIN15) as Output
    TCCR1A |= (1<<COM1A1) | (1<<WGM10);  //Set Timer Register   
    TCCR1B |= (1<<WGM12) | (1<<CS11); 
    OCR1A = 0;
    int timer;
        while(1) {
    		while(timer < 255){ //Fade from low to high
    		timer++;
    		OCR1A = timer;
    		_delay_ms(50);
    		}	
    		while(timer > 1){ //Fade from high to low
    		timer--;
    		OCR1A = timer;
    		_delay_ms(50);
    		}
        }
    }


    122X122

    Über den Autor

    Alex, der Gründer von AEQ-WEB. Seit über 10 Jahren beschäftigt er sich mit Computern und elektronischen Bauteilen aller Art. Neben den Hardware-Projekten entwickelt er auch Webseiten, Apps und Software für Computer.

    Top Artikel in dieser Kategorie:

    Amtel Studio ATMega328 LED Blink Example in C++

    ATMega328 LED Blink Beispiel

    • DE/EN

    In diesem Artikel zeigen wir, wie eine LED mit dem ATMega328 gesteuert wird. Programmiert wird alles in C++ mit Amtel Studio

    Weiterlesen
    ATMega328 4Bit LCD Display Control

    ATMega328 16x2 4-Bit LCD Display

    • DE/EN

    In diesem Artikel zeigen wir, wie mit dem ATMega328 ein 16x2 Zeichen LCD Display mit 4-Bit angesteuert wird. Programmiert wird alles in C mit dem Amtel Studio

    Weiterlesen

    Social Media

    Werbung:


    Neue Artikel


    Events

    • Keine zukünftigen Events vorhanden