Advertisement
iyera20

prototype final project code

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