/***************************
 
Expensive Coin Counter
From Payphone Autopsy Day
March 20, 2013
 
Cable coming from the coin counter mechanism
Green: Ground
White: Quarter
Red: Dime
Blue: Nickel
 
****************************/
 
// These integers refer to the pins on the Arduino board
const int quarterPin = 7;
const int dimePin = 2;    
const int nickelPin = 4;
 
const int quarterValue = 25;
const int dimeValue = 10;
const int nickelValue = 5;
 
int quarterStatus = 0;
int dimeStatus = 0;
int nickelStatus = 0;
 
const int ledPin = 13;
 
int coinStatus = 0;
int prevStatus = 0;
int total = 0;
 
int printMoney(int n) {
  int dollars;
  int cents;
  dollars = n / 100;
  cents = n % 100;
  Serial.print("$");
  Serial.print(dollars);
  Serial.print(".");
  if (cents < 10) {
    Serial.print("0");
  }
  Serial.println(cents);
  return 1;
}
 
void setup() {
  pinMode(ledPin, OUTPUT);         // declare LED as output
  pinMode(quarterPin, INPUT);      // declare switch input
  pinMode(dimePin, INPUT);         // declare switch input
  pinMode(nickelPin, INPUT);       // declare switch input
  Serial.begin(38400);
  Serial.println("EXPENSIVE COIN COUNTER");
  printMoney(total);
}
 
void loop(){
 
  int val = LOW;
  val = digitalRead(quarterPin);
  digitalWrite(ledPin, val);
  if (val == HIGH) {
    if (quarterStatus == 0) {
      total += quarterValue;
      printMoney(total);
      dimeStatus = 1;
      delay(250);
    }
  } else {
    dimeStatus = 0;
  } 
 
  val = digitalRead(nickelPin);
  digitalWrite(ledPin, val);
  if (val == HIGH) {
    if (nickelStatus == 0) {
      total += nickelValue;
      printMoney(total);
      dimeStatus = 1;
      delay(250);
    }
  } else {
    dimeStatus = 0;
  } 
 
  val = digitalRead(dimePin);
  digitalWrite(ledPin, val);
  if (val == HIGH) {
    if (dimeStatus == 0) {
      total += dimeValue;
      printMoney(total);
      dimeStatus = 1;
      delay(250);
    }
  } else {
    dimeStatus = 0;
  } 
 
 
}