//http://www.amazon.com/RioRand-trade-Module-Arduino-White/dp/B00GZ6GK7A #include int pos = 0; int (gg); #define PIN_MOTOR 9 //To relay #define PIN_FL 10 #define PIN_RS 11 //Register Select #define PIN_RW 12 //Read/Write to GND #define PIN_ENABLE 13//Enable #define PIN_BUTTON 2 //Start pin #define DURATION 60000 //ms LiquidCrystal lcd(12,11,0,1,4,3); boolean motorA = false; //Motor state void setup() { pinMode(PIN_BUTTON,INPUT); pinMode(PIN_MOTOR,OUTPUT); digitalWrite(PIN_MOTOR,HIGH); pinMode(PIN_FL,OUTPUT); digitalWrite(PIN_FL,LOW); //Allow stopping attachInterrupt(0, motorstop, RISING); //Initialize LCD lcd.begin(20, 4); } void loop() { gg=60; lcd.clear(); lcd.setCursor(3,1); lcd.print("Press flashing"); lcd.setCursor(2,2); lcd.print("button to start."); bool state = false; int gg2 = 0; while(digitalRead(PIN_BUTTON)!=HIGH){ gg2++; if(gg2%10000 == 0){ state = !state; if(state) digitalWrite(PIN_FL,HIGH); else digitalWrite(PIN_FL,LOW); } } //begin delay(2000); digitalWrite(PIN_FL,HIGH); motorA = true; motorstart(); long t0 = millis(); while(motorA){ lcd.clear(); gg--; lcd.setCursor(8,1); lcd.print("Seconds"); lcd.setCursor(5,1); lcd.print(gg); lcd.setCursor(3,0); lcd.print("Time Remaining"); lcd.setCursor(0,3); lcd.print("Press Button to Stop"); delay(1000); if(gg < 1) motorstop(); } lcd.clear(); lcd.setCursor(2,0); lcd.print("Sample complete."); lcd.setCursor(2,2); lcd.print("Press flashing"); lcd.setCursor(2,3); lcd.print("button to reset."); digitalWrite(PIN_FL,LOW); gg2 = 0; while(digitalRead(PIN_BUTTON)!=HIGH){ gg2++; if(gg2%10000 == 0){ state = !state; if(state) digitalWrite(PIN_FL,HIGH); else digitalWrite(PIN_FL,LOW); } } //wait for stop delay(2000); lcd.clear(); } void motorstart(){ digitalWrite(PIN_MOTOR,LOW); } void motorstop(){ motorA=false; digitalWrite(PIN_MOTOR,HIGH); delay(1000); }