Помогите с созданием часов на светодиодных индикаторах
- Войдите на сайт для отправки комментариев
Чт, 03/07/2014 - 22:29
Здравствуйте, помогите пожалуйста написать код для моего проекта.
Мне нужно сделать шести разрядные часы (чч:мм:сс) на светодиодных индикаторах.
У меня есть модуль часов реального времени, индикаторы и сдвиговые регистры 74hc595.
Нужно что бы время которое идёт в модуле часов выводилось с помощью сдвиговых регистров на индикаторы.
а чем помочь то? код за Вас написать?
а чем помочь то? код за Вас написать?
Дадада и еще мне ключи от квартиры с деньгами.
У тебя телефон не отвечает.
У меня нет телефона, я бедно живу...
а чем помочь то? код за Вас написать?
Если мне кто нибудь код напишет, буду оочень благодарен, а вообще так как я в программировании полный ноль, я просто не могу понять как из модуля часов вытащить информацию и заставить светиться нужные цифры на индикаторах
Начните со схемы:
потом опеределите все цифры в массив
byte num[10] = {B00111111, B00000110, .... }; // 0, 1а потом уже работать с часами ....
DS = MOSI
SH_CP = SCK
ST_SP = "синхронизация кадров" - после отправки всех циферок
Помогите с скетчем. Есть Ардуино Уно, часы реального времени DS3231 по I2C и 6 семисегментных индикаторов с общим анодом. Индикаторы подключены по SPI через каскад сдвиговых регистров 74HC595. Часы настроил, время выводится через монитор последовательного порта. На индикаторы тоже могу выводить любые цифры, а вот как поженить эти два скетча знаний не хватает, да и гугл предлагает с отдельно выведенными каналами общих анодов. У меня плата уже спаяна с общей плюсовой шиной для всех разрядов и всех регистров.
Скетч для индикаторов
const byte latchPin=6;//st const byte clockPin=7;//sh const byte dataPin=5;//ds //задаем бинарный код для каждой цифры byte number[] = {0b10001000, 0b10111011, 0b00011100, 0b00011001, 0b00101011, 0b01001001, 0b01001000, 0b10011011, 0b00001000, 0b00001001}; void setup() { pinMode(latchPin, OUTPUT); pinMode(clockPin, OUTPUT); pinMode(dataPin, OUTPUT); } void loop() { digitalWrite(latchPin,LOW); shiftOut(dataPin, clockPin, LSBFIRST, number[6]);// выводим на индикатор цифру 6 и т.д. shiftOut(dataPin, clockPin, LSBFIRST, number[5]); shiftOut(dataPin, clockPin, LSBFIRST, number[4]); shiftOut(dataPin, clockPin, LSBFIRST, number[3]); shiftOut(dataPin, clockPin, LSBFIRST, number[2]); shiftOut(dataPin, clockPin, LSBFIRST, number[1]); digitalWrite(latchPin,HIGH); delay(1000); digitalWrite(latchPin,LOW); shiftOut(dataPin, clockPin, LSBFIRST, number[0]); shiftOut(dataPin, clockPin, LSBFIRST, number[1]); shiftOut(dataPin, clockPin, LSBFIRST, number[2]); shiftOut(dataPin, clockPin, LSBFIRST, number[3]); digitalWrite(latchPin,HIGH); delay(1000); }Для часов нашел в нете такой
#include "Wire.h" #define DS3231_I2C_ADDRESS 0x68 // Convert normal decimal numbers to binary coded decimal byte decToBcd(byte val) { return( (val/10*16) + (val%10) ); } // Convert binary coded decimal to normal decimal numbers byte bcdToDec(byte val) { return( (val/16*10) + (val%16) ); } void setup() { Wire.begin(); Serial.begin(9600); // set the initial time here: // DS3231 seconds, minutes, hours, day, date, month, year //setDS3231time(30,04,00,4,11,06,15); } void setDS3231time(byte second, byte minute, byte hour, byte dayOfWeek, byte dayOfMonth, byte month, byte year) { // sets time and date data to DS3231 Wire.beginTransmission(DS3231_I2C_ADDRESS); Wire.write(0); // set next input to start at the seconds register Wire.write(decToBcd(second)); // set seconds Wire.write(decToBcd(minute)); // set minutes Wire.write(decToBcd(hour)); // set hours Wire.write(decToBcd(dayOfWeek)); // set day of week (1=Sunday, 7=Saturday) Wire.write(decToBcd(dayOfMonth)); // set date (1 to 31) Wire.write(decToBcd(month)); // set month Wire.write(decToBcd(year)); // set year (0 to 99) Wire.endTransmission(); } void readDS3231time(byte *second, byte *minute, byte *hour, byte *dayOfWeek, byte *dayOfMonth, byte *month, byte *year) { Wire.beginTransmission(DS3231_I2C_ADDRESS); Wire.write(0); // set DS3231 register pointer to 00h Wire.endTransmission(); Wire.requestFrom(DS3231_I2C_ADDRESS, 7); // request seven bytes of data from DS3231 starting from register 00h *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 displayTime() { byte second, minute, hour, dayOfWeek, dayOfMonth, month, year; // retrieve data from DS3231 readDS3231time(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year); // send it to the serial monitor Serial.print(hour, DEC); // convert the byte variable to a decimal number when displayed Serial.print(":"); if (minute<10) { Serial.print("0"); } Serial.print(minute, DEC); Serial.print(":"); if (second<10) { Serial.print("0"); } Serial.print(second, DEC); Serial.print(" "); Serial.print(dayOfMonth, DEC); Serial.print("/"); Serial.print(month, DEC); Serial.print("/"); Serial.print(year, DEC); Serial.print(" "); switch(dayOfWeek){ case 1: Serial.println("Luni"); break; case 2: Serial.println("Marti"); break; case 3: Serial.println("Miercuri"); break; case 4: Serial.println("Joi"); break; case 5: Serial.println("Vineri"); break; case 6: Serial.println("Sambata"); break; case 7: Serial.println("Duminica"); break; } } void loop() { displayTime(); // display the real-time clock data on the Serial Monitor, delay(1000); // every second }Но этот выводит данные только на монитор последовательного порта, не зря там же Serial print.
Так понимаю что для выведения на индикаторы нужно присвоить значениям, считанных с DS3231, -> byte number
то есть что-то типа
if (hour = 1)
hour=number [0],[1]
потом считываем с модуля RTC
serial read часы, минуты, секунды.
и выводим на индикатор
shiftOut(dataPin, clockPin, LSBFIRST, hour,minute,second);
на фото скетч под индикаторы с кучей shiftOut-ов и delay в секунду
Здравствуйте, помогите пожалуйста написать код для моего проекта.
Мне нужно сделать шести разрядные часы (чч:мм:сс) на светодиодных индикаторах.
Если же Вы хотите научиться что-то делать на Ардуино, научитесь для начала хотя бы немного программировать.
Если Вам нужны часы, дешевле будет их купить. Готовые.
Если же Вы хотите научиться что-то делать на Ардуино, научитесь для начала хотя бы немного программировать.
Золотые слова. Орешек знаний тверд, но все же мы не привыкли отступать..... Читай интернет, пытайся понять, пробовай сделать. Вот в чем интерес. Если не интересно, то действительно - купи готовые. Я купил. Такое говно... За месяц на несколько минут уходят (это я про какой-то конструктор). А вот часы на основе модуля DS32...и что-то там такое за месяц всего на 1 секунду ушли (проверяю по интернету, типа атомные часы с секундами), да еще и температуру показывают.
разбираю потихоньку код но непонятка not declared in this scope постоянно вылезает.
#include "Wire.h" #define DS3231_I2C_ADDRESS 0x68 // Convert normal decimal numbers to binary coded decimal byte decToBcd(byte val) { return( (val/10*16) + (val%10) ); } // Convert binary coded decimal to normal decimal numbers byte bcdToDec(byte val) { return( (val/16*10) + (val%16) ); } const byte latchPin=6;//st const byte clockPin=7;//sh const byte dataPin=5;//ds // binary code for shift register & 7segment indicator byte number[] = {0b10001000,0b10111011, 0b00011100, 0b00011001, 0b00101011, 0b01001001, 0b01001000, 0b10011011, 0b00001000, 0b00001001}; void setup() { pinMode(latchPin, OUTPUT); pinMode(clockPin, OUTPUT); pinMode(dataPin, OUTPUT); Wire.begin(); Serial.begin(9600); } void readDS3231time(){ byte (*second, *minute, *hour); } { Wire.requestFrom(DS3231_I2C_ADDRESS, 7); // request seven bytes of data from DS3231 starting from register 00h *second = bcdToDec(Wire.read() & 0x7f); *minute = bcdToDec(Wire.read()); *hour = bcdToDec(Wire.read() & 0x3f); } //Присваиваем значение для первой цифры часов { if (hour<10){ byte h1[] = number [0]; } else if (10<=hour<20){ byte h1[] = number [1]; } else if (hour=>20){ byte h1[] = number [2]; } void setup() { readDS3231time(&second, &minute, &hour); } void loop() { displayTime(); digitalWrite(latchPin,LOW); shiftOut(dataPin, clockPin, LSBFIRST, s2); shiftOut(dataPin, clockPin, LSBFIRST, s1); shiftOut(dataPin, clockPin, LSBFIRST, m2); shiftOut(dataPin, clockPin, LSBFIRST, m1); shiftOut(dataPin, clockPin, LSBFIRST, h2); shiftOut(dataPin, clockPin, LSBFIRST, h1); digitalWrite(latchPin,HIGH); delay(500); }Даже для h1 которого задекларировал.
Я вот так делал.
Индикатор на MAX7219, либа LedControl
Опять 25 Ж:(
#include "Wire.h" #include <DS3231.h> #define DS3231_I2C_ADDRESS 0x68 // Convert normal decimal numbers to binary coded decimal byte decToBcd(byte val) { return( (val/10*16) + (val%10) ); } // Convert binary coded decimal to normal decimal numbers byte bcdToDec(byte val) { return( (val/16*10) + (val%16) ); } const byte latchPin=6;//st const byte clockPin=7;//sh const byte dataPin=5;//ds // binary code for shift register & 7segment indicator byte number[] = {0b10001000,0b10111011, 0b00011100, 0b00011001, 0b00101011, 0b01001001, 0b01001000, 0b10011011, 0b00001000, 0b00001001}; void setup() { pinMode(latchPin, OUTPUT); pinMode(clockPin, OUTPUT); pinMode(dataPin, OUTPUT); Wire.begin(); Serial.begin(9600); } void loop() { { Wire.requestFrom(DS3231_I2C_ADDRESS, 7); { *hour = bcdToDec(Wire.read() & 0x3f); *second = bcdToDec(Wire.read() & 0x7f); *minute = bcdToDec(Wire.read()); *hour = bcdToDec(Wire.read() & 0x3f); byte second, minute, hour; readDS3231time(&second, &minute, &hour); } //Присваеваем значение для переменных int h1 = hour / 10; int h2 = hour % 10; int m1 = minute() / 10; int m2 = minute() % 10; int s1 = second() / 10; int s2 = second() % 10; } digitalWrite(latchPin,LOW); shiftOut(dataPin, clockPin, LSBFIRST, number[s2]); shiftOut(dataPin, clockPin, LSBFIRST, number[s1]); shiftOut(dataPin, clockPin, LSBFIRST, number[m2]); shiftOut(dataPin, clockPin, LSBFIRST, number[m1]); shiftOut(dataPin, clockPin, LSBFIRST, number[h2]); shiftOut(dataPin, clockPin, LSBFIRST, number[h1]); digitalWrite(latchPin,HIGH); delay(500); }тот же самый
Вы описали second, minute, hour; в строке 41, а исользуете в строке 36. Нет, уж дорогой, "утром стулья .." ой ... сначала описываем, а потом используем. Перенесите строку 41 в начало функции loop и будет Вам счастье со строками ошибок 4,5,6.
Едем дальше. minute, hour; описаны внутри фигурных скобок (строки 35 и 43), значит и использовать их можно только внутри. Вы же пытаетесь использовать их после закрывающей скобки в строках 45-50. Уберите нафиг фигурные скобки (удалите строки 35 и 43) и будет Вам счастье со строками ошибок 8-10
Строки сообщений 11-16 некритичны, но они предупреждают, что Вы на кой-то чёрт описали переменные h1, h2, m1, m2, s1, s2 в строках (45-50) и после этого ни разу ими не воспользовались. Зачем было описывать? А всё потому, что Вы описали их внутри фигурных скобок (строки 33 и 51) а использовать пытаетесь после закрытия скобки в строках 54-59. Рецепт - убираем нахрен строки 33 и 51 и строки диагностики с 11 по 22 исчезают в тумане.
Осталась одна строка ошибок - 7ая. Она говорит, что в библиотеке нет такой функции (а если и есть, то она метод и в лоб не вызывается). Тут я не в курсе. т.к. у меня нет этой библиотеки. Смотрите её описание внимательно.
Спасибо за ликбез. Почти разобрался.
#include "Wire.h" #include <DS3231.h> #define DS3231_I2C_ADDRESS 0x68 // Convert normal decimal numbers to binary coded decimal byte decToBcd(byte val) { return( (val/10*16) + (val%10) ); } // Convert binary coded decimal to normal decimal numbers byte bcdToDec(byte val) { return( (val/16*10) + (val%16) ); } const byte latchPin=6;//st const byte clockPin=7;//sh const byte dataPin=5;//ds // binary code for shift register & 7segment indicator byte number[] = {0b10001000,0b10111011, 0b00011100, 0b00011001, 0b00101011, 0b01001001, 0b01001000, 0b10011011, 0b00001000, 0b00001001}; void setup() { pinMode(latchPin, OUTPUT); pinMode(clockPin, OUTPUT); pinMode(dataPin, OUTPUT); Wire.begin(); Serial.begin(9600); } void loop() { Serial.read; DS3231 time(&second, &minute, &hour); byte second, minute, hour; Wire.requestFrom(DS3231_I2C_ADDRESS, 7); second = bcdToDec(Wire.read()); minute = bcdToDec(Wire.read()); hour = bcdToDec(Wire.read()); //Присваеваем значение для переменных int h1 = hour() / 10; int h2 = hour() % 10; int m1 = minute() / 10; int m2 = minute() % 10; int s1 = second() / 10; int s2 = second() % 10; digitalWrite(latchPin,LOW); shiftOut(dataPin, clockPin, LSBFIRST, number[s2]); shiftOut(dataPin, clockPin, LSBFIRST, number[s1]); shiftOut(dataPin, clockPin, LSBFIRST, number[m2]); shiftOut(dataPin, clockPin, LSBFIRST, number[m1]); shiftOut(dataPin, clockPin, LSBFIRST, number[h2]); shiftOut(dataPin, clockPin, LSBFIRST, number[h1]); digitalWrite(latchPin,HIGH); delay(500); }Ошибок стало меньше
Ошибок стало меньше
Останется только ошибка 4, но я уже говорил, что Вы неправильно используете функцию библиотеки. У меня её (библиотеки) нет, поэтому я не могу посмотреть что там и как, и здесь помочь не могу. Смотрите описание библиотеки.
32-я строка:
Serial.read;
Кто-то пытается прочитать что-то из Serial, но забыл указать переменную, в которую читать и скобки. Это не паскаль, скобки надо в любом случае ставить.
Библиотека DS3231.h
и DS3231.cpp
Ну, вот Вы код скопировали, а посмотреть в него? Смотрели? В строке 80 описан конструктор
Видите, что у него ДВА параметра data_pin и sclk_pin? Что они означают, я не знаю - описания нет, но их два и это факт! Так и передавйте ему два параметра, а Вы что делаете? В строке 33 Вы вызываете его с тремя параметрами, причём других типов. Вызывайте правильно - передавайте два параметра типа "беззнаковый байт" и, по крайней мере, компилятор от Вас отстанет.
Остаётся загадкой, зачем либе надо знать, на каких пинах TWI висит? Оно там программно эмулируется что ли?
32-я строка:
Serial.read;
Кто-то пытается прочитать что-то из Serial, но забыл указать переменную, в которую читать и скобки
По идее Serial.read и Wire.requestFrom выполняют одно и то же действие. Но если убрать Serial.read и DS3231 time(&second, &minute, &hour); то int h1 = hour() / 10;
error: 'hour' cannot be used as a function
У меня такое впечатление что автор использует библиотеку "Time" http://playground.arduino.cc/code/time
Но я не вижу ее инициализации.
Вставьте в самом начале скетча строку:
Ну и конечно, это библиотека должна быть в папке "libraries".
Вставил библиотеку "Time"
#include "Wire.h" #include <Time.h> #include <DS3231.h> #define DS3231_I2C_ADDRESS 0x68 // Convert normal decimal numbers to binary coded decimal byte decToBcd(byte val) { return( (val/10*16) + (val%10) ); } // Convert binary coded decimal to normal decimal numbers byte bcdToDec(byte val) { return( (val/16*10) + (val%16) ); } const byte latchPin=6;//st const byte clockPin=7;//sh const byte dataPin=5;//ds // binary code for shift register & 7segment indicator byte number[] = {0b10001000,0b10111011, 0b00011100, 0b00011001, 0b00101011, 0b01001001, 0b01001000, 0b10011011, 0b00001000, 0b00001001}; void setup() { pinMode(latchPin, OUTPUT); pinMode(clockPin, OUTPUT); pinMode(dataPin, OUTPUT); Wire.begin(); Serial.begin(9600); } void loop(){ DS3231time (&second, &minute, &hour); byte (*second, *minute, *hour); Wire.requestFrom(DS3231_I2C_ADDRESS, 7); *second = bcdToDec(Wire.read()); *minute = bcdToDec(Wire.read()); *hour = bcdToDec(Wire.read()); //Присваеваем значение для переменных int h1 = hour() / 10; int h2 = hour() % 10; int m1 = minute() / 10; int m2 = minute() % 10; int s1 = second() / 10; int s2 = second() % 10; digitalWrite(latchPin,LOW); shiftOut(dataPin, clockPin, LSBFIRST, number[s2]); shiftOut(dataPin, clockPin, LSBFIRST, number[s1]); shiftOut(dataPin, clockPin, LSBFIRST, number[m2]); shiftOut(dataPin, clockPin, LSBFIRST, number[m1]); shiftOut(dataPin, clockPin, LSBFIRST, number[h2]); shiftOut(dataPin, clockPin, LSBFIRST, number[h1]); digitalWrite(latchPin,HIGH); delay(500); }Возникают ошибки
В строках 32 и 33 полное отсутствие логики.
Нету запуска библиотеки
Нужна переменная для хранения считанного времени:
Время брать не с библиотеки Time, а с этой. Т.е. вместо функции "Hour()" должно быть "t.hour"
В общем, как в этом примере:
В строках 32 и 33 полное отсутствие логики.
Нету запуска библиотеки
гыыыыы... (достал платочек и вытираю слезы умиления) правда нет запуска библиотеки? тоесть вы серьезно советуете дописать строчку инициализации часов и получить еще одну ошибку при компиляции?
там самой библиотеки нет! о чем оно и сообщает...
ее физически нет в папке библиотек
Та хочется верить раз чел выложил код библиотеки, то она у него есть и находится в нужном месте. Глориус, запусти пример из библиотеки и поделить результатом.
Update: Короче, вот так этот код должен выглядеть (у меня на 1.0.6 ошибок не дает):
#include <DS3231.h> // Init the DS3231 using the hardware interface DS3231 rtc(SDA, SCL); // Init a Time-data structure Time t; const byte latchPin=6;//st const byte clockPin=7;//sh const byte dataPin=5;//ds // binary code for shift register & 7segment indicator byte number[] = {0b10001000,0b10111011, 0b00011100, 0b00011001, 0b00101011, 0b01001001, 0b01001000, 0b10011011, 0b00001000, 0b00001001}; void setup() { // Initialize the rtc object rtc.begin(); pinMode(latchPin, OUTPUT); pinMode(clockPin, OUTPUT); pinMode(dataPin, OUTPUT); } void loop(){ // Get data from the DS3231 t = rtc.getTime(); //Присваеваем значение для переменных int h1 = t.hour / 10; int h2 = t.hour % 10; int m1 = t.min / 10; int m2 = t.min % 10; int s1 = t.sec / 10; int s2 = t.sec % 10; digitalWrite(latchPin,LOW); shiftOut(dataPin, clockPin, LSBFIRST, number[s2]); shiftOut(dataPin, clockPin, LSBFIRST, number[s1]); shiftOut(dataPin, clockPin, LSBFIRST, number[m2]); shiftOut(dataPin, clockPin, LSBFIRST, number[m1]); shiftOut(dataPin, clockPin, LSBFIRST, number[h2]); shiftOut(dataPin, clockPin, LSBFIRST, number[h1]); digitalWrite(latchPin,HIGH); delay(500); }Запустил код компиляция зависла на половине. Такая же история с скетчами из папки Examples библиотеки.
Ну, это уже не вопрос кода, тут нужно пошаманить:
* перезагрузить комп
* переустановить ардуино
* установить другую ардуино (1.0.6)
* установить совсем старую ардуино (0022)
* стучать в бубен наяливая круги вокруг ардуино...и тд
C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp: In member function 'void DS3231::setTime(uint8_t, uint8_t, uint8_t)': C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp:85:14: warning: comparison is always true due to limited range of data type [-Wtype-limits] if (((hour>=0) && (hour<24)) && ((min>=0) && (min<60)) && ((sec>=0) && (sec<60))) ^ C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp:85:41: warning: comparison is always true due to limited range of data type [-Wtype-limits] if (((hour>=0) && (hour<24)) && ((min>=0) && (min<60)) && ((sec>=0) && (sec<60))) ^ C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp:85:67: warning: comparison is always true due to limited range of data type [-Wtype-limits] if (((hour>=0) && (hour<24)) && ((min>=0) && (min<60)) && ((sec>=0) && (sec<60))) ^ C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp: In member function 'char* DS3231::getDOWStr(uint8_t)': C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp:275:17: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] char *output = "xxxxxxxxxx"; ^ C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp:276:99: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] char *daysLong[] = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"}; ^ C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp:276:99: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp:276:99: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp:276:99: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp:276:99: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp:276:99: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp:276:99: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp:277:70: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] char *daysShort[] = {"Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"}; ^ C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp:277:70: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp:277:70: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp:277:70: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp:277:70: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp:277:70: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp:277:70: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp: In member function 'char* DS3231::getMonthStr(uint8_t)': C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp:289:16: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] char *output= "xxxxxxxxx"; ^ C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp:290:144: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] char *monthLong[] = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"}; ^ C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp:290:144: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp:290:144: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp:290:144: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp:290:144: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp:290:144: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp:290:144: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp:290:144: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp:290:144: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp:290:144: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp:290:144: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp:290:144: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp:291:106: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] char *monthShort[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}; ^ C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp:291:106: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp:291:106: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp:291:106: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp:291:106: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp:291:106: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp:291:106: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp:291:106: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp:291:106: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp:291:106: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp:291:106: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp:291:106: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp: In member function 'uint8_t DS3231::_readByte()': C:\Users\Q\Documents\Arduino\libraries\DS3231\DS3231.cpp:407:28: warning: suggest parentheses around '-' inside '<<' [-Wparentheses] value |= (currentBit << 7-i);Но скетч скомпилировался :)
Ты с типами определиь уже, и ошибок не будет.