How to store data in the flash memory of a Arduino Uno (ATmega328p)

From the ATmega328P datasheet, “Boot Loader Support” section, “Application and Boot Loader Flash Sections” subsection, “Application Section” subsubsection: … the SPM instruction is disabled when executed from the Application section. Therefore there is no way to write to flash from the running program. Use an external memory device if you need to store more data …

Read more

how to stop a loop arduino

Arduino specifically provides absolutely no way to exit their loop function, as exhibited by the code that actually runs it: Besides, on a microcontroller there isn’t anything to exit to in the first place. The closest you can do is to just halt the processor. That will stop processing until it’s reset.

try/catch block in Arduino

The Arduino reference is not listing try catch (for details of why see, for example, this related answer). And I assume, that implementing try catch on a µ-controller could be kind of difficult/impossible. Try catch in most languages is a quite expensive operation: The program stack get copied once for the try block and for …

Read more

How to convert an ASCII char to its ASCII int value?

I would like to convert a char to its ASCII int value. I could fill an array with all possible values and compare to that, but it doesn’t seems right to me. I would like something like The point is atoi() won’t work here as it is for readable numbers only. It won’t do anything …

Read more

Mapping a numeric range onto another

Let’s forget the math and try to solve this intuitively. First, if we want to map input numbers in the range [0, x] to output range [0, y], we just need to scale by an appropriate amount. 0 goes to 0, x goes to y, and a number t will go to (y/x)*t. So, let’s reduce your problem to the above simpler problem. …

Read more

Arduino sprintf float not formatting

Due to some performance reasons %f is not included in the Arduino’s implementation of sprintf(). A better option would be to use dtostrf() – you convert the floating point value to a C-style string, Method signature looks like: Use this method to convert it to a C-Style string and then use sprintf, eg: You can change the minimum width and …

Read more