Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <LiquidCrystal_I2C.h>
- #include <Wire.h>
- LiquidCrystal_I2C lcd(0x27, 16, 2); // sda to A4 fio laranja
- // scl to A5 fio amarelo
- int ThermistorPin = A0; // blue wire
- int Vo;
- float R1 = 5000; // 5000 47Kohms
- float logR2, R2, T, Tc;
- float c1 = 1.009249522e-03, c2 = 2.378405444e-04, c3 = 2.019202697e-07;
- const int ButtonCoffee = 12; // brown wire
- const int RelayBoiler = 11; // yellow wire
- const int RelayCoffee = 10; // green wire
- const int LedPower = 9; // orange wire
- int buttonState = 0; // current state of the button
- int lastButtonState = 0; // previous state of the button
- int ledState = 0; // remember current led state
- void setup() {
- lcd.begin();
- lcd.backlight();
- pinMode(ButtonCoffee, INPUT); // brown wire
- // resistor is in positive side, "pullup", so RelayCoffee must be low level trigger
- pinMode(RelayCoffee, OUTPUT); // green wire
- pinMode(RelayBoiler, OUTPUT); // yellow wire
- pinMode(LedPower, OUTPUT); // orange wire
- digitalWrite (RelayBoiler, LOW);
- digitalWrite (RelayCoffee, HIGH); // low level trigger
- digitalWrite (LedPower, LOW);
- }
- void loop() {
- digitalWrite (LedPower, HIGH);
- Boiler();
- Coffee();
- Error();
- }
- void Boiler() {
- lcd.setCursor(0,0);
- lcd.print("Temperatura: ");
- lcd.setCursor(0,1);
- lcd.print(Tc,0); //Temp sem decimais
- lcd.print(" C ");
- Vo = analogRead(ThermistorPin);
- R2 = R1 * (1023.0 / (float)Vo - 1.0);
- logR2 = log(R2);
- T = (1.0 / (c1 + c2*logR2 + c3*logR2*logR2*logR2));
- Tc = T - 273.15;
- if ( Tc > 0 && Tc < 85 ) // cold
- {
- digitalWrite (RelayBoiler, HIGH);
- }
- else if ( Tc > 83 ) // hot
- {
- digitalWrite (RelayBoiler, LOW);
- }
- delay(200); // delay between ntc readings
- }
- void Coffee() {
- buttonState = digitalRead(ButtonCoffee);
- if (buttonState != lastButtonState)
- {
- if (buttonState == 1)
- {
- if(ledState == 1) ledState=0;
- else ledState=1;
- }
- lastButtonState = buttonState;
- }
- digitalWrite(RelayCoffee, ledState);
- delay(20); //debouncing
- }
- void Error() {
- if ( Tc < 0 ) // error
- {
- digitalWrite (RelayBoiler, LOW);
- digitalWrite (LedPower, LOW);
- delay(500);
- digitalWrite (LedPower, HIGH);
- delay(500);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement