# 1 "C:\\Users\\Adis\\Dropbox\\Arduino\\Global\\Projects\\MeatDryer2\\MeatDryer2.ino" # 1 "C:\\Users\\Adis\\Dropbox\\Arduino\\Global\\Projects\\MeatDryer2\\MeatDryer2.ino" // https://github.com/VasilKalchev/LiquidMenu # 14 "C:\\Users\\Adis\\Dropbox\\Arduino\\Global\\Projects\\MeatDryer2\\MeatDryer2.ino" # 15 "C:\\Users\\Adis\\Dropbox\\Arduino\\Global\\Projects\\MeatDryer2\\MeatDryer2.ino" 2 // The I2C LCD library # 17 "C:\\Users\\Adis\\Dropbox\\Arduino\\Global\\Projects\\MeatDryer2\\MeatDryer2.ino" 2 // The menu wrapper library # 19 "C:\\Users\\Adis\\Dropbox\\Arduino\\Global\\Projects\\MeatDryer2\\MeatDryer2.ino" 2 typedef struct { int salt = 100; int temp_min=0; int temp_max=100; int humid_min=10; int humid_max=50; int fan_adjust=100; } settings; settings userSettings; int fan_now=100; float temp_now=20.2; float humid_now=24.2; // The I2C LCD object LiquidCrystal_I2C lcd(0x27, 16, 2); LiquidLine timeout_info_line1(0, 0, "FAN SPEED: ", fan_now); LiquidLine timeout_info_line2(0, 1, "T ", temp_now, " H ", humid_now); LiquidScreen timeout_info_screen(timeout_info_line1, timeout_info_line2); LiquidLine temp_max_line1(1, 0, "SET MAX TEMP."); LiquidLine temp_max_line2(1, 1, userSettings.temp_max); LiquidScreen temp_max_screen(temp_max_line1, temp_max_line2); LiquidLine temp_min_line1(1, 0, "SET MIN TEMP."); LiquidLine temp_min_line2(1, 1, userSettings.temp_min); LiquidScreen temp_min_screen(temp_min_line1, temp_min_line2); LiquidLine humid_max_line1(1, 0, "SET MAX HUMID."); LiquidLine humid_max_line2(1, 1, userSettings.humid_max); LiquidScreen humid_max_screen(humid_max_line1, humid_max_line2); LiquidLine humid_min_line1(1, 0, "SET MIN HUMID."); LiquidLine humid_min_line2(1, 1, userSettings.humid_min); LiquidScreen humid_min_screen(humid_min_line1, humid_min_line2); LiquidLine welcome_line1(4, 0, "MEAT BOX"); LiquidLine welcome_line2(1, 1, "LiquidMenu ", LIQUIDMENU_VERSION); LiquidScreen welcome_screen(welcome_line1, welcome_line2); LiquidMenu menu(lcd); void setupMenu() { // This is the I2C LCD object initialization. lcd.begin(); lcd.backlight(); // This method needs to be called when using an I2C display library. menu.init(); timeout_info_line1.set_decimalPlaces(0); timeout_info_line2.set_decimalPlaces(1); //Temperature control temp_max_line2.attach_function(1, []{ if (userSettings.temp_max > userSettings.temp_min + 5) userSettings.temp_max--; }); temp_max_line2.attach_function(2, []{ if (userSettings.temp_max < 100) userSettings.temp_max++; }); temp_min_line2.attach_function(1, []{ if (userSettings.temp_min > 0) userSettings.temp_min--; }); temp_min_line2.attach_function(2, []{ if (userSettings.temp_min < userSettings.temp_max - 5) userSettings.temp_min++; }); //Humidity control humid_max_line2.attach_function(1, []{ if (userSettings.humid_max > userSettings.humid_min + 5) userSettings.humid_max--; }); humid_max_line2.attach_function(2, []{ if (userSettings.humid_max < 100) userSettings.humid_max++; }); humid_min_line2.attach_function(1, []{ if (userSettings.humid_min > 0) userSettings.humid_min--; }); humid_min_line2.attach_function(2, []{ if (userSettings.humid_min < userSettings.humid_max - 5) userSettings.humid_min++; }); // This is the method used to add a screen object to the menu. menu.add_screen(welcome_screen); menu.add_screen(temp_max_screen); menu.add_screen(temp_min_screen); menu.add_screen(humid_max_screen); menu.add_screen(humid_min_screen); menu.add_screen(timeout_info_screen); Serial.println (reinterpret_cast( # 96 "C:\\Users\\Adis\\Dropbox\\Arduino\\Global\\Projects\\MeatDryer2\\MeatDryer2.ino" 3 (__extension__({static const char __c[] __attribute__((__progmem__)) = ( # 96 "C:\\Users\\Adis\\Dropbox\\Arduino\\Global\\Projects\\MeatDryer2\\MeatDryer2.ino" "Setup complete" # 96 "C:\\Users\\Adis\\Dropbox\\Arduino\\Global\\Projects\\MeatDryer2\\MeatDryer2.ino" 3 ); &__c[0];})) # 96 "C:\\Users\\Adis\\Dropbox\\Arduino\\Global\\Projects\\MeatDryer2\\MeatDryer2.ino" )); Serial.print (reinterpret_cast( # 98 "C:\\Users\\Adis\\Dropbox\\Arduino\\Global\\Projects\\MeatDryer2\\MeatDryer2.ino" 3 (__extension__({static const char __c[] __attribute__((__progmem__)) = ( # 98 "C:\\Users\\Adis\\Dropbox\\Arduino\\Global\\Projects\\MeatDryer2\\MeatDryer2.ino" "TTTTTTTTTTTT" # 98 "C:\\Users\\Adis\\Dropbox\\Arduino\\Global\\Projects\\MeatDryer2\\MeatDryer2.ino" 3 ); &__c[0];})) # 98 "C:\\Users\\Adis\\Dropbox\\Arduino\\Global\\Projects\\MeatDryer2\\MeatDryer2.ino" )); welcome_screen.hide(true); menu = welcome_screen; } # 1 "C:\\Users\\Adis\\Dropbox\\Arduino\\Global\\Projects\\MeatDryer2\\1_Encoder.ino" int counter = 0; int aState; int aLastState; volatile int intrSwitch = 0; volatile int intrEncod = 0; void setupEncoder() { pinMode (2,0x2); pinMode (4 /*outputB*/,0x0); pinMode (3 /*outputA*/, 0x0); aLastState = digitalRead(3 /*outputA*/); attachInterrupt(((2) == 2 ? 0 : ((2) == 3 ? 1 : -1)), []{ intrSwitch = 1; }, 2); attachInterrupt(((3 /*outputA*/) == 2 ? 0 : ((3 /*outputA*/) == 3 ? 1 : -1)), []{ intrEncod = 1; }, 1); Serial.println (reinterpret_cast( # 21 "C:\\Users\\Adis\\Dropbox\\Arduino\\Global\\Projects\\MeatDryer2\\1_Encoder.ino" 3 (__extension__({static const char __c[] __attribute__((__progmem__)) = ( # 21 "C:\\Users\\Adis\\Dropbox\\Arduino\\Global\\Projects\\MeatDryer2\\1_Encoder.ino" "Rotary encoder setup complete" # 21 "C:\\Users\\Adis\\Dropbox\\Arduino\\Global\\Projects\\MeatDryer2\\1_Encoder.ino" 3 ); &__c[0];})) # 21 "C:\\Users\\Adis\\Dropbox\\Arduino\\Global\\Projects\\MeatDryer2\\1_Encoder.ino" )); } // Return 1 for left, 2 for right, 3 for button int readEncoder() { int toReturn=0; aState = digitalRead(3 /*outputA*/); // Reads the "current" state of the outputA // If the previous and the current state of the outputA are different, that means a Pulse has occured if (aState != aLastState){ if (digitalRead(4 /*outputB*/) != aLastState) toReturn = 2; else toReturn = 1; } aLastState = aState; // Updates the previous state of the outputA with the current state return toReturn; } unsigned long buttonPress; unsigned long buttonRelease; int readEncoderButton() { if ((unsigned long) (millis() - buttonPress) > 500) { buttonPress = buttonRelease = millis(); while (!digitalRead(2)) { //Serial.println("Holding loop"); delay(10); if (millis() - buttonPress > 1500) break; } buttonRelease = millis(); return (buttonRelease - buttonPress > 1500) ? 2 : 1; } return 0; } # 1 "C:\\Users\\Adis\\Dropbox\\Arduino\\Global\\Projects\\MeatDryer2\\2_DHT.ino" # 2 "C:\\Users\\Adis\\Dropbox\\Arduino\\Global\\Projects\\MeatDryer2\\2_DHT.ino" 2 DHT dht(9 /* what pin we're connected to*/, 22 /* DHT 22 (AM2302)*/); //// Initialize DHT sensor for normal 16mhz Arduino unsigned long lastReadDHT; bool readDHT(float * _temp = # 9 "C:\\Users\\Adis\\Dropbox\\Arduino\\Global\\Projects\\MeatDryer2\\2_DHT.ino" 3 4 __null # 9 "C:\\Users\\Adis\\Dropbox\\Arduino\\Global\\Projects\\MeatDryer2\\2_DHT.ino" , float * _hum = # 9 "C:\\Users\\Adis\\Dropbox\\Arduino\\Global\\Projects\\MeatDryer2\\2_DHT.ino" 3 4 __null # 9 "C:\\Users\\Adis\\Dropbox\\Arduino\\Global\\Projects\\MeatDryer2\\2_DHT.ino" ) { if ((unsigned long) (millis() - lastReadDHT) > (5 /* Seconds*/ * 1E3)) { //Read data and store it to variables hum and temp float hum = dht.readHumidity(); float temp= dht.readTemperature(); if (_temp != # 16 "C:\\Users\\Adis\\Dropbox\\Arduino\\Global\\Projects\\MeatDryer2\\2_DHT.ino" 3 4 __null # 16 "C:\\Users\\Adis\\Dropbox\\Arduino\\Global\\Projects\\MeatDryer2\\2_DHT.ino" && temp >= -100 && temp <= 100) *_temp = temp; if (_hum != # 19 "C:\\Users\\Adis\\Dropbox\\Arduino\\Global\\Projects\\MeatDryer2\\2_DHT.ino" 3 4 __null # 19 "C:\\Users\\Adis\\Dropbox\\Arduino\\Global\\Projects\\MeatDryer2\\2_DHT.ino" && hum >= 0 && hum <= 100) { *_hum = hum; } {}; //DEBUG_PRINT((temp_now)); {}; //DEBUG_PRINTLN((humid_now)); //Serial.print(hum); //Serial.print(" %, Temp: "); //Serial.print(temp); //Serial.println(" Celsius"); lastReadDHT = millis(); return true; } else return false; } # 1 "C:\\Users\\Adis\\Dropbox\\Arduino\\Global\\Projects\\MeatDryer2\\3_Main.ino" /* char txtbuffer[17] = "Empty"; LiquidLine test(2, 0, txtbuffer); LiquidScreen testS(test); */ # 7 "C:\\Users\\Adis\\Dropbox\\Arduino\\Global\\Projects\\MeatDryer2\\3_Main.ino" void setup() { if (true) Serial.begin(9600); setupEncoder(); setupMenu(); /* Serial.println(txtbuffer); snprintf(txtbuffer, 17, "BUFF: %s", "test"); Serial.println(txtbuffer); menu.add_screen(testS); menu.update(); */ # 20 "C:\\Users\\Adis\\Dropbox\\Arduino\\Global\\Projects\\MeatDryer2\\3_Main.ino" } unsigned long lastActionMillis; int encoderResult; bool funcCalled; void loop() { if ((unsigned long) (millis() - lastActionMillis) > 1E3) readDHT(&temp_now, &humid_now); // Interrupt for encoder if (intrSwitch || intrEncod) { if (intrSwitch) { encoderResult=readEncoderButton(); switch(encoderResult) { case 1: {}; menu.switch_focus(); break; case 2: {}; funcCalled = menu.call_function(3); if (funcCalled) {}; break; } funcCalled = false; intrSwitch = 0; } else if (intrEncod) { encoderResult=readEncoder(); switch(encoderResult) { case 1: {}; funcCalled = menu.call_function(1); if (funcCalled) { {}; } else menu--; break; case 2: {}; funcCalled = menu.call_function(2); if (funcCalled) { {}; } else menu++; break; } intrEncod = 0; } lastActionMillis = millis(); } }