Contents
Programming the Arduino
This is a collection of links and tips on how to program the Arduino. Main source is the Arduino.cc Code Library.
Push buttons
Sound Generation
Fast Division
fast division by 10
void divmod10(uint32_t in, uint32_t &div, uint32_t &mod)
{
uint32_t x=(in>>1); // div = in/10 <==> div = ((in/2)/5)
uint32_t q=x;
q= (q>>8) + x;
q= (q>>8) + x;
q= (q>>8) + x;
q= (q>>8) + x + 1;
x= q;
q= (q>>1) + x;
q= (q>>3) + x;
q= (q>>1) + x;
div = (q >> 3);
mod = in - (((div << 2) + div) << 1);
}This was the earlier version:
Fast division by 10 early version
void divmod10(uint32_t in, uint32_t &div, uint32_t &mod)
{
// q = in * 0.8;
uint32_t q = (in >> 1) + (in >> 2);
q = q + (q >> 4);
q = q + (q >> 8);
q = q + (q >> 16); // not needed for 16 bit version
// q = q / 8; ==> q = in *0.1;
q = q >> 3;
// determine error
uint32_t r = in - ((q << 3) + (q << 1)); // r = in - q*10;
div = q + (r > 9);
if (r > 9) mod = r - 10;
else mod = r;
}
Home Automation
Doing Two things at Once
Logic Probe
Op-Amp-based logic probe No Arduino needed for this.
