[ Log In ]
Image of the Atmega324p


Serial to USB converter with Micro USB cable

USB to Serial Converter

Thumbnail: Crystal Oscillator 18.432 MHz for UART

18.432 MHz Crystal Oscillator 18pf 30ppm

Thumbnail: 22 pF Capacitor

22 pF Multilayer Ceramic Capacitor

Thumbnail: Quartz crystal oscillator - 16 MHz

16 MHz Crystal Oscillator 20 pF Through Hole

Thumbnail: 4x4 keypad top view.

4x4 Keypad with Adhesive Backing

Thumbnail: quad buffer line driver 74HC126E

Quad Buffer Line Driver (Through Hole)

USB AVR programmer

USB AVR Programmer

3 pin slide switch

SPDT Slide Switch 3 pin 30V

Handheld auto range multimeter

Handheld Auto Ranging Digital Multimeter

Skip Navigation Links

*** New Exclusive Tutorial ***

Be the first to get the knowledge. Learn in detail how to communicate and program I2C / TWI (Two Wire Interface). You will become an expert and be able to make your own libraries with this video.

Microcontroller Tutorial Made for the Beginner

If you are a beginner, looking to gain knowledge of microcontrollers, you may find that this tutorial series is a perfect match. This tutorial investigates various uses and features of the popular AVR Atmega32 microcontroller. The tutorial shows real programs being written and explained with circuit development. Basic and intermediate programming concepts and uses are also provided along the way. Through the many examples, you can be an expert in embedded systems in no-time.

Microcontroller - Intro

Learn the basic features of the AVR Atmega32 microcontroller and some information on the uses of each pin. The programming of the chip (getting a program on the chip) is briefly explained as well.

MCU Programmer 1

We get our hands dirty and create a convenient little interface for the programmer dongle to the appropriate pins of the microcontroller.

MCU Programmer 2

The driver for the programmer that is used to transfer code to the microcontroller is installed. The installation process is compatible with the Windows 7 operating system as well as previous Windows versions.

MCU WinAVR Install

The driver and interface is ready, but a programming environment is needed to actually write the programs and transfer them into the microcontroller. In this tutorial, we set up an AVR-GCC programming environment called winavr.

MCU Add LED and Test

Find out more than you probably every wanted to know about an LED (Light Emitting Diode) and how to hook it up to the microcontroller.

MCU First Program

Write the first microcontroller program to do something with the LED and tranafer it to the microcontroller. This is the true test to see if all of the pre-setup works.


We delve into microcontroller programming a bit more and make the LED blink.

Installing Atmel Studio 6

Learn how to install Atmel Studio 6 and setup the microcontroller programming functionality.

MCU Add a Button

In this tutorial, we add the ability for the human to interact with the microcontroller. A button is added to change the blink speed on the LED.

Button Debouncing

A very critical subject that must be addressed with buttons and how they interact with the microcontroller.

Software Debounce

We carry on with the button debouncing, but this time, we have the microcontroller program doing the debouncing in software.

The Button Game

Now we take the LEDs and push button to a whole new level and create a game with the microcontroller.

Creating a Button Library

Abstracting the button code and software debouncing into a library so the main microcontroller programming is more compact.

Timers Counters Basic

tick, tock, tick tock. Find out how the microcontroller counts and times. Learn how to program the microcontroller to control the timer and counter.

Intro to Interrupts

This is where interruptions are good manners and even desirable. We interrupt routines from events in the microcontroller and create microcontroller programs to handle events.

Interfacing an LCD

A great way to see what is going on, LCDs (Liquid Crystal Display) provide an informative way to output data from the microcontroller.

First LCD Program

We know all there is to know about how the LCD functions internally and how we need to communicate to it from the microcontroller. In this tutorial, we jump in and write the first microcontroller program to display some characters to the LCD.

LCD and Strings

In the previous tutorial on the first program for the LCD, we could only display single characters. Sure, it was a good start and a relatively simple implementation, but we can do better. This time, we program the microcontroller to display strings (one or more characters) at one time.

Numbers on the LCD

Displaying numbers on the LCD is probably the most useful way to use the LCD and see what is going on in the microcontroller. This tutorial will show how to convert an integer variable, or any other number to a string so we can display it on the LCD.

Separating the LCD Code

It's time to unclutter the main.c code and get all of the LCD routines to their own library so the main.c is more readable. This will make programming for the microcontroller much more fun.

Function to Display Integers

Create a new function within the MrLCD library to display an integer and at a specified location. Programming for the microcontroller will be a bit more readable and the overall number of lines of code for the main microcontroller program will be reduced.

Power Sources

Are you wondering how to power up the microcontroller without the help of the computer's usb port? This tutorial will show the use of batteries, wall adapter, or the USB port for powering the microcontroller.

Making Connectors

Check out this handy way to connect peripherals to the microcontroller using headers.


Do you really know how a potentiometer works? Do you know how to make it a super cool voltage divider? Learn how to use a potentiometer to get a variable voltage so it can be used in the ADC (Analog to Digital converter) on the microcontroller.

Intro to ADC

Learn how the ADC (Analog to Digital Converter) works, and a few tip on keeping your analog signal and your microcontroller happy.

ADC - First Program

Let write our first ADC program and have the microcontroller read the voltage coming from the potentiometer.

ADC and 10-Bits

Increase the resolution of the microcontroller ADC by capturing the 10-bit result (a result that will range between 0-1023).


Get to know accelerometers and how a particular variety is connected to the microcontroller.

Measure ADC Noise

Are you constantly getting ADC noise and is it driving you crazy? This tutorial will show you how to measure this noise and see the measurements drop when noise reduction techniques are applied to the signal and the microcontroller.

ADC Multiple Channels

So, one sensor, or device being connected to the microcontroller ADC isn't enough? Well, see how to use the other channels of the ADC.

Intro to Hobby Servos

Make things move with servos and get ready to learn how to interface these devices to microcontrollers.

Intro to PWM

Learn the details of PWM (Pulse Width Modulation) and see what we need to know so we can start outputting PWM signals from the microcontroller to various devices.

Control a Servo with PWM

Now that we have some PWM concepts understood, let's control a servo from the microcontroller! We will get into the meat of really understanding PWM and how PWM will be able to control the horn of a hobby servo.

UART and USART Details

Using the microcontroller to communicate with the UART and USART features.

UART One Way Comm.

Using the UART to communicate from a transmitting microcontroller to a receiving microcontroller.

I2C Programming (Exclusive)

Get detailed instructions on how to code for the I2C/TWI (Two Wire Interface) using the Atmega 324p microcontroller. In this exclusive video, we will communicate with an ADXL accelermoter.