Advertisement
iyera20

final project code

Jun 30th, 2017
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.55 KB | None | 0 0
  1.  
  2. //www.elegoo.com
  3. //2016.12.9
  4.  
  5. const int pinWater = 0;
  6. int historyWaterLevel = 0;
  7. char printBuffer[128];
  8. int minimum= 0;
  9. int maximum= 400;
  10. int pourOnceTime = 500 ;
  11. int settleDelay =2000;
  12. int waterInch=0;
  13. float angle=0;
  14.  
  15. #include <Stepper.h>
  16.  
  17. #include <LiquidCrystal.h>
  18. LiquidCrystal lcd (4,5,15, 16, 17, 18);
  19.  
  20. const int pinButton= 2;
  21. boolean ButtonPressed=0;
  22. boolean prevButt=0;
  23. boolean sensorOn= 0;
  24. const int pinPot= A5;
  25. int waterLevel;
  26.  
  27. const int pinLEDgreen= 12;
  28. const int pinLEDred= 13;
  29.  
  30. const int stepsPerRevolution = 200; // change this to fit the number of steps per revolution
  31.  
  32. // initialize the stepper library on pins 8 through 11:
  33. Stepper myStepper(stepsPerRevolution, 8,9,10,11);
  34.  
  35. void setup()
  36. {
  37. Serial.begin(9600);
  38. // set the speed at 20 rpm:
  39. myStepper.setSpeed(15);
  40.  
  41. lcd.begin (16,2);
  42. Serial.begin(9600);
  43. pinMode (pinButton, INPUT);
  44. pinMode (pinPot, INPUT);
  45. pinMode (pinLEDgreen, OUTPUT);
  46. pinMode (pinLEDred, OUTPUT);
  47. lcd.clear();
  48.  
  49. }
  50.  
  51. void loop()
  52. {
  53. lcd.clear();
  54. lcd.print("Place the bowl");
  55. delay(5000);
  56. lcd.clear();
  57. lcd.print("Press the button");
  58. while (!sensorOn)
  59. {
  60. Button();
  61. }
  62. lcd.clear();
  63. lcd.print("Bowl filler on");
  64. while(sensorOn)
  65. {
  66. waterLevel = analogRead(pinWater); // get adc waterLevel
  67. angle=.2;
  68. while ((waterLevel>= minimum) && (waterLevel<maximum) && sensorOn)
  69. {
  70. pourOnce(angle);
  71. waterLevel = analogRead(pinWater);
  72. delay(1000);
  73. lcd.clear();
  74. Button();
  75. lcd.print ("S0=");
  76. lcd.print (sensorOn);
  77. lcd.setCursor (0,1);
  78. lcd.print ("wL=");
  79. lcd.print (waterLevel);
  80. angle=.25;
  81. }
  82. if (waterLevel >= maximum)
  83. {
  84. digitalWrite(pinLEDgreen, HIGH);
  85. delay(1000);
  86. digitalWrite (pinLEDgreen,LOW);
  87. }
  88. Button();
  89. }
  90.  
  91. }
  92.  
  93. void pourOnce(float angle)
  94. {
  95. int steps=angle*200;
  96. myStepper.step(steps);
  97. delay(pourOnceTime);
  98. myStepper.step(-steps);
  99. digitalWrite(pinLEDred, HIGH);
  100. delay(100);
  101. digitalWrite (pinLEDred, LOW);
  102. delay(settleDelay);
  103. }
  104.  
  105.  
  106. boolean debounce (boolean last)
  107. {
  108. boolean current = digitalRead(pinButton);
  109. if (last != current)
  110. {
  111. delay(5);
  112. current= digitalRead(pinButton);
  113. }
  114. return current;
  115. }
  116.  
  117. void Button()
  118. {
  119. //ButtonPressed=digitalRead(pinButton);
  120. ButtonPressed = debounce (prevButt);
  121. if( ButtonPressed == HIGH && prevButt ==LOW)
  122. {
  123. sensorOn = !sensorOn;
  124. }
  125. prevButt= ButtonPressed;
  126. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement