DS3231 добавить в код установку времени кнопками
- Войдите на сайт для отправки комментариев
Ср, 12/07/2017 - 14:48
Помогите добавить в код установку времени кнопками,
никак не получается
/* * 128X64 Blue OLED LCD LED Display 0.96" I2C * DS3231 AT24C32 IIC Module * */ #include <OLED_I2C.h> // Подключение библиотеки для дисплея #include <Wire.h> #include <Time.h> // для часов #include <TimeLib.h> #include <Timezone.h> //DST //UA Time Zone (Ukraine, Kiev) TimeChangeRule myDST = {"EDT", Last, Sun, Mar, 3, +60}; //Переход на летнее время TimeChangeRule mySTD = {"EST", Last, Sun, Nov, 4, -60}; //Переход на зимнее время Timezone myTZ(myDST, mySTD); TimeChangeRule *tcr; //pointer to the time change rule, use to get TZ abbrev time_t utc, local; #include <DS1307RTC.h> const int vb=A0; int volt=0; float vbat=0; OLED myOLED(SDA, SCL, 8); extern uint8_t MegaNumbers[]; // Подключение больших шрифтов extern uint8_t SmallFont[]; // Подключение маленьких шрифтов extern uint8_t UkrFont[]; // Подключение укр. шрифтов ///// температура .. float get3231Temp(){ byte tMSB, tLSB; float temp3231; Wire.beginTransmission(0x68); Wire.write(0x11); Wire.endTransmission(); Wire.requestFrom(0x68, 2); if(Wire.available()) { tMSB = Wire.read(); //2's complement int portion tLSB = Wire.read(); //fraction portion temp3231 = (tMSB & B01111111); //do 2's math on Tmsb temp3231 += ( (tLSB >> 6) * 0.25 ); //only care about bits 7 & 8 } else { //oh noes, no data! } return temp3231; } void setup() { myOLED.begin(); Serial.begin(115200); // myTZ.writeRules(100); //write rules to EEPROM address 100 setSyncProvider(RTC.get); // the function to get the time from the RTC if(timeStatus()!= timeSet) Serial.println("Unable to sync with the RTC"); else Serial.println("RTC has set the system time"); } void loop(){ Serial.println(); utc = now(); local = myTZ.toLocal(utc, &tcr); tmElements_t tm; // (RTC.read(tm)) ; //читаем данные из часов myOLED.setBrightness(10); // устанавливаем яркость. от 0 до 255. При 0 свечение в половину яркости. myOLED.setFont(SmallFont); //Ставим маленький шрифт myOLED.setFont(UkrFont); //Используем укроязычный шрифт // myOLED.printNumI(tm.Wday, 16, 0); //Serial.print((weekday())); Serial.print(day()); switch (weekday()) // В этой переменной содержится значение дня недели. Начиная с воскресенья { case 1: myOLED.print("YTLSKZ", CENTER, 0); break; //воскресенье case 2: myOLED.print("GJYTLSKJR", CENTER, 0); break; // Отображение дня недели, тут понедельник case 3: myOLED.print("DSDNJHJR", CENTER, 0); break; //вторник case 4: myOLED.print("CTHTLF", CENTER, 0); break; // итд case 5: myOLED.print("XTNDTH", CENTER, 0); break; case 6: myOLED.print("G'ZNYBWZ", CENTER, 0); break; case 7: myOLED.print("CE<JNF", CENTER, 0); break; } myOLED.printNumI(get3231Temp(), 5, 0);// выводим температуру микросхемы часов myOLED.print("C", 19, 0); myOLED.setFont(MegaNumbers); //Подключаем большие шрифты для часов. if(hour() < 10) { myOLED.print("0", 4, 13); myOLED.printNumI(hour(), 26, 13); } else { myOLED.printNumI(hour(), 4, 13); } myOLED.print("/", 51, 13); // Отображение двоеточия if (minute()<10){ //далее отображаем минуты, myOLED.print("0", 75, 13); //если минут менее 10, то отображаем первым 0 myOLED.printNumI(minute(), 97, 13); } else { myOLED.printNumI(minute(), 75, 13); } myOLED.setFont(SmallFont); if (second()<10){ //далее отображаем секунды, myOLED.print("0", 114, 52); //если секунд менее 10, то отображаем первым 0 myOLED.printNumI(second(), 120, 52); } else { myOLED.printNumI(second(), 114, 52); } myOLED.setFont(SmallFont); if (day()<10){ myOLED.print("0", 40, 57); myOLED.printNumI(day() , 46, 57);// Отображение даты } else { myOLED.printNumI(day() , 40, 57); // Отображение даты } myOLED.print("." , 52, 57);// Отображение даты if (month()<10){ myOLED.print("0" , 56, 57);// Отображение даты myOLED.printNumI(month() , 62, 57);// Отображение даты } else{ myOLED.printNumI(month() , 56, 57);// Отображение даты } myOLED.print("." , 68, 57);// Отображение даты myOLED.printNumI(year(), 73, 57);// Отображение даты myOLED.update(); delay(500); myOLED.setFont(MegaNumbers); // Скрытие двоеточия myOLED.print("-", 51, 12); myOLED.update(); delay(500); myOLED.setFont(SmallFont); volt=analogRead(vb); vbat=volt/1024.0*5; myOLED.print(String(vbat,2), 8, 57);// Отображение напряжения питания myOLED.print("V", 0, 57); }
кнопки тактовые будут использоватся
Код часов нашел здесь https://github.com/lyovav/Oled-clock-DST-
Часы на: DS3231 + OLED 0.96 "I2C + Arduino NANO v.3
среда Arduino IDE 1.0.6
Помогите добавить в код установку времени кнопками,
никак не получается
Так вопрос не задают. Никто не станет разбираться в вашем коде без конкретного вопроса. Пишите, как вставляли кнопки и что именно "не получается", с текстом ошибок компилятора
Кнопки вообще пока не вставлял код
Возможно есть пример кода, установки времени для модуля часов ds3231 тактовыми кнопками?
"Работа с кнопками, в помощь новичку"+написание своего меню по установке времени.
Кнопки вообще пока не вставлял код
Возможно есть пример кода, установки времени для модуля часов ds3231 тактовыми кнопками?
Ну нашли же вы как-то код, который завести пробуете! В чем проблема найти код часов с кнопками? Уж этого добра в интернете тонны!
Кнопки вообще пока не вставлял код
Возможно есть пример кода, установки времени для модуля часов ds3231 тактовыми кнопками?
у arduinolab есть отличный пример - на ютубе поищите