Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //www.elegoo.com
- //2016.12.9
- const int pinWater = 0;
- int historyWaterLevel = 0;
- char printBuffer[128];
- int minimum= 0;
- int maximum= 500;
- int pourOnceTime = 2500 ;
- int settleDelay =2000;
- int waterInch=0;
- #include <Stepper.h>
- #include <LiquidCrystal.h>
- LiquidCrystal lcd (4,5,15, 16, 17, 18);
- const int pinButton= 2;
- boolean ButtonPressed=0;
- boolean prevButt=0;
- boolean sensorOn= 0;
- const int pinPot= A5;
- int waterLevel;
- const int pinLEDgreen= 12;
- const int pinLEDred= 13;
- const int stepsPerRevolution = 200; // change this to fit the number of steps per revolution
- // initialize the stepper library on pins 8 through 11:
- Stepper myStepper(stepsPerRevolution, 8,9,10,11);
- void setup()
- {
- Serial.begin(9600);
- // set the speed at 20 rpm:
- myStepper.setSpeed(10);
- lcd.begin (16,2);
- Serial.begin(9600);
- pinMode (pinButton, INPUT);
- pinMode (pinPot, INPUT);
- pinMode (pinLEDgreen, OUTPUT);
- pinMode (pinLEDred, OUTPUT);
- lcd.clear();
- }
- void loop()
- {
- lcd.clear();
- lcd.print("Place the bowl");
- delay(5000);
- lcd.clear();
- lcd.print("Press the button");
- while (!sensorOn)
- {
- Button();
- }
- lcd.clear();
- lcd.print("Bowl filler on");
- while(sensorOn)
- {
- waterLevel = analogRead(pinWater); // get adc waterLevel
- while ((waterLevel>= minimum) && (waterLevel<maximum) && sensorOn)
- {
- pourOnce(.25);
- waterLevel = analogRead(pinWater);
- delay(1000);
- lcd.clear();
- Button();
- lcd.print ("S0=");
- lcd.print (sensorOn);
- lcd.setCursor (0,1);
- lcd.print ("wL=");
- lcd.print (waterLevel);
- }
- if (waterLevel >= maximum)
- {
- digitalWrite(pinLEDgreen, HIGH);
- delay(1000);
- digitalWrite (pinLEDgreen,LOW);
- }
- Button();
- }
- }
- void pourOnce(float angle)
- {
- int steps=angle*200;
- myStepper.step(steps);
- delay(pourOnceTime);
- myStepper.step(-steps);
- digitalWrite(pinLEDred, HIGH);
- delay(100);
- digitalWrite (pinLEDred, LOW);
- delay(settleDelay);
- }
- boolean debounce (boolean last)
- {
- boolean current = digitalRead(pinButton);
- if (last != current)
- {
- delay(5);
- current= digitalRead(pinButton);
- }
- return current;
- }
- void Button()
- {
- //ButtonPressed=digitalRead(pinButton);
- ButtonPressed = debounce (prevButt);
- if( ButtonPressed == HIGH && prevButt ==LOW)
- {
- sensorOn = !sensorOn;
- }
- prevButt= ButtonPressed;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement