Заменить код в скетче Adafruit_RGBLCDShield() на LCD keypad shield

Помогите заменить код в скетче …
Имеется lcd keypad shield такой Подключение LCD Keypad Shield к Arduino - HelpDuino
Заменить его в скетче ardruino uno

/////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////

#include <Wire.h>
#include <SHT1x.h>
#include <PID_v1.h>
#include <SPI.h>
#include <Ethernet.h>
#include <SendCarriots.h>
#include <Adafruit_RGBLCDShield.h>
#include <utility/Adafruit_MCP23017.h>
#include <EEPROM.h>

Adafruit_RGBLCDShield lcd = Adafruit_RGBLCDShield();

#define RED 0x1
#define YELLOW 0x3
#define GREEN 0x2
#define TEAL 0x6
#define BLUE 0x4
#define VIOLET 0x5
#define WHITE 0x7

#define HEAT_COOL_RELAY 8
#define FAN_TEMP_RELAY 4
#define FAN_HUMIDITY_RELAY 5
#define dataPin 6
#define clockPin 7

SHT1x sht1x(dataPin, clockPin);

// Define addresses of EEPROM
#define ADDR_HEAT_COOL_FLAG 0
#define ADDR_SET_TEMP_UP 1
#define ADDR_SET_TEMP_DOWN 2

#define ADDR_SETHUMIDITY_UP 3
#define ADDR_SETHUMIDITY_DOWN 4
#define ADDR_FAN_TEMP 5
#define ADDR_FAN_HUMIDITY 6
#define ADDR_FAN_DURATION 7
#define ADDR_FAN_PAUSE 11
#define ADDR_HTTP_INTERVAL 10

const String APIKEY = “66c56768c38a24ed1b41cbd7c8b0abcde3dafde72eb761a69b79a3d79d396c2b”;
const String DEVICE = “pizzaToppingOven@wmachugh.wmachugh”;
const int numElements = 5;
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1,75);
SendCarriots sender;

char check_Flag = 1; // flag for checking EEPROM
char heat_Cool_Flag = 1;
double set_Temp = 0;
char set_Temp_Up;
char set_Temp_Down;
double set_Humidity = 0;
char set_Humidity_Up;
char set_Humidity_Down;
char fan_Temp = 0;
char fan_Humidity = 0;
unsigned char fan_Duration = 0; // 5 minutes
unsigned char fan_Pause = 0; // 5 minutes
unsigned char http_Interval = 0; // 5 minutes

unsigned long previous_Time = 0; // time for saving the settings
unsigned long current_Time = 0; // time for saving the settings
unsigned long refresh_Time = 0; // time for saving the settings
unsigned char select_Flag = 0;
unsigned char state = 0;
double Kp = 2, Ki = 5, Kd = 1; // PID parameters
double temp_c;
double humidity;
double temp_Output;
double humidity_Output;
PID tempPID(&temp_c, &temp_Output, &set_Temp, Kp, Ki, Kd, DIRECT);
PID humidityPID(&humidity, &humidity_Output, &set_Humidity, Kp, Ki, Kd, DIRECT);

float get_temperature()
{
temp_c = sht1x.readTemperatureC();
return temp_c;
}
float get_humidity()
{
humidity = sht1x.readHumidity();
return humidity;
}

void state_Machine()
{
uint8_t buttons = lcd.readButtons();
while(!buttons)
{
current_Time = millis();
refresh_Time = current_Time - previous_Time;
if(refresh_Time > 4000)
{
state = 0;
previous_Time = current_Time;
lcd.setCursor(0, 0);
lcd.print(“TEMPERATURE:”);
lcd.print(temp_c, DEC);
lcd.setCursor(0, 1);
lcd.print(“HUMIDITY:”);
lcd.print(humidity);
break;
}
buttons = lcd.readButtons();
}

char upFlag = 0; // flag for up button
char downFlag = 0; // flag for down button
char setFlag = 0; // flag for select button
char select_Flag = 0;
previous_Time = millis();
if (buttons)
{
char state_Flag;
if (state_Flag)
{
state = 0;
}
else
{
state = 7;
}
lcd.clear();
if (buttons & BUTTON_LEFT)
{
state_Flag = 1;
state --;
}
if (buttons & BUTTON_RIGHT)
{
state_Flag = 0;
state ++;
}

select_Flag = state % 8;
  
if(buttons & BUTTON_UP)
{	
  upFlag = 1;
}

if(buttons & BUTTON_DOWN)
{
  downFlag = 1;
}

if(buttons & BUTTON_SELECT)
{
  setFlag = 1;
}

switch (select_Flag)
  {
      // case 0: //standard mode
      //    lcd.clear();
      //    lcd.setCursor(0, 0);
      //    lcd.print("TEMPERATURE:");
      //    lcd.print(temp_c, DEC);
      //    lcd.setCursor(0, 1);
      //    lcd.print("HUMIDITY:");
      //    lcd.print(humidity);
      //   break;

    case 0: // heat/cool mode
       if (heat_Cool_Flag)
       {
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("HEAT/COOL MODE");
       	lcd.setCursor(0, 1);
       	lcd.print("HEAT");           
       }
       else
       {
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("HEAT/COOL MODE");
        lcd.setCursor(0, 1);
        lcd.print("COOL");            	
       }
       if (upFlag)         
       {
        heat_Cool_Flag = 1;
        digitalWrite(HEAT_COOL_RELAY, HIGH);
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("HEAT/COOL MODE");            
        lcd.setCursor(0, 1);
        lcd.print("HEAT");
       }
       if (downFlag)
       {
        heat_Cool_Flag = 0;
        digitalWrite(HEAT_COOL_RELAY, LOW);
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("HEAT/COOL MODE");            
        lcd.setCursor(0, 1);
        lcd.print("COOL");
       }
       if (setFlag)
       {
       	EEPROM.write(ADDR_HEAT_COOL_FLAG, heat_Cool_Flag);
       }
      break;

    case 1: // temperature set point mode (in Celsius)
       lcd.clear();
       lcd.setCursor(0, 0);
       lcd.print("TEMPERATURE");
       lcd.setCursor(0,1);
       lcd.print(set_Temp);
       if (upFlag)
       {
        set_Temp ++;
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("TEMPERATURE");            
        lcd.setCursor(0,1);
        lcd.print(set_Temp);
       }
       if (downFlag)
       {
        set_Temp --;
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("TEMPERATURE");            
        lcd.setCursor(0,1);
        lcd.print(set_Temp);           
       }
       if (setFlag)
       {
         set_Temp_Up = set_Temp * 100 / 100;
         set_Temp_Down = set_Temp * 100 - set_Temp_Up * 100;
	       EEPROM.write(ADDR_SET_TEMP_UP, set_Temp_Up);
	       EEPROM.write(ADDR_SET_TEMP_DOWN, set_Temp_Down);
       }
      break;

    case 2: // humidity set point mode (in percent)    
       lcd.clear();
       lcd.setCursor(0, 0);
       lcd.print("HUMIDITY");
       lcd.setCursor(0, 1);
       lcd.print(set_Humidity);             
       if (upFlag)
       {
         set_Humidity ++;
           lcd.clear();
           lcd.setCursor(0, 0);
           lcd.print("HUMIDITY");
           lcd.setCursor(0, 1);
           lcd.print(set_Humidity);             
       }
       if (downFlag)
       {
         set_Humidity --;
           lcd.clear();
           lcd.setCursor(0, 0);
           lcd.print("HUMIDITY");
           lcd.setCursor(0, 1);
           lcd.print(set_Humidity);              
       }
       if (setFlag)
       {
         set_Humidity_Up = set_Humidity * 100 / 100;
         set_Humidity_Down = set_Humidity * 100 - set_Humidity_Up * 100;
	         EEPROM.write(ADDR_SETHUMIDITY_UP, set_Humidity_Up);
	       EEPROM.write(ADDR_SETHUMIDITY_DOWN, set_Humidity_Down);  				
       }
      break;

    case 3: // fan with temperature relay mode
       if (fan_Temp)
       {
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("FAN-TEMP RELAY");           	
       	lcd.setCursor(0, 1);
       	lcd.print("YES");
       }
       else
       {
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("FAN-TEMP RELAY");           	
       	lcd.setCursor(0, 1);
       	lcd.print("NO");
       }
       if (upFlag)
       {
        fan_Temp = 1;
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("FAN-TEMP RELAY");            
        lcd.setCursor(0, 1);
        lcd.print("YES");
       }
       if (downFlag)
       {
        fan_Temp = 0;
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("FAN-TEMP RELAY");            
        lcd.setCursor(0, 1);
        lcd.print("NO");           
       }
       if (fan_Temp)
        {
          digitalWrite(FAN_TEMP_RELAY, HIGH);
          // delay(fan_Duration*60*1000);
          digitalWrite(FAN_TEMP_RELAY, LOW);
          // delay(fan_Pause*60*1000);
        }
        else
        {
          digitalWrite(FAN_TEMP_RELAY, LOW);
        }                      
       if (setFlag)
       {
       	EEPROM.write(ADDR_FAN_TEMP, fan_Temp);
       }
      break;
      
    case 4: // fan with humidity relay mode
       if (fan_Humidity)
       {
       	lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("FAN-HUMI RELAY");
       	lcd.setCursor(0, 1);
       	lcd.print("YES"); 
       }
       else
       {
       	lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("FAN-HUMI RELAY");
       	lcd.setCursor(0, 1);
       	lcd.print("NO"); 
       }
       if (upFlag)
       {
        fan_Humidity = 1;
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("FAN-HUMI RELAY");            
        lcd.setCursor(0, 1);
        lcd.print("YES");            
       }
       if (downFlag)
       {
        fan_Humidity = 0;
        lcd.clear();
        lcd.setCursor(0,0);
        lcd.print("FAN-HUMI-RELAY");
        lcd.setCursor(0, 1);
        lcd.print("NO");              
       }
       if (fan_Humidity)
        {
          digitalWrite (FAN_HUMIDITY_RELAY, HIGH);
          //delay (fan_Duration*1000);
          digitalWrite (FAN_HUMIDITY_RELAY, LOW);
          //delay (fan_Pause*1000);              
        }
        else
        {
          digitalWrite (FAN_HUMIDITY_RELAY, LOW);
        }
       if (setFlag)
       {
       	EEPROM.write(ADDR_FAN_HUMIDITY, fan_Humidity);
       }
      break;

    case 5: // auto fan duration (in minute)
       lcd.clear();
       lcd.setCursor(0, 0);
       lcd.print("AUTO FAN TIME");
       lcd.setCursor(0, 1);
       lcd.print(fan_Duration);
       lcd.print(" min");
       
       if (upFlag)
       {
        fan_Duration ++;
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("AUTO FAN TIME");
        lcd.setCursor(0, 1);
        lcd.print(fan_Duration);
        lcd.print(" min");
       }
       if (downFlag)
       {
        fan_Duration --;
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("AUTO FAN TIME");
        lcd.setCursor(0, 1);
        lcd.print(fan_Duration);
        lcd.print(" min");           
       }
       if (setFlag)
       {
        EEPROM.write(ADDR_FAN_DURATION, fan_Duration);
       }
      break;

    case 6: // auto fan pause (in minute)
       lcd.clear();
       lcd.setCursor(0, 0);
       lcd.print("AUTO FAN PAUSE");
       lcd.setCursor(0, 1);
       lcd.print(fan_Pause); 
       lcd.print(' min');
       
       if (upFlag)
       {
        fan_Pause ++;
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("AUTO FAN PAUSE");
        lcd.setCursor(0, 1);
        lcd.print(fan_Pause);
        lcd.print(" min");           
       }
       if (downFlag)
       {
        fan_Pause --;
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("AUTO FAN PAUSE");
        lcd.setCursor(0, 1);
        lcd.print(fan_Pause);
        lcd.print(" min");            
       }
       if (setFlag)
       {
        EEPROM.write(ADDR_FAN_PAUSE, fan_Pause);          
       }
      break;

    case 7: // HTTP log interval (in minute)
       lcd.clear();
       lcd.setCursor(0, 0);
       lcd.print("HTTP INTERVAL");
       lcd.setCursor(0,1);
       lcd.print(http_Interval);
       lcd.print(" min");
       if (upFlag)
       {
        http_Interval ++;
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("HTTP INTERVAL");
        lcd.setCursor(0, 1);
        lcd.print(http_Interval);
        lcd.print(" min");
       }
       if (downFlag)
       {
        http_Interval --;
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("HTTP INTERVAL");
        lcd.setCursor(0, 1);
        lcd.print(http_Interval);
        lcd.print(" min");
       }
       if (setFlag)
       {
         EEPROM.write(ADDR_HTTP_INTERVAL, http_Interval);
       }
      break;
  }

}
upFlag = 0;
downFlag = 0;
setFlag = 0;
buttons = 0;
}

void setup() {
//Serial.begin(9600);
Ethernet.begin(mac,ip);

pinMode(HEAT_COOL_RELAY, OUTPUT);
pinMode(FAN_TEMP_RELAY, OUTPUT);
pinMode(FAN_HUMIDITY_RELAY, OUTPUT);

tempPID.SetMode(AUTOMATIC);
humidityPID.SetMode(AUTOMATIC);
lcd.begin(16, 2);
lcd.setBacklight(BLUE);

lcd.setCursor(3, 0);
lcd.print(“WELCOME”);
lcd.setCursor(5, 1);
lcd.print(“…”);
delay(1000);
lcd.setCursor(0, 0);
lcd.print(“TEMPERATURE:”);
lcd.print(temp_Output);
lcd.setCursor(0, 1);
lcd.print(“HUMIDITY:”);
lcd.print(humidity_Output);
}

void loop()
{
if (check_Flag)
{
heat_Cool_Flag = EEPROM.read(ADDR_HEAT_COOL_FLAG);
set_Temp_Up = EEPROM.read(ADDR_SET_TEMP_UP);
set_Temp_Down = EEPROM.read(ADDR_SET_TEMP_DOWN);
set_Humidity_Up = EEPROM.read(ADDR_SETHUMIDITY_UP);
set_Humidity_Down = EEPROM.read(ADDR_SETHUMIDITY_DOWN);
fan_Temp = EEPROM.read(ADDR_FAN_TEMP);
fan_Humidity = EEPROM.read(ADDR_FAN_HUMIDITY);
fan_Duration = EEPROM.read(ADDR_FAN_DURATION);
fan_Pause = EEPROM.read(ADDR_FAN_PAUSE);
http_Interval = EEPROM.read(ADDR_HTTP_INTERVAL);
set_Temp = set_Temp_Up + set_Temp_Down/100;
set_Humidity = set_Humidity_Up + set_Humidity_Down/100;
check_Flag = 0;
}

temp_c = get_temperature();
humidity = get_humidity();

tempPID.Compute();
humidityPID.Compute();
if (set_Temp > temp_Output)
{
digitalWrite(HEAT_COOL_RELAY, HIGH);
}
else
{
digitalWrite(HEAT_COOL_RELAY, LOW);
}

state_Machine();

// String array[numElements][2] = {{“TEMPERATURE”, temp_c}, {“HUMIDITY”, humidity}, {“HEAT/COOL MODE”, “YES”}, {“FAN-TEMP RELAY”, “YES”}, {“FAN-HUMIDITY RELAY”, “YES”}};
// Serial.println(sender.send(array, numElements, APIKEY, DEVICE));
}

там I2C вроде, а у тебя параллельный, этот гвоздь не в ту стену, хотя пробуй, если и там параллельный то он подключен к пинам так:

 /*!
   * @brief RGB LCD shield constructor
   * @param fourbitmode Sets the mode of the display, either 4 bit or 8 bit
   * @param rs The reset data line
   * @param rw The read write pin
   * @param enable The enable data line
   * @param d0 The data line 0
   * @param d1 The data line 1
   * @param d2 The data line 2
   * @param d3 The data line 3
   * @param d4 The data line 4
   * @param d5 The data line 5
   * @param d6 The data line 6
   * @param d7 The data line 7
   */
  void init(uint8_t fourbitmode, uint8_t rs, uint8_t rw, uint8_t enable,
            uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4,
            uint8_t d5, uint8_t d6, uint8_t d7);

Что на что заменить Вы забыли объяснить? Также Вы, забыли показать свои попытки это сделать и задать вопросы по непоняткам.

Показывайте, задавайте.

Там всё таки подключение по I2C

Этот новый щит Adafruit упрощает использование символьного ЖК-дисплея 16x2. Нам очень нравятся ЖК-дисплеи с RGB-подсветкой, которые мы продаем в магазине, как с отрицательным , так и с положительным RGB . К сожалению, для этих ЖК-дисплеев требуется довольно много цифровых контактов: 6 для управления ЖК-дисплеем и еще 3 для управления подсветкой RGB, всего 9 контактов. Это половина контактов, доступных на классическом Arduino!

Имея это в виду, мы хотели упростить людям использование этих ЖК-дисплеев в своих проектах, поэтому мы разработали экран, который позволяет вам управлять ЖК-дисплеем 16x2 символов, до 3 контактов подсветки И 5 контактов клавиатуры, используя только два контакта I2C на Ардуино! Самое приятное то, что вы также не потеряете эти два контакта, поскольку вы можете подключить датчики на основе i2c, часы реального времени и т. д. и использовать их совместно с шиной I2C. Это очень удобный способ добавить дисплей без проблем с проводкой.

<Adafruit_RGBLCDShield.h> на lcd keypad shield.

Это не объяснение, но, похоже, большего из Вас не выжать (хотя, хочу напомнить, что нужно это Вам, а не нам).

Ну, а Ваши попытки? Что пробовали? С каким результатом? Показывайте код, объясняйте, что не устраивает, клещами, что ли из Вас всё тянуть?

///////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// #include <Wire.h> #include <SHT1x.h> #include <PID_v1.h> #include <SPI.h> #include <Ethernet.h> #include <SendCarriots.h> #include <Adafruit_RGBLCDShield.h> #include <utility/Adafruit_MCP23017.h> #include <EEPROM.h> Adafruit_RGBLCDShield lcd = Adafruit_RGBLCDShield(); #define RED 0x1 #define YELLOW 0x3 #define GREEN 0x2 #define TEAL 0x6 #define BLUE 0x4 #define VIOLET 0x5 #define WHITE 0x7 #define HEAT_COOL_RELAY 8 #define FAN_TEMP_RELAY 4 #define FAN_HUMIDITY_RELAY 5 #define dataPin 6 #define clockPin 7 SHT1x sht1x(dataPin, clockPin); // Define addresses of EEPROM #define ADDR_HEAT_COOL_FLAG 0 #define ADDR_SET_TEMP_UP 1 #define ADDR_SET_TEMP_DOWN 2 #define ADDR_SETHUMIDITY_UP 3 #define ADDR_SETHUMIDITY_DOWN 4 #define ADDR_FAN_TEMP 5 #define ADDR_FAN_HUMIDITY 6 #define ADDR_FAN_DURATION 7 #define ADDR_FAN_PAUSE 11 #define ADDR_HTTP_INTERVAL 10 const String APIKEY = “66c56768c38a24ed1b41cbd7c8b0abcde3dafde72eb761a69b79a3d79d396c2b”; const String DEVICE = “pizzaToppingOven@wmachugh.wmachugh”; const int numElements = 5; byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; IPAddress ip(192,168,1,75); SendCarriots sender; char check_Flag = 1; // flag for checking EEPROM char heat_Cool_Flag = 1; double set_Temp = 0; char set_Temp_Up; char set_Temp_Down; double set_Humidity = 0; char set_Humidity_Up; char set_Humidity_Down; char fan_Temp = 0; char fan_Humidity = 0; unsigned char fan_Duration = 0; // 5 minutes unsigned char fan_Pause = 0; // 5 minutes unsigned char http_Interval = 0; // 5 minutes unsigned long previous_Time = 0; // time for saving the settings unsigned long current_Time = 0; // time for saving the settings unsigned long refresh_Time = 0; // time for saving the settings unsigned char select_Flag = 0; unsigned char state = 0; double Kp = 2, Ki = 5, Kd = 1; // PID parameters double temp_c; double humidity; double temp_Output; double humidity_Output; PID tempPID(&temp_c, &temp_Output, &set_Temp, Kp, Ki, Kd, DIRECT); PID humidityPID(&humidity, &humidity_Output, &set_Humidity, Kp, Ki, Kd, DIRECT); float get_temperature() { temp_c = sht1x.readTemperatureC(); return temp_c; } float get_humidity() { humidity = sht1x.readHumidity(); return humidity; } void state_Machine() { uint8_t buttons = lcd.readButtons(); while(!buttons) { current_Time = millis(); refresh_Time = current_Time - previous_Time; if(refresh_Time > 4000) { state = 0; previous_Time = current_Time; lcd.setCursor(0, 0); lcd.print(“TEMPERATURE:”); lcd.print(temp_c, DEC); lcd.setCursor(0, 1); lcd.print(“HUMIDITY:”); lcd.print(humidity); break; } buttons = lcd.readButtons(); } char upFlag = 0; // flag for up button char downFlag = 0; // flag for down button char setFlag = 0; // flag for select button char select_Flag = 0; previous_Time = millis(); if (buttons) { char state_Flag; if (state_Flag) { state = 0; } else { state = 7; } lcd.clear(); if (buttons & BUTTON_LEFT) { state_Flag = 1; state --; } if (buttons & BUTTON_RIGHT) { state_Flag = 0; state ++; } select_Flag = state % 8; if(buttons & BUTTON_UP) { upFlag = 1; } if(buttons & BUTTON_DOWN) { downFlag = 1; } if(buttons & BUTTON_SELECT) { setFlag = 1; } switch (select_Flag) { // case 0: //standard mode // lcd.clear(); // lcd.setCursor(0, 0); // lcd.print(“TEMPERATURE:”); // lcd.print(temp_c, DEC); // lcd.setCursor(0, 1); // lcd.print(“HUMIDITY:”); // lcd.print(humidity); // break; case 0: // heat/cool mode if (heat_Cool_Flag) { lcd.clear(); lcd.setCursor(0, 0); lcd.print(“HEAT/COOL MODE”); lcd.setCursor(0, 1); lcd.print(“HEAT”); } else { lcd.clear(); lcd.setCursor(0, 0); lcd.print(“HEAT/COOL MODE”); lcd.setCursor(0, 1); lcd.print(“COOL”); } if (upFlag) { heat_Cool_Flag = 1; digitalWrite(HEAT_COOL_RELAY, HIGH); lcd.clear(); lcd.setCursor(0, 0); lcd.print(“HEAT/COOL MODE”); lcd.setCursor(0, 1); lcd.print(“HEAT”); } if (downFlag) { heat_Cool_Flag = 0; digitalWrite(HEAT_COOL_RELAY, LOW); lcd.clear(); lcd.setCursor(0, 0); lcd.print(“HEAT/COOL MODE”); lcd.setCursor(0, 1); lcd.print(“COOL”); } if (setFlag) { EEPROM.write(ADDR_HEAT_COOL_FLAG, heat_Cool_Flag); } break; case 1: // temperature set point mode (in Celsius) lcd.clear(); lcd.setCursor(0, 0); lcd.print(“TEMPERATURE”); lcd.setCursor(0,1); lcd.print(set_Temp); if (upFlag) { set_Temp ++; lcd.clear(); lcd.setCursor(0, 0); lcd.print(“TEMPERATURE”); lcd.setCursor(0,1); lcd.print(set_Temp); } if (downFlag) { set_Temp --; lcd.clear(); lcd.setCursor(0, 0); lcd.print(“TEMPERATURE”); lcd.setCursor(0,1); lcd.print(set_Temp); } if (setFlag) { set_Temp_Up = set_Temp * 100 / 100; set_Temp_Down = set_Temp * 100 - set_Temp_Up * 100; EEPROM.write(ADDR_SET_TEMP_UP, set_Temp_Up); EEPROM.write(ADDR_SET_TEMP_DOWN, set_Temp_Down); } break; case 2: // humidity set point mode (in percent) lcd.clear(); lcd.setCursor(0, 0); lcd.print(“HUMIDITY”); lcd.setCursor(0, 1); lcd.print(set_Humidity); if (upFlag) { set_Humidity ++; lcd.clear(); lcd.setCursor(0, 0); lcd.print(“HUMIDITY”); lcd.setCursor(0, 1); lcd.print(set_Humidity); } if (downFlag) { set_Humidity --; lcd.clear(); lcd.setCursor(0, 0); lcd.print(“HUMIDITY”); lcd.setCursor(0, 1); lcd.print(set_Humidity); } if (setFlag) { set_Humidity_Up = set_Humidity * 100 / 100; set_Humidity_Down = set_Humidity * 100 - set_Humidity_Up * 100; EEPROM.write(ADDR_SETHUMIDITY_UP, set_Humidity_Up); EEPROM.write(ADDR_SETHUMIDITY_DOWN, set_Humidity_Down); } break; case 3: // fan with temperature relay mode if (fan_Temp) { lcd.clear(); lcd.setCursor(0, 0); lcd.print(“FAN-TEMP RELAY”); lcd.setCursor(0, 1); lcd.print(“YES”); } else { lcd.clear(); lcd.setCursor(0, 0); lcd.print(“FAN-TEMP RELAY”); lcd.setCursor(0, 1); lcd.print(“NO”); } if (upFlag) { fan_Temp = 1; lcd.clear(); lcd.setCursor(0, 0); lcd.print(“FAN-TEMP RELAY”); lcd.setCursor(0, 1); lcd.print(“YES”); } if (downFlag) { fan_Temp = 0; lcd.clear(); lcd.setCursor(0, 0); lcd.print(“FAN-TEMP RELAY”); lcd.setCursor(0, 1); lcd.print(“NO”); } if (fan_Temp) { digitalWrite(FAN_TEMP_RELAY, HIGH); // delay(fan_Duration601000); digitalWrite(FAN_TEMP_RELAY, LOW); // delay(fan_Pause601000); } else { digitalWrite(FAN_TEMP_RELAY, LOW); } if (setFlag) { EEPROM.write(ADDR_FAN_TEMP, fan_Temp); } break; case 4: // fan with humidity relay mode if (fan_Humidity) { lcd.clear(); lcd.setCursor(0, 0); lcd.print(“FAN-HUMI RELAY”); lcd.setCursor(0, 1); lcd.print(“YES”); } else { lcd.clear(); lcd.setCursor(0, 0); lcd.print(“FAN-HUMI RELAY”); lcd.setCursor(0, 1); lcd.print(“NO”); } if (upFlag) { fan_Humidity = 1; lcd.clear(); lcd.setCursor(0, 0); lcd.print(“FAN-HUMI RELAY”); lcd.setCursor(0, 1); lcd.print(“YES”); } if (downFlag) { fan_Humidity = 0; lcd.clear(); lcd.setCursor(0,0); lcd.print(“FAN-HUMI-RELAY”); lcd.setCursor(0, 1); lcd.print(“NO”); } if (fan_Humidity) { digitalWrite (FAN_HUMIDITY_RELAY, HIGH); //delay (fan_Duration1000); digitalWrite (FAN_HUMIDITY_RELAY, LOW); //delay (fan_Pause1000); } else { digitalWrite (FAN_HUMIDITY_RELAY, LOW); } if (setFlag) { EEPROM.write(ADDR_FAN_HUMIDITY, fan_Humidity); } break; case 5: // auto fan duration (in minute) lcd.clear(); lcd.setCursor(0, 0); lcd.print(“AUTO FAN TIME”); lcd.setCursor(0, 1); lcd.print(fan_Duration); lcd.print(" min"); if (upFlag) { fan_Duration ++; lcd.clear(); lcd.setCursor(0, 0); lcd.print(“AUTO FAN TIME”); lcd.setCursor(0, 1); lcd.print(fan_Duration); lcd.print(" min"); } if (downFlag) { fan_Duration --; lcd.clear(); lcd.setCursor(0, 0); lcd.print(“AUTO FAN TIME”); lcd.setCursor(0, 1); lcd.print(fan_Duration); lcd.print(" min"); } if (setFlag) { EEPROM.write(ADDR_FAN_DURATION, fan_Duration); } break; case 6: // auto fan pause (in minute) lcd.clear(); lcd.setCursor(0, 0); lcd.print(“AUTO FAN PAUSE”); lcd.setCursor(0, 1); lcd.print(fan_Pause); lcd.print(’ min’); if (upFlag) { fan_Pause ++; lcd.clear(); lcd.setCursor(0, 0); lcd.print(“AUTO FAN PAUSE”); lcd.setCursor(0, 1); lcd.print(fan_Pause); lcd.print(" min"); } if (downFlag) { fan_Pause --; lcd.clear(); lcd.setCursor(0, 0); lcd.print(“AUTO FAN PAUSE”); lcd.setCursor(0, 1); lcd.print(fan_Pause); lcd.print(" min"); } if (setFlag) { EEPROM.write(ADDR_FAN_PAUSE, fan_Pause); } break; case 7: // HTTP log interval (in minute) lcd.clear(); lcd.setCursor(0, 0); lcd.print(“HTTP INTERVAL”); lcd.setCursor(0,1); lcd.print(http_Interval); lcd.print(" min"); if (upFlag) { http_Interval ++; lcd.clear(); lcd.setCursor(0, 0); lcd.print(“HTTP INTERVAL”); lcd.setCursor(0, 1); lcd.print(http_Interval); lcd.print(" min"); } if (downFlag) { http_Interval --; lcd.clear(); lcd.setCursor(0, 0); lcd.print(“HTTP INTERVAL”); lcd.setCursor(0, 1); lcd.print(http_Interval); lcd.print(" min"); } if (setFlag) { EEPROM.write(ADDR_HTTP_INTERVAL, http_Interval); } break; } } upFlag = 0; downFlag = 0; setFlag = 0; buttons = 0; } void setup() { //Serial.begin(9600); Ethernet.begin(mac,ip); pinMode(HEAT_COOL_RELAY, OUTPUT); pinMode(FAN_TEMP_RELAY, OUTPUT); pinMode(FAN_HUMIDITY_RELAY, OUTPUT); tempPID.SetMode(AUTOMATIC); humidityPID.SetMode(AUTOMATIC); lcd.begin(16, 2); lcd.setBacklight(BLUE); lcd.setCursor(3, 0); lcd.print(“WELCOME”); lcd.setCursor(5, 1); lcd.print(“…”); delay(1000); lcd.setCursor(0, 0); lcd.print(“TEMPERATURE:”); lcd.print(temp_Output); lcd.setCursor(0, 1); lcd.print(“HUMIDITY:”); lcd.print(humidity_Output); } void loop() { if (check_Flag) { heat_Cool_Flag = EEPROM.read(ADDR_HEAT_COOL_FLAG); set_Temp_Up = EEPROM.read(ADDR_SET_TEMP_UP); set_Temp_Down = EEPROM.read(ADDR_SET_TEMP_DOWN); set_Humidity_Up = EEPROM.read(ADDR_SETHUMIDITY_UP); set_Humidity_Down = EEPROM.read(ADDR_SETHUMIDITY_DOWN); fan_Temp = EEPROM.read(ADDR_FAN_TEMP); fan_Humidity = EEPROM.read(ADDR_FAN_HUMIDITY); fan_Duration = EEPROM.read(ADDR_FAN_DURATION); fan_Pause = EEPROM.read(ADDR_FAN_PAUSE); http_Interval = EEPROM.read(ADDR_HTTP_INTERVAL); set_Temp = set_Temp_Up + set_Temp_Down/100; set_Humidity = set_Humidity_Up + set_Humidity_Down/100; check_Flag = 0; } temp_c = get_temperature(); humidity = get_humidity(); tempPID.Compute(); humidityPID.Compute(); if (set_Temp > temp_Output) { digitalWrite(HEAT_COOL_RELAY, HIGH); } else { digitalWrite(HEAT_COOL_RELAY, LOW); } state_Machine(); // String array[numElements][2] = {{“TEMPERATURE”, temp_c}, {“HUMIDITY”, humidity}, {“HEAT/COOL MODE”, “YES”}, {“FAN-TEMP RELAY”, “YES”}, {“FAN-HUMIDITY RELAY”, “YES”}}; // Serial.println(sender.send(array, numElements, APIKEY, DEVICE)); }

Снесите тему - пусть научится вставлять код !

Заморочка начинается тут
} void state_Machine() { uint8_t buttons = lcd.readButtons(); while(!buttons) { current_Time = millis(); refresh_Time = current_Time - previous_Time; if(refresh_Time > 4000) { state = 0; previous_Time = current_Time; lcd.setCursor(0, 0); lcd.print(“TEMPERATURE:”); lcd.print(temp_c, DEC); lcd.setCursor(0, 1); lcd.print(“HUMIDITY:”); lcd.print(humidity); break; } buttons = lcd.readButtons(); } char upFlag = 0; // flag for up button char downFlag = 0; // flag for down button char setFlag = 0; // flag for select button char select_Flag = 0; previous_Time = millis(); if (buttons) { char state_Flag; if (state_Flag) { state = 0; } else { state = 7; } lcd.clear(); if (buttons & BUTTON_LEFT) { state_Flag = 1; state --; } if (buttons & BUTTON_RIGHT) { state_Flag = 0; state ++; } select_Flag = state % 8; if(buttons & BUTTON_UP) { upFlag = 1; } if(buttons & BUTTON_DOWN) { downFlag = 1; } if(buttons & BUTTON_SELECT) { setFlag = 1; } switch (select_Flag) { // case 0: //standard mode // lcd.clear(); // lcd.setCursor(0, 0); // lcd.print(“TEMPERATURE:”); // lcd.print(temp_c, DEC); // lcd.setCursor(0, 1); // lcd.print(“HUMIDITY:”); // lcd.print(humidity); // break; case 0: // heat/cool mode if (heat_Cool_Flag) { lcd.clear(); lcd.setCursor(0
Кнопки сидят на А0 и у каждой кнопки сопротивление разное , прописывая цыфры для сравнения buttons , он их не сравнивает … Соответственно не понимает какая кнопка нажата , перепробовал все варианты

@Anatolii, это что сейчас было?

даже если Вы вставите какой-то код, от Вас требуется ещё и словами объяснить что именно Вы пробовали и что именно у Вас вызвало трудности.

Вы способны это прочитать? Я - нет.

Вставьте код как положено, с номерами строк и т.п.

И ещё, объясняйте толком какие именно “все” варианты Вы перепробовали. Приводите коды что Вы пробовали, а что - нет.

Для начала узнать оригинальный скетч компилируется?

Для этого надо, чтобы его нормально вставили. И объяснили что сделано самостоятельно. Иначе - в платный раздел. Почему-то мне кажется, что этим всё и закончится.

раз ТС говорит, что

скорее всего ДА! Но ведь врёт жеж насчет перепробовал )))

Начальный командируется без вопросов

В каком виде ожидается помощь?

Подправить кусок где кнопки в скетче … Если можете

Не сможем до тех пор, пока Вы не вставите нормально код и не покажете, что именно “всё” Вы пробовали.

1 лайк

“Ишь, петь хотели заставить”