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

А тут ни у кого, когда он учился в школе, компов не было. Нас, помню, чтобы показать комп (издалека - в помещение, которое он занимал, естественно никого не пускали) специально водили то-ли на предприятие, то-ли в институт.

В 1983 журнал “Радио” закончил публикацию цикла статей о микропроцессорах, каждая из которых содержала целиком схему блока, из которых можно было собрать ПК. Правда, этот набор представлял по сути практически “максимальную конфигурацию”, состоящую примерно из 230 корпусов микросхем, поэтому эту конструкцию мало кто отваживался собирать. А вот через 3 года тот же “Радио” опубликовал схему уже максимально “экономного” ПК всего на 29 корпусах - и эта конструкция (Радио РК-86) уже стала массовой. Ну, по крайней мере, лично я ее собирал, да и многие из присутствующих здесь - тоже. Так что Ваши сроки следует сдвинуть лет так на 10.

IMHO пустые жалобы. Вот сколько осталось жить человеку с 4-й стадией рака? А в 75 - еще вагон времени.

А вот тут не надо лукавить.
То, о чем Вы пишете - это никак не сделать самому, это лишь скопировать то, что уже кто-то сделал до Вас.
Вы уже не помните, когда учились в школе, списать сочинение у соседа - это то же самое, что написать самому? А ведь и тетрадка Ваша, и буквы написаны Вами…

И то, что Вы пишете насчет “помощи” - это не помощь. Это по-другому называется.

И еще: как Вы думаете, можно ли написать свои стихи, используя в качестве заготовок вырезанные из газеты предложения? Но некоторые почему-то продолжают думать, что таким способом (компиляцией из нескольких источников) можно написать программу.

Почти со всем я согласен, но списать сочинение у соседа и написать ДЛЯ СЕБЯ программу " таким способом (компиляцией из нескольких источников)" я не считаю преступлением. Я не собираюсь ее никуда выкладывать вообще, тем более под авторством. И если кто-то пишет стихи для себя " используя в качестве заготовок вырезанные из газеты предложения", не публикуя их нигде и не выдавая их за свои нигде, то это его дело. Это лично мое мнение . Вы можете с ним не соглашаться.

1 лайк

DS3231 заработал?

Я разве что-то сказал о преступлении?
Если человек выложил свою работу в свободный доступ, каждый имеет право ею воспользоваться. И Вы - не исключение. Но в любом случае - эта работа не станет Вашей. Поэтому скопировать чужую самоделку - это никак не “сделать самому”.

Я это употребил несколько в другом контексте. Вы всерьез считаете, что таким способом возможно написать стихи? Дело не в конфликте с авторским правом, а в негодности самого способа.

Добрый день всем. Я вчера не выходил, и еще день - два не буду выходить. Я не забросил проект, просто приболел. Отлежусь немного и продолжу.

Добрый день всем. Сегодня температура отпустила, с утра позанимался. По вашему совету решил заняться сначала и с простого. Отключил часы, подключил только датчик dht11. Почитал в интернете, посмотрел примеры скетча в библиотеке в инете, с их помощью написал скетч для dht11.

#define DHTPIN 2   //указываю номер пина подключения датчика
#define DHTTYPE DHT11  //указываю тип датчика
DHT dht(DHTPIN, DHTTYPE);  //объявляю переменную с типом датчика и номером пина


#include <UTFT.h>  //подключаю библиотеку дисплея
extern uint8_t nadianne[];  //Подключаю шрифты
extern uint8_t DotMatrix_M[]; 
extern uint8_t DotMatrix_XL_Num[]; 
extern uint8_t GroteskBold32x64[];
extern uint8_t GroteskBold24x48[];
extern uint8_t SevenSegNumFontPlusPlus[];
extern uint8_t Dingbats1_XL[];
extern uint8_t GroteskBold16x32[];
extern uint8_t arial_italic[];
extern uint8_t nadianne[];
extern uint8_t hallfetica_normal[];
extern uint8_t various_symbols[];
extern uint8_t Various_Symbols_16x32[];
//extern uint8_t SmallFont[];


UTFT myGLCD(CTE40,38,39,40,41);   // указываю параметры дисплея и номера пинов


  void setup()
{
  Serial.begin(115200);  //определяю скорость взаимодействия компа с платой

 
  Serial.println(F("DHT11"));

  dht.begin();
 

  myGLCD.InitLCD(); //Инициализируем дисплей

  myGLCD.clrScr();
  
  myGLCD.setColor(255, 255, 255);  //рисую окошки для вывода данных на дисплей
  myGLCD.fillRect(0,4,450,0);
  
  myGLCD.setColor(255, 255, 255);
  myGLCD.fillRect(1,272,5,0);
   
    myGLCD.setColor(255, 255, 255); //розовый, 255,225,225 синий,255,225,255 светло голубой
  myGLCD.fillRect(218,272,220,0);
  
   myGLCD.setColor(255, 255, 255); //розовый, 255,225,225 синий,255,225,255 светло голубой
  myGLCD.fillRect(0,90,450,92);

  myGLCD.setColor(255, 255, 255);
  myGLCD.fillRect(0,272,450,270);

  myGLCD.setColor(255, 255, 255);
  myGLCD.fillRect(0,182,450,180);

 myGLCD.setColor(255, 255, 255);
 myGLCD.fillRect(450,272,452,0);
  
  myGLCD.setColor(255, 0, 255);  //пишу заголовки в окошках
  myGLCD.setFont(hallfetica_normal);
  myGLCD.print("Street temp", 40, 5);
  
  myGLCD.setColor(255, 0, 255);
   myGLCD.setFont(hallfetica_normal);
   myGLCD.print("mm", 182,110);
   
   myGLCD.setColor(255, 0, 255);
   myGLCD.setFont(hallfetica_normal);
   myGLCD.print("Hg", 186,125);
   
   myGLCD.setColor(255, 0, 255);
   myGLCD.setFont(hallfetica_normal);
   myGLCD.print("Pressure", 20,94);
     
  myGLCD.setColor(0, 255, 255);
  myGLCD.setFont(hallfetica_normal);
  myGLCD.print("Home temp", 235, 5);
  
  myGLCD.setColor(0, 255, 255);
   myGLCD.setFont(hallfetica_normal);
   myGLCD.print("o", 365,20);
      
   myGLCD.setColor(0, 255, 255);
   myGLCD.setFont(hallfetica_normal);
   myGLCD.print("C", 380,30);
   
   myGLCD.setColor(0, 255, 255);
   myGLCD.setFont(hallfetica_normal);
   myGLCD.print("%", 370,110);
   
   myGLCD.setColor(0, 255, 255);
   myGLCD.setFont(hallfetica_normal);
   myGLCD.print("Humidity", 235,94);
   
    myGLCD.setColor(255, 0, 255);
   myGLCD.setFont(hallfetica_normal);
   myGLCD.print("o", 180,20);
   
   
   myGLCD.setColor(255, 0, 255);
   myGLCD.setFont(hallfetica_normal);
   myGLCD.print("C", 195,30);
   }
  
  void loop()
{
 delay(2000);  //задержка между считыванием датчика в миллисекундах
  
  int h = dht.readHumidity(); // чтение датчика на пине 2
 int t = dht.readTemperature();    // чтение датчика на пине 2
  
 //float h = dht.readHumidity(); // чтение датчика на пине 2
// float t = dht.readTemperature();    // чтение датчика на пине 2
 
 if (isnan(h) || isnan(t))   //если что-то не удалось считать, выводится сообщение
 {
 Serial.println(F("Failed to read from DHT sensor!"));
 return;
  }

  Serial.print(F("Humidity: "));  //выводим данные на комп (смотрим монитор порта)
  Serial.print(h);
  Serial.print(F("%  Temperature: "));
  Serial.println(t);
 
 {
   myGLCD.setColor(255, 0, 255);  //выводим данные на дисплей
   myGLCD.setFont(Various_Symbols_16x32);
  myGLCD.print(h, 235,141);

   }
   {
   myGLCD.setColor(255, 0, 255);
   myGLCD.setFont(GroteskBold16x32);
  myGLCD.print(t,235,50);
   }
  
      
   }

   
       
       

но что-то наверное накосячил. На дисплее в окошках температура и влажность выводятся какие-то иероглифы, в мониторе порта все нормально. Когда в мониторе меняется влажность, в окошке тоже меняется иероглиф. Подскажите, что я сделал не так (или все не так?)

Вы не научились работать с дисплеем. Напишите 2-10 программ, в которых Вы будете что-то отправлять на дисплей, что-то на нём рисовать и т.д.
Только после этого совмещайте дисплей с данными.

Начнём с того, что приведённый скетч не может компилироваться…

скетч компилируется и загружается

я говорю о том скетче, что вы опубликовали, что пропустили?

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

Еще раз, для непонятливых, скопируйте Ваш опубликованный скетч в новый, откомпилируйте, сообщения компилятора выложите сюда…

Виноват, не скопировалась 1 строка

#include "DHT.h"   //Включаю библиотеку датчиков dht
#define DHTPIN 2   //указываю номер пина подключения датчика
#define DHTTYPE DHT11  //указываю тип датчика
DHT dht(DHTPIN, DHTTYPE);  //объявляю переменную с типом датчика и номером пина


#include <UTFT.h>  //подключаю библиотеку дисплея
extern uint8_t nadianne[];  //Подключаю шрифты
extern uint8_t DotMatrix_M[]; 
extern uint8_t DotMatrix_XL_Num[]; 
extern uint8_t GroteskBold32x64[];
extern uint8_t GroteskBold24x48[];
extern uint8_t SevenSegNumFontPlusPlus[];
extern uint8_t Dingbats1_XL[];
extern uint8_t GroteskBold16x32[];
extern uint8_t arial_italic[];
extern uint8_t nadianne[];
extern uint8_t hallfetica_normal[];
extern uint8_t various_symbols[];
extern uint8_t Various_Symbols_16x32[];
//extern uint8_t SmallFont[];


UTFT myGLCD(CTE40,38,39,40,41);   // указываю параметры дисплея и номера пинов


  void setup()
{
  Serial.begin(115200);  //определяю скорость взаимодействия компа с платой

 
  Serial.println(F("DHT11"));

  dht.begin();
 

  myGLCD.InitLCD(); //Инициализируем дисплей

  myGLCD.clrScr();
  
  myGLCD.setColor(255, 255, 255);  //рисую окошки для вывода данных на дисплей
  myGLCD.fillRect(0,4,450,0);
  
  myGLCD.setColor(255, 255, 255);
  myGLCD.fillRect(1,272,5,0);
   
    myGLCD.setColor(255, 255, 255); //розовый, 255,225,225 синий,255,225,255 светло голубой
  myGLCD.fillRect(218,272,220,0);
  
   myGLCD.setColor(255, 255, 255); //розовый, 255,225,225 синий,255,225,255 светло голубой
  myGLCD.fillRect(0,90,450,92);

  myGLCD.setColor(255, 255, 255);
  myGLCD.fillRect(0,272,450,270);

  myGLCD.setColor(255, 255, 255);
  myGLCD.fillRect(0,182,450,180);

 myGLCD.setColor(255, 255, 255);
 myGLCD.fillRect(450,272,452,0);
  
  myGLCD.setColor(255, 0, 255);  //пишу заголовки в окошках
  myGLCD.setFont(hallfetica_normal);
  myGLCD.print("Street temp", 40, 5);
  
  myGLCD.setColor(255, 0, 255);
   myGLCD.setFont(hallfetica_normal);
   myGLCD.print("mm", 182,110);
   
   myGLCD.setColor(255, 0, 255);
   myGLCD.setFont(hallfetica_normal);
   myGLCD.print("Hg", 186,125);
   
   myGLCD.setColor(255, 0, 255);
   myGLCD.setFont(hallfetica_normal);
   myGLCD.print("Pressure", 20,94);
     
  myGLCD.setColor(0, 255, 255);
  myGLCD.setFont(hallfetica_normal);
  myGLCD.print("Home temp", 235, 5);
  
  myGLCD.setColor(0, 255, 255);
   myGLCD.setFont(hallfetica_normal);
   myGLCD.print("o", 365,20);
      
   myGLCD.setColor(0, 255, 255);
   myGLCD.setFont(hallfetica_normal);
   myGLCD.print("C", 380,30);
   
   myGLCD.setColor(0, 255, 255);
   myGLCD.setFont(hallfetica_normal);
   myGLCD.print("%", 370,110);
   
   myGLCD.setColor(0, 255, 255);
   myGLCD.setFont(hallfetica_normal);
   myGLCD.print("Humidity", 235,94);
   
    myGLCD.setColor(255, 0, 255);
   myGLCD.setFont(hallfetica_normal);
   myGLCD.print("o", 180,20);
   
   
   myGLCD.setColor(255, 0, 255);
   myGLCD.setFont(hallfetica_normal);
   myGLCD.print("C", 195,30);
   }
  
  void loop()
{
 delay(2000);  //задержка между считыванием датчика в миллисекундах
  
  int h = dht.readHumidity(); // чтение датчика на пине 2
 int t = dht.readTemperature();    // чтение датчика на пине 2
  
 //float h = dht.readHumidity(); // чтение датчика на пине 2
// float t = dht.readTemperature();    // чтение датчика на пине 2
 
 if (isnan(h) || isnan(t))   //если что-то не удалось считать, выводится сообщение
 {
 Serial.println(F("Failed to read from DHT sensor!"));
 return;
  }

  Serial.print(F("Humidity: "));  //выводим данные на комп (смотрим монитор порта)
  Serial.print(h);
  Serial.print(F("%  Temperature: "));
  Serial.println(t);
 
 {
   myGLCD.setColor(255, 0, 255);  //выводим данные на дисплей
   myGLCD.setFont(Various_Symbols_16x32);
  myGLCD.print(h, 235,141);

   }
   {
   myGLCD.setColor(255, 0, 255);
   myGLCD.setFont(GroteskBold16x32);
  myGLCD.print(t,235,50);
   }
  
      
   }

   
       
       
  

попробуйте строка 132

  myGLCD.print(String (h), 235,141);

Спасибо большое! Все получилось.

Сейчас буду подключать часы и начинать для них скетч.

А библиотеку UTFT и шрифты откуда скачали?

Если Вы читали всю тему, в начале была ссылка, откуда я взял эту метеостанцию. Автор выложил и скетч, в котором не было и половины нужного, но шрифты я взял оттуда. Библиотеку UTFT я скачивал с https://github.com/

На гитхабе много ссылок, но наиболее свежая библиотека (что я находил) была тут