avr-gcc 4.9.2 and avr-libc 1.8.1 compiled for Windows

It’s been about 3 years now since I last compiled up avr-gcc and avr-libc for Windows and it proved surprisingly popular with you so I’m now bringing you the latest, as of March 2015, versions of avr-gcc and avr-libc. I’ve also included avrdude 6.1 for completeness even...

The Standard Template Library (STL) for AVR with C++ streams Jan15

The Standard Template Library (STL) for AVR with C++ streams

Yes you did read that correctly, this post will present a port of the Standard Template Library, or STL as it’s more commonly known, to the AVR microcontrollers. Introduction The STL has been around forever in computing terms with copyright notices appearing in the source code as far...

Debugging AVR dynamic memory allocation Jan01

Debugging AVR dynamic memory allocation

The avr-libc port of the standard C library for gcc supports dynamic memory allocation through malloc() and free(). These functions (particularly when used to implement the new and delete C++ operators) allow you to use more memory throughout the life of your program as it’s needed than...

Animation on the Arduino with easing functions Dec05

Animation on the Arduino with easing functions

In this article I’ll show you how to do advanced animation techniques on the Arduino using what are known as easing functions. What’s an easing function? Computer animation of motion involves making an object appear to move from A to B over some time period T. The simple way to do...

LCD backlight and contrast manager Nov28

LCD backlight and contrast manager

This article will present a circuit and accompanying source code that you can use to control the backlight and contrast functions of an HD44780-compatible LCD. Controlling these functions from software allows you to cut down on external components such as dials, saving you space and...

Debounced buttons with auto-repeat in AVR C++ Nov22

Debounced buttons with auto-repeat in AVR C++

This article presents a C++ class that implements an auto-repeat button. An auto-repeat button behaves like a key on a keyboard. That is, it fires first when you press it and then repeatedly when you hold it down. The class allows you to configure the length of time that the button waits...

Debouncing buttons in AVR C++ Nov21

Debouncing buttons in AVR C++

On the face of it, reading the open/closed state of a button should be straightforward. You would just wire up the button circuit and tap the current flow into one of the Arduino digital pins configured for input. Unfortunately you will soon discover that it’s just not that simple. At...

USBasp drivers for 64 bit Windows 7 Nov14

USBasp drivers for 64 bit Windows 7

The most cost-effective way to program an ATmega/ATtiny MCU that’s not embedded in a development board such as the Arduino is to buy yourself a USB in-system programmer (ISP). There are dozens available on ebay for just a few pounds, and that’s where I got mine. Unfortunately when...