Fast string to integer conversion (C/C++)

This article presents a few fast and lightweight implementations of conversion from ASCII string to integer. It can be an interesting fit to use in a small microcontrollers like for example ATtiny13, which resources are very limited. All presented functions are simplified and require a null-terminated array of chars as an argument. Convert string to … Read more

Fast string comparison for microcontrollers (C/C++)

This short article presents trivial but fast and memory efficient function to compare two strings. Function returns “0” (zero) on success (strings are the same), otherwise function returns the position where different characters occurred. Example code #include <stdint.h> #include <assert.h> static int8_t xstrcmp(const char *s1, const char *s2) { while(*s1 != ‘\0’ && *s1 == … Read more

Arduino – LED logarithmic fade

Yet another Arduino LED fade effect. Similar to Arduino – LED linear fade. However, this one is using logarithmic scale for the delay time. It gives a nice “breathing” LED light effect. With properly adjusted settings it can look like a sleep LED effect in a macbook. This example Arduino project lights the basic LED connected in series with … Read more

Arduino – LED linear fade

This article explains how to make an example Arduino project that lights the basic LED (connected in series with resistor to pin 11) using linear fade effect. To build a nice fade effect you need to know how to change the LED brightness, first. The complete code is also on GitHub, here. Linear Fade effect changes the LED brightness … Read more

Arduino – basic LED blink

Yet another Arduino blinking LED example. This one is using BasicLed class to make the LED control more comfortable. The code is on Github, here. Parts Required arduino board (i.e. Arduino/Genuino UNO) basic LED (i.e. on-board LED) Software This code is written in C++ and can be compiled using an Arduino IDE. All information about how to compile this project is here. … Read more

Generating true random numbers using floating ADC input – myth or facts?

This article shows the feasibility of using ADC input of AVR chip as a source of True Random Number Generator (TRNG). I have prepared the testbed and recorded via UART (115200; 8N1) about 50’000’000 of 32bit random numbers. The tests took about 11 hours (including a time I spent to pray to UART for a … Read more

AVR – dockerized toolchain

Lightweight docker image built on top of alpine:3.10 with installed AVR toolchain and few additional tools: AVR8 toolchain (2019, AVR_8_bit_GNU_Toolchain_3.6.2_1759) avrdude (v6.3) make (v4.2) cmake (v3.14) DockerHub: https://hub.docker.com/r/lpodkalicki/avr-toolchain Installing Bellow you can find recommended simple one-line installer that pulls the newest docker-image and installs avr-toolchain script into “/usr/bin/” directory. curl https://raw.githubusercontent.com/lpodkalicki/avr-toolchain-docker/master/install.sh | bash -s — Getting started Install toolchain using … Read more

AVR development board for ATtiny13, ATtiny85, etc.

This is an upgraded version of MBAVR-1 – a minimalist development board for tiny AVR microcontrollers like ATtiny13, ATtiny15, ATtiny25, ATtiny45 or ATtiny85. The board has been designed for a rapid prototyping of devices based on tinyAVR chips. The small-size MBAVR-1t board can be installed directly on protoboard or used as shield by other PCB. Also, by adding DIP8 holder you can … Read more

ATtiny13 – reading temperature and humidity from DHT11

This article shows how to make ATtiny13 to read temperature and humidity from DHT11 sensor and log this information using a Software UART. What you need is connect DHT11 DATA-pin to PB0 and RX-pin of USB to serial adapter to PB3 of ATtiny13. You also need to connect sensor to power supply (3.3V or 5V). Well, with a little code … Read more