Advertisement
sanjiro

Maquina_Cafe_v_18.07.22_beta.ino

Jul 22nd, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.00 KB | None | 0 0
  1. int ThermistorPin = A0; // blue wire
  2. int Vo;
  3. float R1 = 5000; // 5000 47Kohms
  4. float logR2, R2, T, Tc;
  5. float c1 = 1.009249522e-03, c2 = 2.378405444e-04, c3 = 2.019202697e-07;
  6. const int ButtonCoffee = 12; // brown wire
  7. const int RelayBoiler = 11; // yellow wire
  8. const int RelayCoffee = 10; // green wire
  9. const int LedPower = 9; // orange wire
  10. int buttonState = 0; // current state of the button
  11. int lastButtonState = 0; // previous state of the button
  12. int ledState = 0; // remember current led state
  13.  
  14. void setup() {
  15.  
  16. pinMode(ButtonCoffee, INPUT); // brown wire
  17. // resistor is in positive side, "pullup", so RelayCoffee must be low level trigger
  18. pinMode(RelayCoffee, OUTPUT); // green wire
  19. pinMode(RelayBoiler, OUTPUT); // yellow wire
  20. pinMode(LedPower, OUTPUT); // orange wire
  21. digitalWrite (RelayBoiler, LOW);
  22. digitalWrite (RelayCoffee, HIGH); // low level trigger
  23. digitalWrite (LedPower, LOW);
  24. }
  25.  
  26. void loop() {
  27. digitalWrite (LedPower, HIGH);
  28. Boiler();
  29. Coffee();
  30. Error();
  31. }
  32.  
  33. void Boiler() {
  34.  
  35. Vo = analogRead(ThermistorPin);
  36. R2 = R1 * (1023.0 / (float)Vo - 1.0);
  37. logR2 = log(R2);
  38. T = (1.0 / (c1 + c2*logR2 + c3*logR2*logR2*logR2));
  39. Tc = T - 273.15;
  40. if ( Tc > 0 && Tc < 95 ) // cold
  41. {
  42. digitalWrite (RelayBoiler, HIGH);
  43. }
  44. else if ( Tc > 100 ) // hot
  45. {
  46. digitalWrite (RelayBoiler, LOW);
  47. }
  48. delay(200); // delay between ntc readings
  49. }
  50.  
  51. void Coffee() {
  52. buttonState = digitalRead(ButtonCoffee);
  53. if (buttonState != lastButtonState)
  54. {
  55. if (buttonState == 1)
  56. {
  57. if(ledState == 1) ledState=0;
  58. else ledState=1;
  59. }
  60. lastButtonState = buttonState;
  61. }
  62. digitalWrite(RelayCoffee, ledState);
  63. delay(20); //debouncing
  64. }
  65.  
  66. void Error() {
  67. if ( Tc < 0 ) // error
  68. {
  69. digitalWrite (RelayBoiler, LOW);
  70. digitalWrite (LedPower, LOW);
  71. delay(500);
  72. digitalWrite (LedPower, HIGH);
  73. delay(500);
  74. }
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement