Skip to content
Avaleht » Ülesanne «Ilmajaam»

Ülesanne “Ilmajaam”

Погодная станция

Описание работы

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

Применение в жизни

Может использоваться в следующих примерах:

  • Оптимизация посадок и урожая: Погодные станции помогают фермерам отслеживать параметры, такие как температура, влажность, количество осадков и скорость ветра. Это позволяет оптимально планировать посадку, полив и сбор урожая.
  • Управление возобновляемыми источниками энергии: Погодные станции играют ключевую роль в мониторинге и управлении солнечными и ветряными электростанциями, помогая прогнозировать производство энергии и оптимизировать работу систем
  • Система раннего предупреждения о погодных явлениях: Погодные станции помогают городам и муниципалитетам предсказывать и готовиться к экстремальным погодным условиям, таким как ураганы, наводнения и снегопады.
  • Предотвращение теплового удара и обморожений: Предоставление актуальных данных о температуре и влажности помогает предупреждать население о рисках теплового удара в жаркое время года и обморожений зимой.
Список компонентов
  • Плата “Arduino UNO”
  • Макет
  • 1 температурный датчик
  • 19 провода
  • 2 резистора
  • 1 LCD экран

*Код*

#include <LiquidCrystal.h>
#include <Wire.h>

// Инициализация LCD
LiquidCrystal lcdDisplay(11, 12, 2, 3, 4, 5);

// Создание пользовательских символов
byte iconDrive[8] = {
    0b00000, 0b01110, 0b10001,
    0b11111, 0b10101, 0b01110,
    0b00000, 0b00000 };
byte iconFood[8] = {
    0b00110, 0b00100, 0b11111,
    0b10001, 0b11111, 0b11111,
    0b11111, 0b11111 };
byte iconTaxi[8] = {
    0b11100, 0b01010, 0b01101,
    0b01111, 0b00101, 0b10110,
    0b01010, 0b10110 };
byte iconWheels[8] = {
    0b00110, 0b01001, 0b01001,
    0b00110, 0b01100, 0b10010,
    0b10010, 0b01100 };
byte iconWeather[8] = {
    0b00011, 0b00110, 0b01100,
    0b11111, 0b11111, 0b00011,
    0b00110, 0b01100 };
char* adsMessages[] = {
  "TTHK      ", "McDonalds     ", 
  "KFC      ", "Coca-Cola  "
};
int sensorPin = A0;
int currentAdIndex = 0; 

void setup() {
  Serial.begin(9600);
  Wire.begin();
  lcdDisplay.begin(16, 2); // 16 столбцов x 2 строки

  // Загрузка пользовательских символов в LCD
  lcdDisplay.createChar(0, iconDrive);
  lcdDisplay.createChar(1, iconFood);
  lcdDisplay.createChar(2, iconTaxi);
  lcdDisplay.createChar(3, iconWheels);
  lcdDisplay.createChar(4, iconWeather);
}

void loop() {
  // Получение текущего времени
  unsigned long currentMillis = millis();
  unsigned long fiveSeconds = currentMillis / 5000;

  char upperRow[20];
  sprintf(upperRow, "%02d/%02d/%02d %02d:%02d", 
          (fiveSeconds % 86400L) / 3600, 
          (fiveSeconds % 3600) / 60, 
          (fiveSeconds % 60), 
          (fiveSeconds / 86400L), 
          (fiveSeconds % 86400L) / 3600);

  lcdDisplay.setCursor(0, 0);
  lcdDisplay.print(upperRow);

  // Измерение температуры и отображение сообщения или рекламы
  if (fiveSeconds % 2 == 0) {
    int rawTemperatureValue = analogRead(sensorPin);
    float sensorVoltage = rawTemperatureValue * (5.0 / 1023.0);
    float temperature = (sensorVoltage - 0.5) * 100.0;

    char temperatureMessage[20];
    if (temperature < 0) {
      strcpy(temperatureMessage, "Very Cold    ");
    } else if (temperature < 10) {
      strcpy(temperatureMessage, "Cold         ");
    } else if (temperature < 20) {
      strcpy(temperatureMessage, "Mild         ");
    } else if (temperature < 30) {
      strcpy(temperatureMessage, "Warm         ");
    } else if (temperature < 35) {
      strcpy(temperatureMessage, "Hot          ");
    } else {
      strcpy(temperatureMessage, "Very Hot     ");
    }

    lcdDisplay.setCursor(0, 1);
    lcdDisplay.print(temperatureMessage);
    lcdDisplay.setCursor(14, 1);
    lcdDisplay.write(byte(4));  
  } else {
    lcdDisplay.setCursor(0, 1);
    lcdDisplay.print(adsMessages[currentAdIndex % 4]);
    lcdDisplay.setCursor(14, 1);
    lcdDisplay.write(byte(currentAdIndex % 4));  
    currentAdIndex++;
  }

  delay(3000);
}

*Конструкция в Tinkercad*

Отчеты

*Конструкция в реальности*

Видео