AEQ-WEB

Standalone ATMega28 Read Digital Input
ATMega328
11.08.2018

ATMega328 Taster einlesen

Zu diesem Artikel gibt es auch ein Video auf Youtube: ATMega328 digitalen Input (Taster) einlesen - Standalone AVR, C


AMega320 I/O

In diesem Artikel geht es um das Einlesen digitaler Inputs. Dabei befindet sich auf PORTB0 ein Taster, der mit einem 10KOhm Widerstand gegen die Masse geschaltet ist. Der Taster selbst wird mit 5 Volt versorgt und lässt diese bei der Betätigung auch durch. Auf PORTB1 ist eine LED mit einem 220-Ohm-Vorwiderstand angeschlossen. Am Mikrocontroller befindet sich noch standardmäßig der 16 Mhz Oszillator als Taktgeber. Die restlichen Leitungen sind für den AVRISP Programmer und für die externe Stromversorgung.


ATMega328 Mikrocontroller Taster Input Schaltplan

Wie die Software funktioniert

Die Software wurde in C mit Amtel Studio geschrieben. Am Beginn vom Code wird die Taktfrequenz vom Oszillator und die benötigte Bibliothek deklariert. Vor dem Hauptprogramm die Ports für den digitalen Eingang und Ausgang definiert. Der Code läuft in einer Schleife und fragt den Status vom Eingang ab. Ist der Eingang auf High, dann wird die LED für 5 Sekunden eingeschaltet. Wenn der Eingang auf LOW ist oder der Taster nicht gedrückt wird, so bleibt die LED aus.


Quellcode
#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
	DDRB |= (1 << DDB1); //Define output
	DDRB &= ~(1 << DDB0); //Define input
	while(1)
	{
		if(PINB & (1<<PINB0) == 1){ //If button is pressed

		PORTB |= (1<<PORTB1); //Turn LED on
		_delay_ms(5000); //Wait 5 seconds

		}
		PORTB &= ~ (1<<PORTB1); //Turn LED off
	}
}