Today I faced the problem that I wanted to write an int (integer) to the integrated Arduino EEPROM. The Atmel ATMega328 chip has an address space of 0-1023 and each of these slots can save 1-Byte or 8-Bit (which is the same btw).
Now an int is a number that goes from −32.768 to 32.767 (or 65.535 if unsigned) and needs 2 Bytes for storage because this range of values can be decoded in 2-Bytes or 16-Bits (eg. 1100 0000 0101 0001 = 49.233)
The thing is that the standart Arduino EEPROM library just writes 1 Byte (values from 0-255 or a number that can be decoded in 8-Bit (1-Byte) eg. “0000 0110”) to an address specified.
Here is a little illustration how the EEPROM (or our little problem) “looks” like:
So I did some research and found some solutions. All you need to do is to do some bit-shifting magic and voilá you can decompose the int to its Continue Reading →
In the previous blog post we learned how to avoid delay() if necessary. It would be very convenient when we are able to add a layer of abstraction to this code so when can easily reuse it if we need it.
Before we can begin creating a custom Arduino class, we need to create these files:
- SCAsyncTimer.cpp ( = the implementation, this is where the most of the code goes)
- SCAsyncTimer.h ( = the header, this is some kind of a “table of contents” for our class)
- keywords.txt ( = optional the keywords, here we can specify the keywords which then get colored in the IDE)
Create these files either in your sketch directory (so its only available in this sketch – restart the IDE so the Continue Reading →
The main problem with using delay() in your Arduino sketch is simply: it will block the whole system for the amount of time you specified. Since your microprocessor is pretty fast compared to most of the delay() time he is very bored, gets lonely and depressive if you do not care for him…
While that could be okay for most circumstances and projects, when going Continue Reading →
I wanted to build an Arduino mood lamp that worked without any buttons and is customizeable for any mood / light situation. So I did a little research and found about the posibility to trigger input on the Arduino with something called “capacitive sensing” and began to design a lamp with 3 input sides which are separate Continue Reading →
I started a little Arduino project involving an OLED (SSD1306) display using the u8glib library. I faced the issue that I wanted a few custom pixel / bitmaps for the project and also wanted to propably animate the grafics… and its very inconvenient to write these little pixel fellas by hand converting bitmaps to hex representation not Continue Reading →
To be honest: in the beginning I had no idea that there is such a thing like CNC machines. CNC stands for “Computer Numerical Control” and there are a ton of different machines out there ranging from 3 up to 5 axis types. But at the moment I realized that I could plan and build things virtually and let the machine do the ultra tiny Continue Reading →
There are a couple of cheap OLED displays available on eBay and I really struggled to get them to work with the Arduino. Some of them have the manufacturer “Heltec” printed on the circuitboard and most of them Continue Reading →
I tried to simplify and refactor some of my code for a new Arduino project lastly and came up with some interessting programming concepts in C/C++ I never heard of before my Arduino adventures.
At first I wanted to get rid of my String class coding. Its evil. As far as I know its not very efficient to work with in the Arduino (C/C++) programming environment especially in embedded systems like the small ATMegas and ATTinies. Its slow and allocates dynamic memory which could lead to memory heap fragmentation etc.. Short: they suck! 😉 Better use Chars but unfortunately they arent like the fluffy little Strings, they are spikey hedgehogs… Since Chars arent that friendly like Strings with all theire nice methods I needed to write some convenience methods by my own.
After a very nerdy weekend in my nerd cave, some experimentation and asking questions in the Arduino forum (best forum and community _ever_ ) I learned Continue Reading →
This formula is nothing very special but I had to think some time about it. 😉 For my CNC I need to calculate the speed of the machine in mm/min (seems this is the standart measuring unit at least in metric systems). Here it is:
– Threadpitch: 0.8mm
– Steps/Revolution: 200 Steps
– Microseconds/Revolution: 1.000 micros