Arduino Flush-Less (Version 1.0)
20:1.32 140-14 OTC
California is suffering from a debilitating drought.
When hasn't it, am I right?
Convert grass to gravel and ficus to cacti are all proposed options.
The absolute solution?
Desalinization pla--er, I mean, stop pissing away water!

Standard toilets use up to 6,500 mL (1.6 gal) of water to flush
a standard person's 400 mL of urine twice a standard day.

Hack most existing toilets with the Arduino Flush-Less
and reduce waste by up to half with out replacing a single toilet.

With just 1,825 AFL units installed, we could save 1,000,000 gallons a year, exclamation point.


Ingredients
HackADay.io/project/2206-Project-AFL

Recipe
// Arduino Flush-Less (1.0) _ TV Miller
// CapacitiveSensor Library _ Paul Badger
// PFOD _ Dr. Matthew Ford

#include <CapacitiveSensor.h>
#include <Servo.h>
#include <pfodParser.h>
#include <Stream.h>
pfodParser parser;

// Pin 6 (10M) and 5 (1K)
CapacitiveSensor deucetouch = CapacitiveSensor(6,5);
// Pin 7 (10M) and 8 (1K)
CapacitiveSensor flushtouch = CapacitiveSensor(8,7);

Servo tankservo;
Servo flushservo;

int tankOFF = 120; // Tank Servo Position OFF
int tankON = 0; // Tank Servo Position ON
int flushOFF = 180; // Flush Servo Position OFF
int flushON = 0; // Flush Servo Position ON
int bowlvalve = 10; // Bowl Pin 10
int pooLED = 9; // LED Pin 9

void setup()
{
Serial.begin(9600);
for (int i=5; i>0; i--) { // Wait
Serial.print(i);
delay(1000);
}
parserSetup();
Serial.println();
Serial1.begin(9600); // Serial1 BlueTooth (Micro)

pinMode(bowlvalve, OUTPUT);
pinMode(pooLED, OUTPUT);

tankservo.attach(3); // Tank Pin 3
flushservo.attach(4); // Flush Pin 4

digitalWrite(pooLED, HIGH); // Setup Alert
delay(1000);
digitalWrite(pooLED, LOW);
delay(1000);
digitalWrite(pooLED, HIGH);
delay(1000);
}

void loop()
{
// Turn OFF All
flushservo.write(flushOFF); // Flush CLOSED
tankservo.write(tankOFF); // Tank CLOSED
digitalWrite(bowlvalve, LOW); // Bowl CLOSED
digitalWrite(pooLED, LOW); // LED OFF

// Read Sensors
long tank_touch = deucetouch.capacitiveSensor(30);
long flush_touch = flushtouch.capacitiveSensor(30);

// Deuce, Flush or Stand By
if (tank_touch > 1500 && flush_touch < 500){ numbertwo(); }
else if (flush_touch > 1500 && tank_touch < 500){ emptybowl(); }
else ( delay(10) );

// Print Sensors (Testing)
Serial.print(tank_touch);
Serial.print("\t");
Serial.println(flush_touch);

// Write Bluetooth Menu
if (Serial1.available()) {
byte in = Serial1.read();
byte cmd = parser.parse(in);
if (cmd != 0) {
if ('.' == cmd) {
Serial1.print(F("{."));
Serial1.print(F("<gy>HackADay Prize"));
Serial1.print(F("|A~<bg o><+8>Deuce"));
Serial1.print(F("|B~<bg n><+8>Flush"));
Serial1.print(F("}"));

// Handle Bluetooth Buttons
} else if('A'==cmd) { // Deuce
numbertwo();
Serial1.print(F("{}")); // Update
} else if('B'==cmd) { // Flush
emptybowl();
Serial1.print(F("{}")); // Update
} else {
Serial1.print(F("{}"));
}
}
}

}

// Deuce
void numbertwo() {
digitalWrite(pooLED, HIGH); // LED ON
digitalWrite(bowlvalve, HIGH); // Bowl OPEN
tankservo.write(tankON); // Tank OPEN
delay(13000); /* Adjust Per Model */
return;
//Code To Lock Out NumberTwo()?
}

// Flush
void emptybowl() {
digitalWrite(pooLED, HIGH); // LED ON
flushservo.write(flushON); // Flush OPEN
digitalWrite(bowlvalve, HIGH); // Bowl OPEN
tankservo.write(tankON); // Tank OPEN
delay(6000);
flushservo.write(flushOFF); // Flush CLOSED
delay(2000);
digitalWrite(bowlvalve, LOW); // Bowl CLOSED
delay(15000); /* Adjust Per Model */
return;
}

// BlueTooth Tasks
byte cmdByte;
byte parserByteCounter;
byte parserState;
static const byte pfodMaxMsgLen = 0xff;
static const byte pfodStartMsg = (byte)'{';
static const byte pfodEndMsg = (byte)'}';
static const byte pfodWaitingForStart = 0xff;
static const byte pfodInMsg = 0;

void parserSetup() {
parserByteCounter = 0;
cmdByte = 0;
parserState = pfodWaitingForStart;
}

byte parse(byte in) {
parserByteCounter++;
if (parserState == pfodWaitingForStart) {
if (in == pfodStartMsg) {
parserSetup();
parserState = pfodInMsg;
}
parserByteCounter = 1;
return 0;
}

if ((parserByteCounter == pfodMaxMsgLen) &&
(in != pfodEndMsg)) {
parserSetup();
return 0;
}

if (in == pfodEndMsg) {
byte pfodMsgCmd = cmdByte;
parserSetup();
return pfodMsgCmd;
} else if (cmdByte == 0) {
cmdByte = in;
}
return 0;
}

Did we mention Arduino Flush-Less (Version 1.0) is BlueTooth enabled?!

Notation
Despite the plethora of HackADay logos ala our futile attempt for favoritism amidst our submission unto the HackADay Prize-contest, the Arduino Flush-Less and TV Miller are not affiliated with HackADay or their unscrupulous, dubious, down-right-under handed ways. Heathens.

Disclaimer
All claimers about HackADay are untrue, unless other wise true, to which, see?!

Articles
HackADay - Arduino Gives Your Toilet Options
Atmel - Arduino Flush Less Saves More
Embedds - Arduino Controlled Toilet Saves Gallons Per Day
Follow Project AFL
19:42.14 135-14 OTC
Currently in development is our Project AFL, for submission in the HackADay Prize contest. There are two methods to follow along with all the lack of action. Follow @TVMiller for real time updates which will include the occasional lambasting of another culture or book mark HackADay.io/project/2206-Project-AFL on HackADay's project repository or what ever one might identify it as. Stay tuned to further updates on this project as we seek to automate for efficiency by hacking the naughty bits depository.
Formerly HLTBAL1 due to budgetary restraints, HLTSCT4X is a ground based rocket launch utilizing an experimental propulsion. It performed precisely as predicted.


FleshliPad Becomes Fleshlight LaunchPad
21:35.2 129-14 OTC
What was once a novelty engineering project, today has become what will certainly be an evolution of the medium of electronic interactive adult entertainment and subsequent gratification.

Three years ago, we pitched a product design to an executive at Fleshlight d.b.a. Interactive Life Forms. Less than a year later, it manifested in to a viral sensation, pun intended. The FleshliPad was chortled in discourse on programs like Playboy Radio and featured in gadget blogs to the likes of Gizmodo. It became a hypothetical global perv-nomenon.

The highly anticipated apex of this journey now cedes. Earlier today, Fleshlight released the following advertisement on YouTube which unveils their new product, the Fleshlight LaunchPad.


We here at TV Miller applaud it's finality and tip our hat with an affable watch yer top knot.
Resistance Theory (Pass 0.1 Sample)
21:47.14 118-14 OTC
Simplified for documentation, the upper diagram is a standard model theory of a photon transit via absorption and expulsion. The lower diagram is a two-dimensional spherical wave with oscillation disturbance transit and supplementary wave pattern representation under lay. The Resistance Model demonstrates wave field resistance nodes (particles) and subsequent containment prior to demanding frequency change, suspended in a three-dimensional compression mass.