最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

非過熱

2023-06-06 10:00 作者:蕪湖男神建勛  | 我要投稿

#include <Rtc_Pcf8563.h>

#include <LiquidCrystal.h>

#include "dht11.h"


Rtc_Pcf8563 rtc; // Define an RTC object

dht11 DHT11;

#define DHT11PIN 2 // Define DHT11 module pin


// LCD1602 pins

const int rs = 8, en = 9, d4 = 4, d5 = 5, d6 = 6, d7 = 7;

LiquidCrystal lcd(rs, en, d4, d5, d6, d7);


byte day, weekday, month, century, year; // Date variables

byte hr, minute, sec; // Time variables

char time_str[16]; // Time string

char date_str[16]; // Date string

char strout[8];

char time_out[16];

int key_in = A0; // Analog button pin

int key_v[4] = {0x2D, 0x13, 0x8, 0x00}; // Predefined key values

int flag = 0; // Clock display state

int flag1 = 0xFF; // Initial button state

int key = 0; // Pressed button

int key1 = 0; // Previous button press

String week[7] = {"Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"};

byte Centigrade[8] = { // Custom character for "C" symbol

? B10000,

? B00110,

? B01001,

? B01000,

? B01000,

? B01001,

? B00110,

? B00000

};


void setup() {

? lcd.begin(16, 2); // Initialize the LCD

? lcd.createChar(0, Centigrade); // Create custom character for "C"

? getClock(); // Read the current time from RTC

}


void loop() {

? readKey();

? if (key != 0) {

? ? switch (key) {

? ? ? case 1: Select(); break; // Select key

? ? ? case 2: Reduce(); break; // Reduce key

? ? ? case 3: Increase(); break; // Increase key

? ? ? case 4: Return(); break; // Confirm key

? ? }

? ? key = 0;

? }


? if (flag == 0)

? ? timeDisplay();

? else if (flag == 1)

? ? tempDisplay();

? else if (flag == 2)

? ? setDisplay();

}


void getClock() {

? rtc.getDateTime();

? sec = rtc.getSecond();

? minute = rtc.getMinute();

? hr = rtc.getHour();

? day = rtc.getDay();

? month = rtc.getMonth();

? year = rtc.getYear();

? weekday = rtc.getWeekday();

}


void setDisplay() {

? lcd.cursor();

? lcd.blink();

? if (flag1 != 0xFF) {

? ? switch (flag1) {

? ? ? case 0:

? ? ? ? lcd.setCursor(10, 0);

? ? ? ? lcd.print(sec / 10);

? ? ? ? lcd.print(sec % 10);

? ? ? ? lcd.setCursor(11, 0);

? ? ? ? break;

? ? ? case 1:

? ? ? ? lcd.setCursor(7, 0);

? ? ? ? lcd.print(minute / 10);

? ? ? ? lcd.print(minute % 10);

? ? ? ? lcd.setCursor(8, 0);

? ? ? ? break;

? ? ? case 2:

? ? ? ? lcd.setCursor(4, 0);

? ? ? ? lcd.print(hr / 10);

? ? ? ? lcd.print(hr % 10);

? ? ? ? lcd.setCursor(5, 0);

? ? ? ? break;

? ? ? case 3:

? ? ? ? lcd.setCursor(12, 1);

? ? ? ? lcd.print(week[weekday - 1]);

? ? ? ? lcd.setCursor(15, 1);

? ? ? ? break;

? ? ? case 4:

? ? ? ? lcd.setCursor(8, 1);

? ? ? ? lcd.print(day / 10);

? ? ? ? lcd.print(day % 10);

? ? ? ? lcd.setCursor(9, 1);

? ? ? ? break;

? ? ? case 5:

? ? ? ? lcd.setCursor(5, 1);

? ? ? ? lcd.print(month / 10);

? ? ? ? lcd.print(month % 10);

? ? ? ? lcd.setCursor(6, 1);

? ? ? ? break;

? ? ? case 6:

? ? ? ? lcd.setCursor(0, 1);

? ? ? ? lcd.print("20");

? ? ? ? lcd.print(year / 10);

? ? ? ? lcd.print(year % 10);

? ? ? ? lcd.setCursor(3, 1);

? ? ? ? break;

? ? }

? }

}


void timeDisplay() {

? lcd.noCursor();

? lcd.noBlink();

? lcd.setCursor(4, 0);

? lcd.print(rtc.formatTime());

? lcd.setCursor(0, 1);

? lcd.print(rtc.formatDate());

? lcd.setCursor(12, 1);

? lcd.print(week[rtc.getWeekday() - 1]);

}


void tempDisplay() {

? DHT11.read(DHT11PIN);

? int temperature = DHT11.temperature;

? int humidity = DHT11.humidity;

? lcd.setCursor(4, 0);

? lcd.print("T=");

? lcd.print(temperature);

? lcd.write(byte(0));

? lcd.print("C");

? lcd.setCursor(4, 1);

? lcd.print("H=");

? lcd.print(humidity);

? lcd.print("%");

}


void readKey() {

? int key_Value = analogRead(key_in) >> 4; // Read the analog button value (high 8 bits)

? if (key_Value != 0x3F) { // No button pressed condition

? ? delay(120);

? ? key_Value = analogRead(key_in) >> 4; // Read again to confirm button press

? ? if (key_Value != 0x3F) {

? ? ? for (int i = 0; i < 4; i++) {

? ? ? ? if (key_Value >= key_v[i] - 1 && key_Value <= key_v[i] + 1) {

? ? ? ? ? key = i + 1; // Button value starts from 1

? ? ? ? }

? ? ? }

? ? }

? ? if (key1 != key) // Prevent multiple button presses

? ? ? key1 = key;

? ? else

? ? ? key = 0;

? }

}


void Select() {

? getClock();

? rtc.setDateTime(day, weekday, month, 0, year, hr, minute, sec);

? if (flag == 1) {

? ? flag = 0;

? } else {

? ? flag = 2;

? ? if (flag1 == 0xFF)

? ? ? flag1 = 0;

? ? else if (flag1 < 6) {

? ? ? flag1 += 1;

? ? ? rtc.setDateTime(day, weekday, month, 0, year, hr, minute, sec);

? ? } else {

? ? ? flag1 = 0;

? ? }

? }

}


void Reduce() {

? if (flag1 != 0xFF) {

? ? switch (flag1) {

? ? ? case 0:

? ? ? ? if (sec == 0)

? ? ? ? ? sec = 59;

? ? ? ? else

? ? ? ? ? sec -= 1;

? ? ? ? break;

? ? ? case 1:

? ? ? ? if (minute == 0)

? ? ? ? ? minute = 59;

? ? ? ? else

? ? ? ? ? minute -= 1;

? ? ? ? break;

? ? ? case 2:

? ? ? ? if (hr == 0)

? ? ? ? ? hr = 23;

? ? ? ? else

? ? ? ? ? hr -= 1;

? ? ? ? break;

? ? ? case 3:

? ? ? ? if (weekday == 1)

? ? ? ? ? weekday = 7;

? ? ? ? else

? ? ? ? ? weekday -= 1;

? ? ? ? break;

? ? ? case 4:

? ? ? ? if (day == 1)

? ? ? ? ? day = 31;

? ? ? ? else

? ? ? ? ? day -= 1;

? ? ? ? break;

? ? ? case 5:

? ? ? ? if (month == 1)

? ? ? ? ? month = 12;

? ? ? ? else

? ? ? ? ? month -= 1;

? ? ? ? break;

? ? ? case 6:

? ? ? ? if (year == 0)

? ? ? ? ? year = 99;

? ? ? ? else

? ? ? ? ? year -= 1;

? ? ? ? break;

? ? }

? ? rtc.setDateTime(day, weekday, month, 0, year, hr, minute, sec);

? }

}


void Increase() {

? if (flag1 != 0xFF) {

? ? switch (flag1) {

? ? ? case 0:

? ? ? ? if (sec == 59)

? ? ? ? ? sec = 0;

? ? ? ? else

? ? ? ? ? sec += 1;

? ? ? ? break;

? ? ? case 1:

? ? ? ? if (minute == 59)

? ? ? ? ? minute = 0;

? ? ? ? else

? ? ? ? ? minute += 1;

? ? ? ? break;

? ? ? case 2:

? ? ? ? if (hr == 23)

? ? ? ? ? hr = 0;

? ? ? ? else

? ? ? ? ? hr += 1;

? ? ? ? break;

? ? ? case 3:

? ? ? ? if (weekday == 7)

? ? ? ? ? weekday = 1;

? ? ? ? else

? ? ? ? ? weekday += 1;

? ? ? ? break;

? ? ? case 4:

? ? ? ? if (day == 31)

? ? ? ? ? day = 1;

? ? ? ? else

? ? ? ? ? day += 1;

? ? ? ? break;

? ? ? case 5:

? ? ? ? if (month == 12)

? ? ? ? ? month = 1;

? ? ? ? else

? ? ? ? ? month += 1;

? ? ? ? break;

? ? ? case 6:

? ? ? ? if (year == 99)

? ? ? ? ? year = 0;

? ? ? ? else

? ? ? ? ? year += 1;

? ? ? ? break;

? ? }

? ? rtc.setDateTime(day, weekday, month, 0, year, hr, minute, sec);

? }

}


void Return() {

? if (flag1 != 0xFF) {

? ? rtc.setDateTime(day, weekday, month, 0, year, hr, minute, sec);

? ? flag1 = 0xFF;

? ? flag = 0;

? } else {

? ? flag = !flag;

? ? lcd.clear();

? ? flag1 = 0xFF;

? }

}


非過熱的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
隆昌县| 巴马| 洛浦县| 江口县| 绿春县| 东兰县| 玉屏| 类乌齐县| 雅江县| 鹤峰县| 郁南县| 会理县| 当阳市| 镇远县| 大宁县| 富平县| 平邑县| 全南县| 海城市| 彝良县| 舟山市| 瓦房店市| 冕宁县| 滨州市| 永定县| 临安市| 清水河县| 饶平县| 樟树市| 伊金霍洛旗| 鄂尔多斯市| 无为县| 徐水县| 衢州市| 恭城| 满洲里市| 鄄城县| 灯塔市| 颍上县| 西贡区| 卢龙县|