Saturday, April 25, 2020

ATMega32 how to set and reset relay via digital buttons

In this example, I use digital inputs outputs of ATMega32 to control a relay. Relay has an advantage of driving alternative that the microcontroller could do that directly.

The CPU clocks at 16 MHz, supplied at +5 V DC.

Simulation Schematic, The system controlled by ATMega32 AVR

PC0 of PortC is a digital output, driving a relay. The relay coil work at +5V. You can choose another voltage rating.
PA0 is an input, connected to a push button sw1. When the button is pressed, PC0 become set.
PA7 is an input, connected to a push button sw2. When the button is pressed, PC0 become reset.

Source code is written in Atmel Studio 7 with AVR GCC.

/*
 * setResetButton.c
 *
 * Created: 4/25/2020 5:23:29 PM
 * Author : balangKash
 */ 
#include <avr/io.h>
#define setButton (PINA&0x01)
#define resetButton (PINA&0x80)
int main(void)
{
    DDRA=0x7E; //PA0 and PA7 are input
    PORTA=0x81; //Set PA0 and PA7 High
    DDRC=0xFF;
    /* Replace with your application code */
    while (1) 
    {
        if (setButton==0) PORTC=0x01;
        if (resetButton==0)    PORTC=0x00;
    }
}

Back to main tutorial page ATMega32 tutorials in C with Atmel Studio 7.

No comments:

Post a Comment

Search This Blog

Labels

25AA010A (1) 8051 (7) 93AA46B (1) ADC (30) Analog Comparator (1) Arduino (15) ARM (6) AT89C52 (7) ATMega32 (54) AVR (57) CCS PICC (28) DAC (1) DHT11 (2) Display (105) Distance Sensor (3) DS18B20 (3) dsPIC (2) dsPIC30F1010 (2) EEPROM (5) Environment Sensor (4) esp8266 (1) I2C (29) Input/Output (67) Interrupt (19) Keil (5) Keypad (10) LCD (46) Master/Slave (1) MAX7221 (1) MCP23017 (5) MCP23S17 (4) Meter (3) MikroC (2) Motor (15) MPLABX (66) Nokia 5110 LCD (3) OLED (2) One-Wire (6) Oscillator (8) PCB (6) PCD8544 (3) PCF8574 (5) PIC (107) PIC12F (2) PIC16F628A (2) PIC16F630 (1) PIC16F716 (3) PIC16F818 (10) PIC16F818/819 (2) PIC16F84A (15) PIC16F876A (1) PIC16F877A (9) PIC16F88 (1) PIC16F887 (60) PIC18 (19) PIC18F1220 (4) PIC18F2550 (3) PIC18F4550 (12) PWM (11) RTC (8) Sensor (10) SH1106 (1) Shift Register (11) Shift Registers (2) SPI (24) STM32 (6) STM32 Blue Pill (6) STM32CubeIDE (6) STM32F103C8T6 (6) SysTick (3) temperature sensor (11) Thermometer (21) Timer/Counter (30) TM1637 (2) UART (7) Ultrasonic (4) Voltmeter (7) WDT (1) XC16 (2) XC8 (94)