Advertisement
Tecnelm

Untitled

Apr 7th, 2018
179
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.55 KB | None | 0 0
  1. #include <Arduino.h>
  2. #include <Wire.h>
  3. #include "rgb_lcd.h"
  4.  
  5. const int ticL = 22000;
  6. unsigned int nbtic = 0;
  7. double nbL = 0 ;
  8. unsigned long previousMillis, intervalle  ;
  9. int capteur = 5 ;
  10. int led =13;
  11. boolean lastState=false , currentState;
  12. int relay=10,button_start=12;
  13. boolean starting = false;
  14. int volume_end;
  15. int id =0;
  16. unsigned long time_veille = 300; // en s
  17. unsigned long time_start=0;
  18. boolean lastState1, currentState1;
  19.  
  20.  
  21.  
  22. rgb_lcd lcd;
  23.  
  24. void verif_capteur(void)
  25. {
  26.     currentState = digitalRead(capteur);
  27.  
  28.     if ( currentState !=lastState)
  29.     {
  30.       lastState = currentState;
  31.  
  32.       if(currentState)
  33.         nbtic++;
  34.     }
  35. }
  36.    
  37. void inivalue(void)
  38. {
  39.   nbtic = 0;
  40.   nbL = 0 ;
  41.   id=0;
  42.   lastState = digitalRead(capteur);
  43.   previousMillis = millis();
  44. }
  45. void mode_veille(void)
  46. {
  47.   lcd.noDisplay();
  48.   lcd.setRGB(0,0,0);
  49.   while(!digitalRead(button_start));
  50.   lcd.setRGB(100,100,100);
  51.   lcd.display();
  52.   time_start=millis();
  53.   delay(1000);
  54. }
  55. void select_volume(void)
  56. {
  57.  
  58.  
  59.   while(!starting)
  60.   {
  61.     lcd.setCursor(0,0);
  62.    
  63.   switch(id){
  64.     case 0 : lcd.setCursor(0,0);
  65.              lcd.print("Small Cup:");
  66.              lcd.setCursor(0,1);
  67.              lcd.print("200 mL");
  68.             volume_end=200;break;
  69.      case 1 : lcd.setCursor(0,0);
  70.               lcd.print("Large Mug:");
  71.               lcd.setCursor(0,1);
  72.               lcd.print("500 mL");
  73.               volume_end=500;break;
  74.      
  75.   }
  76.  
  77.  
  78.    
  79.     if(digitalRead(button_start))
  80.     {
  81.       time_start = millis();
  82.       while(digitalRead(button_start)&&millis()-time_start<=1000);
  83.       if(millis()-time_start >=1000)
  84.       {
  85.         starting = true;
  86.         inivalue();
  87.         digitalWrite(led,HIGH);
  88.         digitalWrite(relay,HIGH);
  89.         lcd.setRGB(255,20,20);
  90.         lastState1 = digitalRead(button_start);
  91.       }
  92.       else{
  93.        id = (id+1)%2;  
  94.        lcd.clear();}
  95.        
  96.     }
  97.    
  98.     if(millis()-time_start >=time_veille)
  99.       mode_veille();
  100.     if(!starting)
  101.      delay(100);
  102.   }
  103. }
  104.  
  105. void stoping(boolean b)
  106. {
  107.   currentState1 = b;
  108.  
  109.     if ( currentState1 !=lastState1)
  110.     {
  111.       lastState1 = currentState1;
  112.  
  113.       if(currentState1){
  114.           starting = false;
  115.           digitalWrite(relay,LOW);
  116.           digitalWrite(led,LOW);
  117.           lcd.setCursor(0,1);
  118.           lcd.print("Manual Shutdown");
  119.           delay(2000);
  120.           lcd.setRGB(200,200,200);
  121.           lcd.clear();}
  122.     }
  123. }
  124. void setup()
  125. {
  126.   lcd.begin(16,2);
  127.   lcd.setRGB(200,200,200);
  128.   time_veille *= 1000;
  129.   intervalle = 100;
  130.   pinMode(capteur , INPUT_PULLUP);
  131.   pinMode(relay , OUTPUT);
  132.   pinMode(button_start,INPUT);
  133.   pinMode(led,OUTPUT);
  134.   digitalWrite(led,LOW);
  135.   pinMode(2 , OUTPUT);
  136.   digitalWrite(2,HIGH);
  137.   Serial.begin(9600);
  138. }
  139.  
  140.  
  141. void loop()
  142. {
  143.     select_volume();
  144.     verif_capteur();
  145.    
  146.     if ((millis()-previousMillis >= intervalle&& starting))
  147.     {
  148.         nbL = (double)((double)nbtic/((double)ticL/(double)1000));
  149.        
  150.         if(nbL >= volume_end)
  151.         {
  152.           starting = false;
  153.           digitalWrite(relay,LOW);
  154.           digitalWrite(led,LOW);
  155.           lcd.setCursor(0,1);
  156.           lcd.print("Take your coffee");
  157.           delay(2000);
  158.           lcd.setRGB(200,200,200);
  159.           lcd.clear();
  160.          
  161.         }
  162.         else{
  163.           lcd.setCursor(9,1);
  164.           lcd.print((String)(int)nbL+" mL");
  165.           Serial.println(millis()-previousMillis);
  166.           previousMillis = millis();
  167.           stoping(digitalRead(button_start));
  168.         }
  169.        
  170.     }
  171. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement