Resource friendly structs and utility functions for Arduino Author: Alexander Brevig Contact: alexanderbrevig@gmail.com
There is no download available.
If you want to use this code in your project, just copypaste it.
typedef struct { byte pin : 6; byte mode : 1; byte state : 1; } DigitalPin;
void set(DigitalPin& pin,boolean mode=INPUT,boolean state=false) { pin.mode = mode; pin.state = state; pinMode( pin.pin, pin.mode); digitalWrite( pin.pin, pin.state); } DigitalPin& read(DigitalPin& pin) { pin.state = digitalRead( pin.pin ); return pin; } boolean changed(DigitalPin& pin) { return (pin.state != digitalRead( pin.pin ) ? true : false); } void write(DigitalPin& pin,boolean state) { pin.state = state; digitalWrite( pin.pin, pin.state); } void toggle(DigitalPin& pin){ write(pin,!pin.state); }
DigitalPin led = {13,OUTPUT,HIGH}; DigitalPin button = {13,OUTPUT,HIGH}; set(led); set(button); if (changed(button)){ if (read(button).state == HIGH){ write(led,HIGH); }else{ write(led,LOW); } }
typedef struct { byte pin : 6; byte value : 10; } AnalogPin;
void set(AnalogPin& pin,boolean mode) { pinMode( pin.pin, mode); pin.value = analogRead(pin.pin); } AnalogPin& read(AnalogPin& pin) { pin.value = analogRead(pin.pin); return pin; } void write(AnalogPin& pin) { analogWrite(pin.pin,pin.value); }
AnalogPin potentiometer = { 2 }; set(potentiometer,INPUT); if (read(potentiometer).value >= 128){ //potentiometer is above half way around }
typedef struct { byte r; byte g; byte b; } RGB;
RGB red = { 255 , 0 , 0 }; byte redComponent = red.r; //255
typedef struct { AnalogPin r; AnalogPin g; AnalogPin b; } RGBPins;
void writeRGB(RGB& rgb) { write(rgb.r); write(rgb.g); write(rgb.b); }
// should this maybe start "AnalogPin red = {" ? RGB red = { { 9 , 255 }, { 10 , 0 }, { 11 , 0 } }; writeRGB(red); //your rgb led connected to 9 10 11 should light up in a red color.
typedef struct { byte b1 : 1; byte b2 : 1; byte b3 : 1; byte b4 : 1; byte b5 : 1; byte b6 : 1; byte b7 : 1; byte b8 : 1; } EightBitfield;
EightBitfield states = { 0 , 0 , 0 , 0 , 1 , 0 , 1 , 0 };
Part of AlphaBeta Utilities. | |
Last Modified: | March 02, 2014, at 04:29 PM |
By: | DavidCary |