Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Arduino.h>
- #include <Wire.h>
- #include "rgb_lcd.h"
- const int ticL = 22000;
- unsigned int nbtic = 0;
- double nbL = 0 ;
- unsigned long previousMillis, intervalle ;
- int capteur = 5 ;
- int led =13;
- boolean lastState=false , currentState;
- int relay=10,button_start=12;
- boolean starting = false;
- int volume_end;
- int id =0;
- unsigned long time_veille = 300; // en s
- unsigned long time_start=0;
- boolean lastState1, currentState1;
- rgb_lcd lcd;
- void verif_capteur(void)
- {
- currentState = digitalRead(capteur);
- if ( currentState !=lastState)
- {
- lastState = currentState;
- if(currentState)
- nbtic++;
- }
- }
- void inivalue(void)
- {
- nbtic = 0;
- nbL = 0 ;
- id=0;
- lastState = digitalRead(capteur);
- previousMillis = millis();
- }
- void mode_veille(void)
- {
- lcd.noDisplay();
- lcd.setRGB(0,0,0);
- while(!digitalRead(button_start));
- lcd.setRGB(100,100,100);
- lcd.display();
- time_start=millis();
- delay(1000);
- }
- void select_volume(void)
- {
- while(!starting)
- {
- lcd.setCursor(0,0);
- switch(id){
- case 0 : lcd.setCursor(0,0);
- lcd.print("Small Cup:");
- lcd.setCursor(0,1);
- lcd.print("200 mL");
- volume_end=200;break;
- case 1 : lcd.setCursor(0,0);
- lcd.print("Large Mug:");
- lcd.setCursor(0,1);
- lcd.print("500 mL");
- volume_end=500;break;
- }
- if(digitalRead(button_start))
- {
- time_start = millis();
- while(digitalRead(button_start)&&millis()-time_start<=1000);
- if(millis()-time_start >=1000)
- {
- starting = true;
- inivalue();
- digitalWrite(led,HIGH);
- digitalWrite(relay,HIGH);
- lcd.setRGB(255,20,20);
- lastState1 = digitalRead(button_start);
- }
- else{
- id = (id+1)%2;
- lcd.clear();}
- }
- if(millis()-time_start >=time_veille)
- mode_veille();
- if(!starting)
- delay(100);
- }
- }
- void stoping(boolean b)
- {
- currentState1 = b;
- if ( currentState1 !=lastState1)
- {
- lastState1 = currentState1;
- if(currentState1){
- starting = false;
- digitalWrite(relay,LOW);
- digitalWrite(led,LOW);
- lcd.setCursor(0,1);
- lcd.print("Manual Shutdown");
- delay(2000);
- lcd.setRGB(200,200,200);
- lcd.clear();}
- }
- }
- void setup()
- {
- lcd.begin(16,2);
- lcd.setRGB(200,200,200);
- time_veille *= 1000;
- intervalle = 100;
- pinMode(capteur , INPUT_PULLUP);
- pinMode(relay , OUTPUT);
- pinMode(button_start,INPUT);
- pinMode(led,OUTPUT);
- digitalWrite(led,LOW);
- pinMode(2 , OUTPUT);
- digitalWrite(2,HIGH);
- Serial.begin(9600);
- }
- void loop()
- {
- select_volume();
- verif_capteur();
- if ((millis()-previousMillis >= intervalle&& starting))
- {
- nbL = (double)((double)nbtic/((double)ticL/(double)1000));
- if(nbL >= volume_end)
- {
- starting = false;
- digitalWrite(relay,LOW);
- digitalWrite(led,LOW);
- lcd.setCursor(0,1);
- lcd.print("Take your coffee");
- delay(2000);
- lcd.setRGB(200,200,200);
- lcd.clear();
- }
- else{
- lcd.setCursor(9,1);
- lcd.print((String)(int)nbL+" mL");
- Serial.println(millis()-previousMillis);
- previousMillis = millis();
- stoping(digitalRead(button_start));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement