Метеостанция на Arduino mega nrf24l01+ цветной tft дисплей 3,5"

Скетч передатчика почти в самом начале, там только адрес датчика неправильный мы потом здесь разбирали и я поставил правильный… Выложить еще раз?

01	#include <SPI.h>
02	#include "nRF24L01.h"
03	#include "RF24.h"
04	#include <OneWire.h>  //библиотека работы шины для ds18b20
05	#include <DallasTemperature.h> //библиотека для считывания температуры с ds18b20
06	   
07	const uint64_t pipe = 0xF0F1F2F3F4LL; //идентификатор передачи данных.
08	RF24 radio(9, 10); //указываем пины подключения передатчика.
09	OneWire  oneWire(2);  //указываем пины для подключения датчика ds18b20.
10	DallasTemperature ds(&oneWire); //активируем библиотеку ds.
11	 
12	DeviceAddress sensor = {0x28, 0x17, 0x7B, 0x56, 0xB5, 0x01, 0x3C, 0x5C}; //адрес датчика.
13	
14	 
15	void setup(){
16	  Serial.begin(9600); //открываем пот обмена данными.
17	  ds.begin();  //запускаем функцию считывания температуры ds.
18	  radio.begin(); //делаем инициализацию.
19	  delay(2); //ждем реакции модуля передачи данных.
20	  radio.setChannel(5); // канал для передачи данных (0-127).
21	  radio.setDataRate(RF24_1MBPS); //указываем на какой скорости будут общаться модули.
22	  radio.setPALevel(RF24_PA_HIGH); //указываем мощность передатчика. 
23	  radio.openWritingPipe(pipe); // открываем трубу на передачу.
24	}
25	 
26	 
27	void loop(){ 
28	  ds.requestTemperatures(); // считываем температуру с датчика
29	  float data ;  //создаем массив.
30	  data = float(ds.getTempC(sensor)); //присваиваем значению массива данные с sensor (за один раз можно отправить до 32 байт).
31	 
32	  radio.write(&data, sizeof(data)); // передаем массив и его размер.
33	   Serial.println(data); //выводим данные в сериал порт для проверки.
34
35	   Serial.println(); //пробел.
36	   delay(500); //ждем пол секунды. 
37	}

я же писал, в порт каждые полсекунды выдается температура

возьмите здесь коды приёмника и передатчика и проверьте

Хорошо, но уже завтра. Сегодня, к сожалению, больше не могу. Всем спасибо, до завтра.

Всем большое спасибо! Все заработало. Была неисправна ардуино нано.

Подскажите, можно ли русифицировать?

Естественно можно.

Я бы не стал горячиться. Санкционировать такое может только @anonimSimen

Я не понял насчет санкционирования

Я разрешил, можно.

Тогда подскажите как

к примеру так но Яндекс знает сильно больше

Сейчас новый тренд. ChatGPT ))

это когда Александр бота к форуму прикрутит, а пока по старинке

Добрый день всем! Русификацию пока отложил. Рано сказал, что все нормально. Выявилась проблема. Я проверял, на 5 мин включил и все. Сейчас собрал все в коробок, запустил и появилась проблема в часах. Каждый час как минуты однозначные, т.е. 0,1, …9 сохраняется вторая цифра от 59, то есть вместо 0 показывает 09, вместо 1 - 19, и так до 10 с10 до конца часа показывает правильно. То же самое с часами, только вторая цифра 3, т.е. от 23 часов. Подскажите что не так в скетче.

#include <Wire.h>
#include "RTClib.h"

RTC_DS3231 rtc;

char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};

void setup () 
{
  Serial.begin(9600);
  delay(3000); // ждать открытия консоли

  if (! rtc.begin()) {
    Serial.println("Couldn't find RTC");
    while (1);
  }

  if (rtc.lostPower()) {
    Serial.println("RTC lost power, lets set the time!");
	
	
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
	
    
  }
}

void loop () 
{
    DateTime now = rtc.now();
    
    Serial.println("Current Date & Time: ");
    Serial.print(now.year(), DEC);
    Serial.print('/');
    Serial.print(now.month(), DEC);
    Serial.print('/');
    Serial.print(now.day(), DEC);
    Serial.print(" (");
    Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
    Serial.print(") ");
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    Serial.print(now.second(), DEC);
    Serial.println();
    

Надо выводить с ведущим 0 - не 0 , а 00

40    Serial.print(") ");
      if (now.hour()<10) Serial.print('0');  // вставить такие проверки !!!
41    Serial.print(now.hour(), DEC);

Также для минут и секунд и.т.д…

в какой строке что изменить, я не нашел?

или какую строку добавить?

У меня на это нет не матерных слов !!!

Все что написано с 32 по 45 строку можно вывести за одну строку с sprintf(…) !!!

char b[42];
sprintf(b, "Current Date & Time: %4d/%02d/%02d (%3s) %02d:%02d:%02d", 2023,3,22,"WED",12,50,25);
Serial.println(b);

Все данные начиная с 2023 меняете на свои переменные !

1 лайк

Можете матерными, но я писал, что в программировании я ноль, и все скетчи составлял на основе примеров из инета, и этот тоже. И одной строкой мне не надо, дата и время и день недели выводятся в разных окошках. Я задал только вопрос как выводить часы и минуты двузначно и все . Остальное меня все устраивает.