/* Box Food Saver V.1.0 code written by Giuseppe Allocca FabLab class 2018 Santa Chiara FabLab SIena Italy */ //pins definition int powerled = 3; //white led int comled = 2;//blu led int sensor= 16; int sensor_value=0; int button=5; int valbutton=0; int valv=8; int pump=17; int draweropen=0; int empty=0; // waitButton Function void waitButton() {//start waitButton valbutton = digitalRead(button); //read button value while(digitalRead(5) == 0){ // blue led blink wait button pressed digitalWrite(comled,HIGH);delay(10);digitalWrite(comled,LOW);delay(10);} OpenDrawer();// when button is pressed then call openDrawer function }// End waitButton Function // closeDrawer Function void closeDrawer() {//start closeDrawer while(analogRead(16) >500 ){ // blue led blink wait button pressed digitalWrite(comled,HIGH);delay(10);digitalWrite(comled,LOW);delay(10);} vacuum(); }// End closeDrawer Function // OpenDrawer Function void OpenDrawer() {//start openDrawer digitalWrite(comled,HIGH); digitalWrite(valv,LOW); delay(200); digitalWrite(valv,HIGH); digitalWrite(comled,LOW); delay(50); closeDrawer(); }// End OpenDrawer Function // vacuum Function void vacuum() {//start vacuum digitalWrite(comled,HIGH); digitalWrite(pump,LOW); delay(1000); digitalWrite(pump,HIGH); digitalWrite(comled,LOW); delay(50); waitButton(); }// End vacuum Function void setup() { // initialize pin input/output pinMode(powerled, OUTPUT); pinMode(comled, OUTPUT); pinMode(sensor, INPUT); pinMode(button, INPUT); pinMode(valv,OUTPUT); pinMode(pump,OUTPUT); // turn LED on: digitalWrite(powerled, HIGH);//Board power-on digitalWrite(comled,LOW);//comled off //turn off pump and valve digitalWrite(pump,HIGH);//HIGH value digitalWrite(valv,HIGH);//turn OFF the RELAYS }// end void setup // "void loop" only read sensor value and call the correct function, // after this , logical loop work alone void loop() { sensor_value=analogRead(sensor); // read the sensor value from pin 16 /* sensor control: is the drawer close? if yes call vacuum function, else wait until the drawer will be closed */ if ((sensor_value)<500) {vacuum(); } // end if closeDrawer(); } //end void loop