Switch with AVR Atmega32A Microcontroller

This tutorial is about how to use button switch with AVR Atmega32A Microcontroller. In previous tutorial we have seen, how to drive LED connected to Pin “PB0” and in this tutorial lets have a look at, how to connect button to PB1 pin of microcontroller so that will control LEDs blinking by pressing button switch (tactile switch). To keep simplicity in example we’ll blink LED by 10 ms when button pressed and blink LED by 100 ms when button switch is released.

atmega32a-button-input
Button Switch With ATmega32A

In general to control hardware we often need to provide some sort of input to system through human interaction. As an example, if we take our personal computer we use mouse and keyboard to provide input to a system and then system react accordingly. If you look at keyboard, which is nothing but the bunch of buttons. I believe this tutorial will help you to understand concept. Let’s have a look at circuit connection for this experiment.

learn-embedded-system

Button-Input- ATmega32A
Button Switch with ATmega32A


/*
 * Example: ButtonSwitch
 * Created: 07-06-2013 00:05:44
 * Author: UMESH 
 */

#define F_CPU 10000000
#include <avr/io.h>
#include <util/delay.h>

int main(void)
{
  DDRB |= 1 << PINB0;
  DDRB &= ~(1 << PINB1);
  PORTB |= 1 << PINB1;

  while (1)
  {
    PORTB ^= 1 << PINB0;
    if (bit_is_clear(PINB, 1))
    {
      _delay_ms(10); //Fast
    }
    else
    {
      _delay_ms(100); //Slow, from previous
    }
  }
}

Short Explanation:

In code snippet you can see in main loop first two lines DDRB |= 1 << PBo assign PB0 pin as output for LED and DDRB &= ~(1<< PB1) assign pin PB1 as input for button switch to read input though button.

In while loop “bit_is_clear” function takes two argument (PINB,1) which used to continuously monitor state of button either pressed or un-pressed and if its un-pressed then turn LED off. This way one can give input from button switch with ATmega32A at very basic level. I hope you will find this tutorial educational and entertaining if you have question then post comment below.

Get Free Courses & Webinars
You'll receive only high quality learning material, tips & tricks
I agree to have my personal information transfered to MailChimp ( more information )
We respect your privacy

About Umesh Lokhande

Umesh Lokhande holds a Master degree in Scientific Instrumentation from University of Applied Sciences Jena, Germany. and has previously worked at Orbotech, Alere Technologies etc. Umesh is also a founder and first author of BINARYUPDATES.COM

Login

Register | Lost your password?