Nextion LCD + Arduino

Sigla
Sigla аватар
Offline
Зарегистрирован: 11.11.2016

Добро пожаловать,
Нужен ваш совет почему не работает переключатель ( кнопка на LCD )  в этом коде?

без DTH22 работает.

извините, я зелёный в программировании.

#include <SoftwareSerial.h>
#include <Nextion.h>
#include "DHT.h"

#define DHTPIN 5
#define DHTTYPE DHT22   // DHT 22 or 11
DHT dht(DHTPIN, DHTTYPE);

SoftwareSerial nextion(2, 3);// Nextion TX to pin 2 and RX to pin 3 of Arduino

Nextion myNextion(nextion, 9600); //create a Nextion object named myNextion using the nextion serial port @ 9600bps

boolean button1State;
boolean button2State;
const int Relay1 =  8;      // the number of the LED pin

void setup() {
  Serial.begin(9600);
  myNextion.init(); // send the initialization commands for Page 0
  dht.begin();
  pinMode(Relay1, OUTPUT);
  digitalWrite(Relay1, HIGH); 

}


void loop() {

  String message = myNextion.listen(); //check for message
  if (message == "70 1") { 
    myNextion.buttonToggle(button1State, "bt0", 0, 2);
    digitalWrite(Relay1, LOW);
  }
  if (message == "70 0") {
    myNextion.buttonToggle(button2State, "bt0", 0, 2);
    digitalWrite(Relay1, HIGH);
  } 

  float h = dht.readHumidity();
  float t = dht.readTemperature();

  myNextion.setComponentText("t0", String(t));
  delay(1000);

  myNextion.setComponentText("t1", String(h));
  delay(1000);
  }

 

Sigla
Sigla аватар
Offline
Зарегистрирован: 11.11.2016

Tак работает только DTH 22 

#include <SoftwareSerial.h>
#include <Nextion.h>
#include "DHT.h"

#define DHTPIN 5
#define DHTTYPE DHT22   // DHT 22 or 11
DHT dht(DHTPIN, DHTTYPE);

SoftwareSerial nextion(2, 3);// Nextion TX to pin 2 and RX to pin 3 of Arduino

Nextion myNextion(nextion, 9600); //create a Nextion object named myNextion using the nextion serial port @ 9600bps

boolean button1State;
boolean button2State;
const int Relay1 =  8;      // the number of the Relay1 pin

void setup() {
  Serial.begin(9600);
  myNextion.init(); // send the initialization commands for Page 0
  dht.begin();
  pinMode(Relay1, OUTPUT);
  digitalWrite(Relay1, HIGH); 
  
}


 void sensor(){
  float h = dht.readHumidity();
  float t = dht.readTemperature();

  myNextion.setComponentText("t0", String(t));
  delay(1000);

  myNextion.setComponentText("t1", String(h));
  delay(1000);
 
 }


 void button(){
   String message = myNextion.listen(); //check for message
  if (message == "70 1") { 
    myNextion.buttonToggle(button1State, "bt0", 0, 2);
    digitalWrite(Relay1, LOW);
  }
  if (message == "70 0") {
    myNextion.buttonToggle(button2State, "bt0", 0, 2);
    digitalWrite(Relay1, HIGH);
  }
 }


 void loop(){
  
   sensor();
   button();
 }

 

vvadim
Offline
Зарегистрирован: 23.05.2012

для начала избавьтесь от задержек, используйте millis

Sigla
Sigla аватар
Offline
Зарегистрирован: 11.11.2016

vvadim пишет:

для начала избавьтесь от задержек, используйте millis

Спасибо!  попробую. Я зелены, но может быть получица.

не когда не пробовал "millis" , Я думаю, что эта миссия невозможна (:

Юрген
Offline
Зарегистрирован: 02.10.2017

Ребята подскажите, как мне вывести показания времени с модуля ds1307 из ардуино на nextion панель? задумка сделать метеостанцию. давление и температуру вывел без проблем, а вот со временем вошел в ступор. только учусь. направте в нужное русло.

#include <SoftwareSerial.h>
#include <Nextion.h>
#include "Wire.h"
#include "Adafruit_BMP085.h"
#include <iarduino_RTC.h>
iarduino_RTC time(RTC_DS1307);
float P; 
 
Adafruit_BMP085 bmp;
   
SoftwareSerial nextion(2, 3);// Nextion TX to pin 2 and RX to pin 3 of Arduino
Nextion myNextion(nextion, 9600); //create a Nextion object named myNextion using the nextion serial port @ 9600bps
 
void setup(void)
{
  Serial.begin(9600);             // Запускаем вывод данных на серийный порт
  bmp.begin();            
  myNextion.init();
  time.begin();
   // time.settime(0,4,16,1,10,17,7);
}
 
void loop(void)
{    
myNextion.setComponentText("t7", String(bmp.readTemperature()));
P=bmp.readPressure();
P=(float)0.0075*P; // пересчитываем давления в привычные нам мм ртутного столба.
myNextion.setComponentText("t6", String(P));
delay(5000);  
 
myNextion.setComponentText("t8", String(time.gettime); // выводим время
     
 
   
}
Sigla
Sigla аватар
Offline
Зарегистрирован: 11.11.2016

Sigla пишет:

vvadim пишет:

для начала избавьтесь от задержек, используйте millis

Спасибо!  попробую. Я зелены, но может быть получица.

не когда не пробовал "millis" , Я думаю, что эта миссия невозможна (:

#include <SoftwareSerial.h>
#include <Nextion.h>
#include "DHT.h"

#define DHTPIN 5
#define DHTTYPE DHT22   // DHT 22 or 11
DHT dht(DHTPIN, DHTTYPE);

SoftwareSerial nextion(2, 3);// Nextion TX to pin 2 and RX to pin 3 of Arduino

Nextion myNextion(nextion, 9600); //create a Nextion object named myNextion using the nextion serial port @ 9600bps
unsigned long last_time; // Dlia DHT22 
boolean button1State;
boolean button2State;
const int Relay1 =  8;      // the number of the LED pin

void setup() {
  Serial.begin(9600);
  myNextion.init(); // send the initialization commands for Page 0
  dht.begin();
  pinMode(Relay1, OUTPUT);
  digitalWrite(Relay1, HIGH);  

}

void loop() {
  float h = dht.readHumidity();
  float t = dht.readTemperature();

  if (millis() - last_time > 1000 ){
  last_time = millis();
  myNextion.setComponentText("t0", String(t));
  myNextion.setComponentValue("z0", (t));
  myNextion.setComponentText("t1", String(h));
  myNextion.setComponentValue("z1", (h)); 
  } 

  
   String message = myNextion.listen(); //check for message
  if (message == "70 1") { 
    myNextion.buttonToggle(button1State, "bt0", 0, 2);
    digitalWrite(Relay1, LOW);
  }
  if (message == "70 0") {
    myNextion.buttonToggle(button2State, "bt0", 0, 2);
    digitalWrite(Relay1, HIGH);
  }
 }

Bроди работает, но кнопка тормозит, почему?