# include "jbutton.h"
jButton xjt;
jButton add, stop;
jButton test();
void setup() {
Serial.begin(112500);
Serial.println("test jButton world!/n");
xjt.begin(3);
add.begin(5);
stop.begin(4);
setupPumps();
}
void loop() {
xjt.update();
add.update();
stop.update();
if (xjt.uolPress()) {
Serial.print("I saw that pressed! "); Serial.println(millis());
}
if (xjt.uolRelease()) {
Serial.print("I saw that released! "); Serial.println(millis());
}
if (xjt.uolStill()) {
Serial.print(" hey! "); Serial.println(millis());
}
if (add.uolPress()) {
Serial.print("I see that add... ");
if (addAPump()) Serial.println("and cannot");
else Serial.println("and did.");
}
if (stop.uolPress()) {
Serial.println("I saw that stop!");
stopAll();
}
}
# define NPUMPS 4
const unsigned char pumpPin[] = {A0, A1, A2, A3};
# define mincr(x, z) do { ++x; while (x >= z) x -= z; } while (0)
unsigned char nOn;
void setupPumps()
{
for (unsigned char tt = 0; tt < NPUMPS; tt++)
pinMode(pumpPin[tt], OUTPUT);
nOn = 0;
stopAll();
}
void stopAll()
{
nOn = 0;
for (unsigned char tt = 0; tt < NPUMPS; tt++)
digitalWrite(pumpPin[tt], LOW);
}
unsigned char addAPump()
{
/* load sharing */
static unsigned char nFirst;
static unsigned char myNext;
if (nOn == 0) {
myNext = nFirst;
mincr(nFirst, NPUMPS); // ++; if (nFirst >= NPUMPS) nFirst = 0;
}
if (nOn == NPUMPS) return 1; // FAIL
nOn++;
/* here is where a pump might really be turned on, or the process for doing initiated
Serial.print("pump ");
Serial.print(nOn); // number in the work force 1, 2 &c.
Serial.print(" is ");
Serial.print(myNext); // pump ID number
Serial.println("");
*/
digitalWrite(pumpPin[myNext], HIGH);
mincr(myNext, NPUMPS); // ++; if (myNext >= NPUMPS) myNext = 0;
return 0; // DID
/* non load sharing first
if (nOn < NPUMPS) nOn++;
else return 1;
return 0;
*/
}
/*
if (raw == 1) {
if (state == 0)
iPress = 1;
state = 1;
}
else {
if (state == 1)
iRelease = 1;
state = 0;
}
*/