|
|
|
|
Главная » 2016 » Февраль » 22 » Метеостанция Arduino
22:06 Метеостанция Arduino |
Очередная метеостанция на Arduino. Функции отображения времени, дня недели, даты, температуры и влажности. Добавлен значок градусов.
|
Просмотров: 461 |
Добавил: Steelth
| Теги: Метеостанция на Arduino, код arduino
| Рейтинг: 0.0/0 |
Всего комментариев: 2 | |
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"); }
////// конец
|
|
|
|
|
|
Copyright MyCorp © 2024 |
|
|
|
Наш опрос |
|
|
|
|
|
Статистика |
|
|
Онлайн всего: 1 Гостей: 1 Пользователей: 0 |
|
|