Coin Sorter/Counter – Code

Main Arduino Code

#include<printing.h>                           //custom library
#include<LiquidCrystal.h>

LiquidCrystal lcd(12,13,8,9,10,11);            //sets pins for lcd
printing p();
#define SENSORPIN 2                            //dime
#define SENSORPIN2 3                           //nickel
#define SENSORPIN3 4                           //quarter

int sensorState = 0;
int lastState = 0;
int sensorState2 = 0;
int sensorState3 = 0;
int sum;                                                                             // keeps track of current money total
void setup() {      
  pinMode(SENSORPIN, INPUT);                  //initialize sensor as input 
  pinMode(SENSORPIN2, INPUT);                 //initialize sensor as input
  pinMode(SENSORPIN3, INPUT);                 //initialize sensor as input     
  digitalWrite(SENSORPIN, HIGH);              //set initial value for sensor as HIGH
  digitalWrite(SENSORPIN2, HIGH);             //set initial value for sensor as HIGH
  digitalWrite(SENSORPIN3, HIGH);             //set initial value for sensor as HIGH
  
  Serial.begin(9600);
}
 
void loop(){
  sensorState = digitalRead(SENSORPIN);        //reads sensor value
  sensorState2 = digitalRead(SENSORPIN2);      //reads sensor value
  sensorState3 = digitalRead(SENSORPIN3);      //reads sensor value
 
  if (sensorState == LOW) {                    //checks if sensor 1 beam is broken    
    delay(500);
    sum += 10;                                 //adds 10 to the current total
    displayLCD();
    p.printingDime();
 
  } 

   if (sensorState2 == LOW){                    //checks if sensor 2 beam is broken
    delay(500);
    sum += 5;                                   //adds 5 to current total
    displayLCD();
    p.printingNickel();
  }
  if(sensorState3 == LOW) {                     //checks if sensor 3 beam is broken
    delay(500);
    sum += 25;                                  //adds 25 to current total
    displayLCD();
    p.printingQuarter();
  }

  if (sensorState && !lastState) {
    Serial.println("Unbroken");
  } 
  if (!sensorState && lastState) {
    Serial.println("Broken");
  }
  lastState = sensorState;
}
void displayLCD(){                                                             //function to display total value
  lcd.clear();
  lcd.print("Total:");
  lcd.print(sum);
}

library.cpp – Our custom code library

#include "printing.h"
#inlcude "arduino.h"
#include <stdio.h>
printing::printing()
void printing::printingDime(){
	Serial.println("Break - Dime");
}
void printing::printingQuarter(){
	Serial.println("Break - Quarter");
}
void printing::printingNickel(){
	Serial.println("Break - Nickel");
}

library.h – Header file for our custom code library

#ifndef printing_h
#define printing_h

class printing
{
	public:
		printing();
		void printingDime();
		void printingQuarter();
		void printingNickel();
		
}

#endif

These are the three files we used to code the project, the first being the main Arduino file, the second being the custom library used in our main Arduino file, and lastly the header file used for the custom library. This code is responsible for detecting breaks in the IR break beams and adding to the count of the total amount in coins that has been sorted. The code for the IR breaks was mostly original with help from the Adafruit documentation/learning section specifically for the IR break beam sensors we used.