Arduino+Nextion+Bme280

KOOKOS
Offline
Зарегистрирован: 15.12.2019

Всем привет! У меня есть проект под экран nextion+arduino uno+bme280

 

#include "NexButton.h"
#include "NexText.h"
#include "DHT.h"


#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>

#define SEALEVELPRESSURE_HPA (1013.25)

Adafruit_BME280 bme;

#define DHTPIN 2

DHT dht(DHTPIN, DHT11);
  
NexText t0 = NexText(0, 1, "t0");
NexText t1 = NexText(0, 2, "t1");
NexText t2 = NexText(0, 3, "t2");
NexText t3 = NexText(0, 4, "t3");
NexText t4 = NexText(0, 5, "t4");

char buffer[3];
char buffer1[3];
char buffer2[3];
char bufferTemp[5];
char bufferH[10];

uint8_t days,mounth,years,minutes,hours,seconds = 0;

NexTouch *nex_Listen_List[] = 
{
    NULL
};

void setup() {
  Serial.begin(9600);
  bme.begin();
  nexInit();
  days = 5;
  mounth = 0;
  minutes = 59;
  hours = 23;
  seconds = 55;
  dht.begin();
}

void date()
{
  delay(1000);
  seconds = seconds + 1;
  if(seconds >= 60)
  {
      minutes ++;
      seconds = 0;
  }
  if(minutes == 60)
  {
    minutes = 0;
    seconds = 0;
    hours ++;
  }
  if(hours == 24)
  {
    minutes = 0;
    seconds = 0;
    hours = 0;
    days = days + 1;
  }
  
}

void updateS()
{
    memset(buffer, 0, sizeof(buffer)); 
    itoa(seconds, buffer, 10);
    if (strcmp(30, buffer))
    {
        strcpy(-1, buffer); 
    }
    t0.setText(buffer);

    memset(buffer1, 0, sizeof(buffer1)); 
    itoa(minutes, buffer1, 10);
    if (strcmp(minutes, buffer1))
    {
        strcpy(-1, buffer1); 
    }
    t1.setText(buffer1);

    memset(buffer2, 0, sizeof(buffer2)); 
    itoa(hours, buffer2, 10);
    if (strcmp(0, buffer2))
    {
        strcpy(-1, buffer2); 
    }
    t2.setText(buffer2);
}

void bmeU()
{
  float h = bme.readHumidity();

  memset(bufferTemp, 1, sizeof(bufferTemp)); 
    itoa(bme.readTemperature(), bufferTemp, 10);
    if (strcmp(0, bufferTemp))
    {
        strcpy(-1, bufferTemp); 
    }
    t3.setText(bufferTemp);

    memset(bufferH, 0, sizeof(bufferH)); 
    itoa(bme.readPressure() / 100 -250, bufferH, 10);
    if (strcmp(0, bufferH))
    {
        strcpy(1000, bufferH); 
    }
    t4.setText(bufferH);
    delay(100);
}

void loop() {
  date();
    updateS();
    bmeU();
   

  Serial.println(bme.readTemperature());
  

}

Проблема заключается в том, что градусы выводятся без сотых и десятых. 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Спасибо, будем знать в чём проблема этого кода. Если у Вас возникнут какие-то вопросы, не стесняйтесь спрашивать.

Только сначала спросите у автора этого, с позволения сказать, кода, что означает бред написанный в строках №№ 79,87, 95, 108 и 116, и что по его его глубокоуважаемому мнению там должно происходить.

KOOKOS
Offline
Зарегистрирован: 15.12.2019

Там должны преобразовываться данные и отправляться на экран(если че, то я чайник в этих экранах)

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

В этих строках (№№ 79,87, 95, 108 и 116)?
В них "должны преобразовываться данные и отправляться на экран"???

Вот Вы пишете

KOOKOS пишет:

Проблема заключается в том, что градусы выводятся без сотых и десятых. 

Так вот это неверно.

Вы взяли чужой (крайне безграмотный) код и, не понимая в нём ни одной буквы, решили поправить его под свои хотелки. Для этого обратились сюда. Так вот, проблема в том, что так это не работает. Вот в чём на самом деле проблема.

Зайдите в раздел "Ищу исполнителя" и закажите там правку этого кода (или написание нового - это будет дешевле). Заплатите, и Вам сделают.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

KOOKOS пишет:

Там должны преобразовываться данные и отправляться на экран(если че, то я чайник в этих экранах)

А в чём "не чайник"? Просто интересно.

KOOKOS
Offline
Зарегистрирован: 15.12.2019

я более в написании по под андроид и пк

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

KOOKOS пишет:

я более в написании по под андроид и пк

Здорово!

Тогда расскажи про функцию strcmp(). Она никакого отношения к "экранам" не имеет. Стандартная функция С. Еще в "Кернигане и Ричи" помянутая.

KOOKOS
Offline
Зарегистрирован: 15.12.2019

она отдает целое число

sadman41
Offline
Зарегистрирован: 19.10.2016

KOOKOS пишет:

она отдает целое число


И не поспоришь...

KOOKOS
Offline
Зарегистрирован: 15.12.2019

Дааааааааа

 

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

KOOKOS пишет:

я более в написании по под ... пк

В таком случае, поправить этот бред код тебе как два пальца.  Только тут опять проблема - сбрехал ты. Под ПК ты такой же спец, как и под Ардуино, т.е. "дуб дубом".

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

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

KOOKOS пишет:

она отдает целое число

Кому, зачем?

И чё ты не в пятницу сюда пришёл?

KOOKOS
Offline
Зарегистрирован: 15.12.2019

не ну тут не прикопаться

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Вот даже если ты сбрехал, что весьма вероятно, то запрос "strcmp" в Яндексе сразу дает ответ. Ты ж с компа пишешь, значит поисковка есть?

KOOKOS
Offline
Зарегистрирован: 15.12.2019

да

И все теперь работает

float t = bme.readTemperature();
  static char bufferT[6];
  dtostrf(t, 6, 2, bufferT);
  t3.setText(bufferT);
  delay(100);

 

KOOKOS
Offline
Зарегистрирован: 15.12.2019

Всем спасибо

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Ахренеть, темы пошли! :)

KOOKOS
Offline
Зарегистрирован: 15.12.2019

ша, доделаю

KOOKOS
Offline
Зарегистрирован: 15.12.2019

зашибумба, встретимся когда приедет датчик кислорода

sadman41
Offline
Зарегистрирован: 19.10.2016

Что за датчик кислорода и чего с ним делать в быту?

KOOKOS
Offline
Зарегистрирован: 15.12.2019

mh-z19b . Я делаю метеостанцию с кучей прибамбасов 

nik182
Offline
Зарегистрирован: 04.05.2015

Так это углекислого газа. Очень полезная вещь. Особенно если плита газовая.

KOOKOS
Offline
Зарегистрирован: 15.12.2019

Вообще он в принципе полезен. 

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

KOOKOS пишет:

Вообще он в принципе полезен. 

Если приготовить правильно ;)