<>
Суббота, 04.05.2024, 18:59
Суд со страховой компанией (ОСАГО)
Главная Регистрация Вход
Приветствую Вас, Гость · RSS
Меню сайта
Форма входа
Поиск
 
Главная » 2016 » Февраль » 22 » Метеостанция Arduino
22:06
Метеостанция Arduino
Очередная метеостанция на Arduino. Функции отображения времени, дня недели, даты, температуры и влажности. Добавлен значок градусов.
Просмотров: 461 | Добавил: Steelth | Теги: Метеостанция на Arduino, код arduino | Рейтинг: 0.0/0
Всего комментариев: 2
1 Steelth  
0
Код Arduino станции:

Код
#include <Wire.h>
#include "DHT.h"
#include <LiquidCrystal.h>
#define DHTPIN 2 // указание пина подключения data от датчика dht11
#define DHTTYPE DHT11 //указываем тип датчика DHT 11
#define DS1307_I2C_ADDRESS 0x68
LiquidCrystal lcd(4, 5, 6, 7, 8, 9);
DHT dht(DHTPIN, DHTTYPE);

///// часы ..
byte decToBcd(byte val){
   return ( (val/10*16) + (val%10) );
}

byte bcdToDec(byte val){
   return ( (val/16*10) + (val%16) );
}
byte degree[8] = // кодируем символ градуса
{
   B00111,
   B00101,
   B00111,
   B00000,
   B00000,
   B00000,
   B00000,
};

void setDateDs1307(byte second,  // 0-59
   byte minute,  // 0-59
   byte hour,  // 1-23
   byte dayOfWeek,  // 1-7
   byte dayOfMonth,  // 1-28/29/30/31
   byte month,  // 1-12
   byte year)  // 0-99
{
   Wire.beginTransmission(DS1307_I2C_ADDRESS);
   Wire.write(0);
   Wire.write(decToBcd(second));   
   Wire.write(decToBcd(minute));
   Wire.write(decToBcd(hour));   
   Wire.write(decToBcd(dayOfWeek));
   Wire.write(decToBcd(dayOfMonth));
   Wire.write(decToBcd(month));
   Wire.write(decToBcd(year));
   Wire.endTransmission();
}

void getDateDs1307(byte *second,
   byte *minute,
   byte *hour,
   byte *dayOfWeek,
   byte *dayOfMonth,
   byte *month,
   byte *year)
{

   Wire.beginTransmission(DS1307_I2C_ADDRESS);
   Wire.write(0);
   Wire.endTransmission();

   Wire.requestFrom(DS1307_I2C_ADDRESS, 7);

   *second  = bcdToDec(Wire.read() & 0x7f);
   *minute  = bcdToDec(Wire.read());
   *hour  = bcdToDec(Wire.read() & 0x3f);   
   *dayOfWeek  = bcdToDec(Wire.read());
   *dayOfMonth = bcdToDec(Wire.read());
   *month  = bcdToDec(Wire.read());
   *year  = bcdToDec(Wire.read());
}
    

void setup()
{
   Wire.begin();
   lcd.begin(16, 2);
   lcd.createChar(1, degree);
   dht.begin();

//установка часов: установить, залить, снять выставив 2/?, залить.
   // byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
   //second = 00;
// minute = 21;
// hour = 21;
// dayOfWeek = 0; // день недели
// dayOfMonth = 22; // день
   //month = 2;
   // year = 16;

   //setDateDs1307(second, minute, hour, dayOfWeek, dayOfMonth, month, year);
}

void loop()

{  byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
   char week[8][10] = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};
   int h = dht.readHumidity();
   int t = dht.readTemperature();
   getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year);

   //lcd.clear();
   lcd.setCursor(0, 0);
   if (hour < 10) lcd.print("0");   
   lcd.print(hour);   
   lcd.print(":");
   if (minute < 10) lcd.print("0");   
   lcd.print(minute);
lcd.print(" ");
//if (second < 10) lcd.print("0");
//lcd.print(second);
   lcd.setCursor(7, 0);
   lcd.print(week[dayOfWeek]);
   lcd.print(" ");   
   lcd.setCursor(0, 1);
   if (dayOfMonth < 10) lcd.print("0");
   lcd.print(dayOfMonth);
   lcd.print("/");
   if (month < 10) lcd.print("0");
   lcd.print(month);
   //lcd.print("/");
   //if (year < 10) lcd.print("0");
   //lcd.print(year);
   //lcd.print("  ");
   lcd.setCursor(12,1);
   lcd.print(h);
   lcd.print("%");
   lcd.setCursor(7,1);
   lcd.print(t);
   lcd.print("\1C");
   }
    

////// конец

2 Steelth  
0
Схема подключения:

Имя *:
Email *:
Код *:
Copyright MyCorp © 2024
Календарь
«  Февраль 2016  »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
29
Архив записей
Наш опрос
Помог ли Вам материал размещенный на сайте?
Всего ответов: 43
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0
    Создать бесплатный сайт с uCoz