Advertisement
Guest User

Untitled

a guest
Jan 18th, 2020
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.51 KB | None | 0 0
  1. #include <LiquidCrystal_I2C.h>
  2. LiquidCrystal_I2C lcd(0x27,20,4);
  3.  
  4. //constantes
  5. const int monedaspin = 2; //pin de interrupciones
  6. const int sensorbotellapin = 7;
  7. const int sensorcaudalpin = 8;
  8. const int pulsadorpin = 9;
  9. const int dispensadorpin = 13;
  10. const float costoXml1 = 0.20;
  11. const float costoXml2 = 0.10;
  12. const float costoMinTipo1 = 0.20;
  13. const float costoMinTipo2 = 0.50;
  14.  
  15. //variables
  16. volatile float montoMonedas = 0.00;
  17. volatile int escenario = 0;
  18. volatile int monedaInsertada = 0;
  19. volatile int pulsadorPresionado = 0;
  20. volatile int sensorBotellaActivado = 0;
  21.  
  22. void setup() {
  23. // put your setup code here, to run once:
  24. pinMode(sensorbotellapin, INPUT);
  25. pinMode(sensorcaudalpin, INPUT);
  26. pinMode(pulsadorpin, INPUT);
  27. pinMode(dispensadorpin, OUTPUT);
  28. attachInterrupt(digitalPinToInterrupt(monedaspin), monedaInterrupcion, RISING);
  29. lcd.begin();
  30. lcd.backlight();
  31. escenario = 0;
  32. }
  33.  
  34. void monedaInterrupcion() {
  35. montoMonedas += 0.1;
  36. monedaInsertada = 1;
  37. }
  38.  
  39. void imprimirBienvenida(){
  40. lcd.setCursor(0, 0);
  41. lcd.print("Hola, Ecofiller!");
  42. lcd.setCursor(0, 1);
  43. lcd.print("Coloca tu botella");
  44. lcd.setCursor(0, 2);
  45. lcd.print("e inserta tus");
  46. lcd.setCursor(0, 3);
  47. lcd.print("monedas");
  48. }
  49.  
  50. void imprimirMontoYCostoTipo(float costoXml){
  51. lcd.setCursor(0,0);
  52. lcd.print("Monto:");
  53. lcd.setCursor(0,2);
  54. lcd.print("S/");
  55. lcd.print(montoMonedas);
  56. }
  57.  
  58. void imprimirMontoRestante(){
  59. lcd.setCursor(0,0);
  60. lcd.print("Monto Restante:");
  61. lcd.setCursor(0,2);
  62. lcd.print("S/");
  63. lcd.print(montoMonedas);
  64. }
  65.  
  66. void imprimirMontoMinNecesario(){
  67. lcd.setCursor(0,0);
  68. lcd.print("Monto Restante:");
  69. lcd.setCursor(0,2);
  70. lcd.print("S/");
  71. lcd.print(montoMonedas);
  72. }
  73.  
  74. void imprimirInsertarBotella(){
  75. lcd.setCursor(0,0);
  76. lcd.print("Necesario insertar botella");
  77. lcd.setCursor(0,2);
  78. lcd.print("para dispensar agua");
  79. lcd.print(costoMinTipo1);
  80. }
  81.  
  82. void imprimirDespedida(){
  83. lcd.setCursor(0,0);
  84. lcd.print("¡Muchas gracias!");
  85. lcd.setCursor(0,2);
  86. lcd.print("Hemos ahorrado 1 botella");
  87. lcd.print(costoMinTipo1);
  88. }
  89.  
  90. void encenderDispensarAgua(){
  91. digitalWrite(dispensadorpin,HIGH);
  92. }
  93.  
  94. void apagarDispensarAgua(){
  95. digitalWrite(dispensadorpin,LOW);
  96. }
  97.  
  98. void loop() {
  99. // put your main code here, to run repeatedly:
  100. if(escenario == 0){
  101. imprimirBienvenida();
  102. if(montoMonedas > 0.0){
  103. escenario = 1;
  104. }
  105. }
  106. else if (escenario == 1){
  107. if(monedaInsertada == 1){
  108. lcd.clear();
  109. monedaInsertada = 0;
  110. }
  111. if(montoMonedas > costoMinTipo2){
  112. imprimirMontoYCostoTipo(costoXml2);
  113. }
  114. else{
  115. imprimirMontoYCostoTipo(costoXml1);
  116. }
  117. pulsadorPresionado = digitalRead(pulsadorpin);
  118. if(pulsadorPresionado == HIGH){
  119. if(montoMonedas >= 0.2){
  120. escenario = 2;
  121. }
  122. else{
  123. imprimirMontoMinNecesario();
  124. //imprimir por 1 segundo
  125. }
  126. }
  127. }
  128. else if(escenario == 2){
  129. sensorBotellaActivado = digitalRead(sensorbotellapin);
  130. if(sensorBotellaActivado == HIGH){
  131. imprimirMontoRestante();
  132. pulsadorPresionado = digitalRead(pulsadorpin);
  133. if(pulsadorPresionado == HIGH){
  134. encenderDispensarAgua();
  135. lcd.clear();
  136. }
  137. else{
  138. apagarDispensarAgua();
  139. }
  140. }
  141. else{
  142. imprimirInsertarBotella();
  143. }
  144. if(montoMonedas <= 0.0){
  145. escenario = 3;
  146. }
  147. }
  148. else if(escenario == 3){
  149. imprimirDespedida();
  150. //imprimir por 1 segundo
  151. escenario = 0;
  152. }
  153. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement