Библиотека RTC
- Войдите на сайт для отправки комментариев
Сб, 26/03/2016 - 10:24
// чтение даты и времени в виде цифр
// time.gettime() без параметра
// результат читается из переменных:
// time.seconds секунды 0-59
// time.minutes минуты 0-59
// time.hours часы 1-12
// time.Hours часы 0-23
// time.midday полдень 0-1 (0-am, 1-pm)
// time.day день месяца 1-31
// time.weekday день недели 0-6 (1-понедельник, 6-суббота, 0-воскресенье)
// time.month месяц 1-12
// time.year год 0-99
из примера.... именно то что мне надо но не получается занать в переменную...
Time t;
t=time.gettime()
ругается на 1 строку... типа тайм не тип
или как привести из String в Int... стандартное int() тоже не срабатывает ..
А теперь, делаем следующее:
1. Выкладываем скетч как положено. Причём не что-то там закомментиированное, а нормальный, полный скетч на который собственно и ругается компилятор.
2. Приводим точную копипасту сообщения компилятора, а не "типа не тип".
3. только после этого ждём помощи, потому что заставлять желающего тебе помочь самому догадываться что там и как контрпродуктивно.
хорошо но скетч огромный...
//wr-d6=269om int pinIRQRX = 13;// Порт информации о приеме int pinIRQTX = 12;// Порт к приему готов int tem = 0; // переменная временных значений int tem1 = 0; // переменная временных значений String temptek;// текущая температура int svet, vent, tens, sushka; int maxtemp = 100; int maxtemptek = 100; int maxvlag = 10; int maxvlagtek = 60; String tempvar; // переменная для связи с другой ардуино int tmptime = 0; //Время для связи //int flag = 0; //SD CARD //SD_SS=CS=10 SD_DI=MOSI=11 SD_DO=MISO=12 SD_SCK=CLK=13 #include <SD.h> #include <SPI.h> #define SD_CS 53 //пин картридера File myFile; uint8_t G = 0x0000; // данные чтения с карты uint8_t B = 0x0000; // данные чтения с карты //clock #include <RTC.h> RTC rtc; String temptime; int sek, mins, hours; // ЛСД Экран #include <Adafruit_GFX.h>// работа с экраном #include <gfxfont.h>// фонт для вывода #include <MCUFRIEND_kbv.h> // драйвер экрана #include <TouchScreen.h> #define LCD_RD A0 //для LCD #define LCD_WR A1 //и для LCD и для сенсора #define LCD_RS A2 //и для LCD и для сенсора #define LCD_CS A3 //для LCD #define YM 7 // для сенсора #define XP 6 // для сенсора MCUFRIEND_kbv tft; TouchScreen ts = TouchScreen(XP, LCD_RS, LCD_WR, YM, 269);// TouchScreen ts = TouchScreen(XP, YP, XM, YM, 269); short TS_MINX = 20; short TS_MINY = 20; short TS_MAXX = 920; short TS_MAXY = 940; int Y, X, X1, Y1; uint16_t temvar = 0x0000; // убрать со временем #define BLACK 0x0000 #define BLUE 0x001A #define RED 0xFBEF #define GREEN 0x07E0 #define CYAN 0x33FF #define MAGENTA 0xF81F #define YELLOW 0xFFE0 #define WHITE 0xFFFF void setup(void) { rtc.begin(RTC_DS1302, 49, 47, 48); // на базе чипа DS1302, вывод RST, вывод CLK, вывод DAT rtc.settime(0, 17, 15, 1, 10, 15, 4); // 0 сек, 17 мин, 15 час, 1, октября, 2015 года, четверг tft.reset(); uint16_t identifier = tft.readID(); tft.begin(identifier); tft.setRotation(1); tft.fillScreen(CYAN); SD.begin(SD_CS); // включаем картриер X = 260; Y = 180; myFile = SD.open("nastr.bmp", FILE_READ); //рисуем кнопку настройки knopki(); Y = 120; myFile = SD.open("ventoff.bmp", FILE_READ); //рисуем кнопку вентиляция knopki(); Y = 60; myFile = SD.open("svetoff.bmp", FILE_READ); //рисуем кнопку свет knopki(); Y = 0; myFile = SD.open("clockoff.bmp", FILE_READ); //рисуем кнопку часы knopki(); X = 0; Y = 180; myFile = SD.open("rezerv.bmp", FILE_READ); //рисуем кнопку rezerv knopki(); Y = 120; myFile = SD.open("sushoff.bmp", FILE_READ); //рисуем кнопку сушка knopki(); Y = 60; myFile = SD.open("nagroff.bmp", FILE_READ); //рисуем кнопку нагрев knopki(); Y = 0; myFile = SD.open("temp.bmp", FILE_READ); //рисуем кнопку часы knopki(); tem = 3; risuem(); // Текст главной pinMode(pinIRQTX, OUTPUT); //порт сигнала передачи pinMode(pinIRQRX, INPUT); // Сигнал о передаче Serial.begin(9600); } void loop(void) { timeobr(); sensor(); if ((X < 60) && (Y < 60) && (X != 0) && (Y != 0)) { // Нажатие кнопки температура tempsetup(); } if ((X < 320) && (Y < 119) && (X > 260) && (Y > 60)) { // Нажатие кнопки СВЕТ if (!svet) { SD.begin(SD_CS); // включаем картриер X = 260; Y = 60; myFile = SD.open("sveton.bmp", FILE_READ); //рисуем кнопку свет knopki(); } else { SD.begin(SD_CS); // включаем картриер X = 260; Y = 60; myFile = SD.open("svetoff.bmp", FILE_READ); //рисуем кнопку свет knopki(); } svet = (svet != 1); } if ((X < 320) && (Y < 179) && (X > 260) && (Y > 120)) { // Нажатие кнопки вентиляция if (!vent) { SD.begin(SD_CS); X = 260; Y = 120; myFile = SD.open("venton.bmp", FILE_READ); //рисуем кнопку вентиляция knopki(); } else { SD.begin(SD_CS); X = 260; Y = 120; myFile = SD.open("ventoff.bmp", FILE_READ); //рисуем кнопку вентиляция knopki(); } vent = (vent != 1); } if ((X < 60) && (Y < 120) && (X > 0) && (Y > 60)) { // Нажатие кнопки тены if (!tens) { SD.begin(SD_CS); X = 0; Y = 60; myFile = SD.open("nagron.bmp", FILE_READ); //рисуем кнопку тены knopki(); } else { SD.begin(SD_CS); X = 0; Y = 60; myFile = SD.open("nagroff.bmp", FILE_READ); //рисуем кнопку тены knopki(); } tens = (tens != 1); } if ((X < 60) && (Y < 180) && (X > 0) && (Y > 120)) { // Нажатие кнопки тены if (!sushka) { SD.begin(SD_CS); X = 0; Y = 120; myFile = SD.open("sushon.bmp", FILE_READ); //рисуем кнопку тены knopki(); } else { SD.begin(SD_CS); X = 0; Y = 120; myFile = SD.open("sushoff.bmp", FILE_READ); //рисуем кнопку тены knopki(); } sushka = (sushka != 1); } } void sensor(void) // опрос сенсора экрана { TSPoint tem = ts.getPoint(); X = 0; Y = 0; pinMode(LCD_WR, OUTPUT); pinMode(LCD_RS, OUTPUT); if (tem.z > 0) { Y = (map(tem.x, TS_MINX, TS_MAXX, tft.height(), 0)); X = (map(tem.y, TS_MINY, TS_MAXY, tft.width(), 0)); X = X - 14; Y = Y - 14; if (X < 0) { X = 0; } if (Y < 0) { Y = 0; } X = X * 1.172; Y = Y * 1.23; if (X > 320) { X = 320; } if (Y > 240) { Y = 240; } //tft.drawFastHLine(X,Y,2,RED); } } void svaz() { //связь с UNO tem = 0; X = 0; Y = 0; tem = digitalRead(pinIRQRX); // проверка порта сигналзации о связи с мастером delay(1000); if (tem == 1) { Serial.begin(9600); tempvar = " "; tmptime = millis(); digitalWrite(pinIRQTX, HIGH); while (!Serial.available() and (millis() - tmptime < 2000)) //пока нет данных для приема стоим на месте 2 секунды и выходим delay(20); delay(200);//ожидаем получения всего сообщения while (Serial.available()) //пока не конец сообщения, читаем данные и формируем строку tempvar = tempvar + (char)(Serial.read()); Serial.end();//закрываем сериал соединение digitalWrite(pinIRQTX, LOW); tft.setCursor(200, 50); tft.setTextColor(CYAN); tft.print(temptek); if (tempvar != " ") { temptek = tempvar; } tft.setTextColor(BLACK); tft.setCursor(200, 50); tft.print(temptek); tem = 0; } } void tempsetup() { // установка температуры tft.fillRect(60, 0, 200, 240, CYAN); //стираем экран tft.fillRoundRect(70, 30, 50, 50, 6, RED); //рисуем экран tft.fillRoundRect(200, 30, 50, 50, 6, RED); tft.fillRoundRect(70, 120, 50, 50, 6, YELLOW); tft.fillRoundRect(200, 120, 50, 50, 6, YELLOW); tft.fillRoundRect(70, 180, 180, 60, 6, MAGENTA); tft.setTextSize(3); tft.setCursor(63, 0); tft.setTextColor(BLACK); tft.print(utf8rus("Температура")); tft.setCursor(80, 90); tft.print(utf8rus("Влажность")); tft.setCursor(80, 200); tft.print(utf8rus("Сохранить")); tft.setTextSize(4); tft.setCursor(125, 40); tft.print(maxtemp); tft.setCursor(138, 130); tft.print(maxvlag); tft.setTextSize(5); tft.setCursor(82, 37); tft.print(utf8rus("-")); tft.setCursor(82, 127); tft.print(utf8rus("-")); tft.setCursor(212, 37); tft.print(utf8rus("+")); tft.setCursor(212, 127); tft.print(utf8rus("+")); maxtemptek = maxtemp; maxvlagtek = maxvlag; tft.setTextSize(4); for (tem1 = 0; tem1 <= 3; tem1++) { sensor(); if ((X > 70) && (Y > 30) && (X < 130) && (Y < 80)) { // Нажатие кнопки температура - tft.setTextColor(CYAN); tft.setCursor(125, 40); tft.print(maxtemptek); maxtemptek = maxtemptek - 5 * (maxtemptek != 40); tft.setTextColor(BLACK); tft.setCursor(125, 40); tft.print(maxtemptek); } if ((X > 200) && (Y > 30) && (X < 250) && (Y < 80)) { // Нажатие кнопки температура + tft.setTextColor(CYAN); tft.setCursor(125, 40); tft.print(maxtemptek); maxtemptek = maxtemptek + 5 * (maxtemptek != 110); tft.setTextColor(BLACK); tft.setCursor(125, 40); tft.print(maxtemptek); } if ((X > 70) && (Y > 120) && (X < 120) && (Y < 170)) { // Нажатие кнопки влажность - tft.setTextColor(CYAN); tft.setCursor(138, 130); tft.print(maxvlagtek); maxvlagtek = maxvlagtek - 5 * (maxvlagtek != 0); tft.setTextColor(BLACK); tft.setCursor(138, 130); tft.print(maxvlagtek); } if ((X > 200) && (Y > 120) && (X < 250) && (Y < 170)) { // Нажатие кнопки влажность + tft.setTextColor(CYAN); tft.setCursor(138, 130); tft.print(maxvlagtek); maxvlagtek = maxvlagtek + 5 * (maxvlagtek != 60); tft.setTextColor(BLACK); tft.setCursor(138, 130); tft.print(maxvlagtek); } if ((X > 70) && (Y > 180) && (X < 250) && (Y < 240)) { // Нажатие кнопки Сохранить tft.fillRect(60, 0, 200, 240, CYAN); //стираем экран maxtemp = maxtemptek; //сохраняем температуру maxvlag = maxvlagtek; //сохраняем влажность tem = 3; //рисуем главный экран temvar = BLACK; risuem(); tem1 = 4; // заканчиваем цикл } tem1 = tem1 - 1; delay(50); } } void risuem() { // Процедура вывода главного меню tft.setTextSize(3); tft.setCursor(63, 0); tft.setTextColor(BLACK); tft.print(utf8rus("Температура")); tft.setTextSize(2); tft.setCursor(60, 70); tft.print(utf8rus("Текущая Максимум")); tft.setCursor(180, 30); tft.setTextSize(4); tft.print(maxtemp); } void timeobr() { if (millis() % 1000 == 0) { // если прошла 1 секунда temptime = rtc.gettime("s"); sek = int(temptime); delay(1); // приостанавливаем на 1 мс, чтоб не выводить время несколько раз за 1мс tft.setTextColor(BLACK); tft.setCursor(63, 200); } } void knopki() { //функция чтения с карты и вывода на экран for (tem1 = 0; tem1 <= 53; tem1++) { B = myFile.read(); } for (tem1 = 0; tem1 <= 11; tem1++) { B = myFile.read(); } for (Y1 = 60; Y1 > 0; Y1--) { for (X1 = 60; X1 > 0; X1--) { B = myFile.read(); G = myFile.read(); tft.drawPixel(60 - X1 + X, Y1 + Y - 1, G * 256 + B); } } myFile.close(); } String utf8rus(String source) //печать русских шрифтов { int i, k; String target; unsigned char n; char m[2] = { '0', '\0' }; k = source.length(); i = 0; while (i < k) { n = source[i]; i++; if (n >= 0xBF) { switch (n) { case 0xD0: { n = source[i]; i++; if (n == 0x81) { n = 0xA8; break; } if (n >= 0x90 && n <= 0xBF) n = n + 0x2F; break; } case 0xD1: { n = source[i]; i++; if (n == 0x91) { n = 0xB7; break; } if (n >= 0x80 && n <= 0x8F) n = n + 0x6F; break; } } } m[0] = n; target = target + String(m); } return target; }вариант с приведением string to int
ответ
вариант с чтением параметров в переменную...
//wr-d6=269om int pinIRQRX = 13;// Порт информации о приеме int pinIRQTX = 12;// Порт к приему готов int tem = 0; // переменная временных значений int tem1 = 0; // переменная временных значений String temptek;// текущая температура int svet, vent, tens, sushka; int maxtemp = 100; int maxtemptek = 100; int maxvlag = 10; int maxvlagtek = 60; String tempvar; // переменная для связи с другой ардуино int tmptime = 0; //Время для связи //int flag = 0; //SD CARD //SD_SS=CS=10 SD_DI=MOSI=11 SD_DO=MISO=12 SD_SCK=CLK=13 #include <SD.h> #include <SPI.h> #define SD_CS 53 //пин картридера File myFile; uint8_t G = 0x0000; // данные чтения с карты uint8_t B = 0x0000; // данные чтения с карты //clock #include <RTC.h> RTC rtc; Time t; String temptime; int sek, mins, hours; // ЛСД Экран #include <Adafruit_GFX.h>// работа с экраном #include <gfxfont.h>// фонт для вывода #include <MCUFRIEND_kbv.h> // драйвер экрана #include <TouchScreen.h> #define LCD_RD A0 //для LCD #define LCD_WR A1 //и для LCD и для сенсора #define LCD_RS A2 //и для LCD и для сенсора #define LCD_CS A3 //для LCD #define YM 7 // для сенсора #define XP 6 // для сенсора MCUFRIEND_kbv tft; TouchScreen ts = TouchScreen(XP, LCD_RS, LCD_WR, YM, 269);// TouchScreen ts = TouchScreen(XP, YP, XM, YM, 269); short TS_MINX = 20; short TS_MINY = 20; short TS_MAXX = 920; short TS_MAXY = 940; int Y, X, X1, Y1; uint16_t temvar = 0x0000; // убрать со временем #define BLACK 0x0000 #define BLUE 0x001A #define RED 0xFBEF #define GREEN 0x07E0 #define CYAN 0x33FF #define MAGENTA 0xF81F #define YELLOW 0xFFE0 #define WHITE 0xFFFF void setup(void) { rtc.begin(RTC_DS1302, 49, 47, 48); // на базе чипа DS1302, вывод RST, вывод CLK, вывод DAT rtc.settime(0, 17, 15, 1, 10, 15, 4); // 0 сек, 17 мин, 15 час, 1, октября, 2015 года, четверг tft.reset(); uint16_t identifier = tft.readID(); tft.begin(identifier); tft.setRotation(1); tft.fillScreen(CYAN); SD.begin(SD_CS); // включаем картриер X = 260; Y = 180; myFile = SD.open("nastr.bmp", FILE_READ); //рисуем кнопку настройки knopki(); Y = 120; myFile = SD.open("ventoff.bmp", FILE_READ); //рисуем кнопку вентиляция knopki(); Y = 60; myFile = SD.open("svetoff.bmp", FILE_READ); //рисуем кнопку свет knopki(); Y = 0; myFile = SD.open("clockoff.bmp", FILE_READ); //рисуем кнопку часы knopki(); X = 0; Y = 180; myFile = SD.open("rezerv.bmp", FILE_READ); //рисуем кнопку rezerv knopki(); Y = 120; myFile = SD.open("sushoff.bmp", FILE_READ); //рисуем кнопку сушка knopki(); Y = 60; myFile = SD.open("nagroff.bmp", FILE_READ); //рисуем кнопку нагрев knopki(); Y = 0; myFile = SD.open("temp.bmp", FILE_READ); //рисуем кнопку часы knopki(); tem = 3; risuem(); // Текст главной pinMode(pinIRQTX, OUTPUT); //порт сигнала передачи pinMode(pinIRQRX, INPUT); // Сигнал о передаче Serial.begin(9600); } void loop(void) { timeobr(); sensor(); if ((X < 60) && (Y < 60) && (X != 0) && (Y != 0)) { // Нажатие кнопки температура tempsetup(); } if ((X < 320) && (Y < 119) && (X > 260) && (Y > 60)) { // Нажатие кнопки СВЕТ if (!svet) { SD.begin(SD_CS); // включаем картриер X = 260; Y = 60; myFile = SD.open("sveton.bmp", FILE_READ); //рисуем кнопку свет knopki(); } else { SD.begin(SD_CS); // включаем картриер X = 260; Y = 60; myFile = SD.open("svetoff.bmp", FILE_READ); //рисуем кнопку свет knopki(); } svet = (svet != 1); } if ((X < 320) && (Y < 179) && (X > 260) && (Y > 120)) { // Нажатие кнопки вентиляция if (!vent) { SD.begin(SD_CS); X = 260; Y = 120; myFile = SD.open("venton.bmp", FILE_READ); //рисуем кнопку вентиляция knopki(); } else { SD.begin(SD_CS); X = 260; Y = 120; myFile = SD.open("ventoff.bmp", FILE_READ); //рисуем кнопку вентиляция knopki(); } vent = (vent != 1); } if ((X < 60) && (Y < 120) && (X > 0) && (Y > 60)) { // Нажатие кнопки тены if (!tens) { SD.begin(SD_CS); X = 0; Y = 60; myFile = SD.open("nagron.bmp", FILE_READ); //рисуем кнопку тены knopki(); } else { SD.begin(SD_CS); X = 0; Y = 60; myFile = SD.open("nagroff.bmp", FILE_READ); //рисуем кнопку тены knopki(); } tens = (tens != 1); } if ((X < 60) && (Y < 180) && (X > 0) && (Y > 120)) { // Нажатие кнопки тены if (!sushka) { SD.begin(SD_CS); X = 0; Y = 120; myFile = SD.open("sushon.bmp", FILE_READ); //рисуем кнопку тены knopki(); } else { SD.begin(SD_CS); X = 0; Y = 120; myFile = SD.open("sushoff.bmp", FILE_READ); //рисуем кнопку тены knopki(); } sushka = (sushka != 1); } } void sensor(void) // опрос сенсора экрана { TSPoint tem = ts.getPoint(); X = 0; Y = 0; pinMode(LCD_WR, OUTPUT); pinMode(LCD_RS, OUTPUT); if (tem.z > 0) { Y = (map(tem.x, TS_MINX, TS_MAXX, tft.height(), 0)); X = (map(tem.y, TS_MINY, TS_MAXY, tft.width(), 0)); X = X - 14; Y = Y - 14; if (X < 0) { X = 0; } if (Y < 0) { Y = 0; } X = X * 1.172; Y = Y * 1.23; if (X > 320) { X = 320; } if (Y > 240) { Y = 240; } //tft.drawFastHLine(X,Y,2,RED); } } void svaz() { //связь с UNO tem = 0; X = 0; Y = 0; tem = digitalRead(pinIRQRX); // проверка порта сигналзации о связи с мастером delay(1000); if (tem == 1) { Serial.begin(9600); tempvar = " "; tmptime = millis(); digitalWrite(pinIRQTX, HIGH); while (!Serial.available() and (millis() - tmptime < 2000)) //пока нет данных для приема стоим на месте 2 секунды и выходим delay(20); delay(200);//ожидаем получения всего сообщения while (Serial.available()) //пока не конец сообщения, читаем данные и формируем строку tempvar = tempvar + (char)(Serial.read()); Serial.end();//закрываем сериал соединение digitalWrite(pinIRQTX, LOW); tft.setCursor(200, 50); tft.setTextColor(CYAN); tft.print(temptek); if (tempvar != " ") { temptek = tempvar; } tft.setTextColor(BLACK); tft.setCursor(200, 50); tft.print(temptek); tem = 0; } } void tempsetup() { // установка температуры tft.fillRect(60, 0, 200, 240, CYAN); //стираем экран tft.fillRoundRect(70, 30, 50, 50, 6, RED); //рисуем экран tft.fillRoundRect(200, 30, 50, 50, 6, RED); tft.fillRoundRect(70, 120, 50, 50, 6, YELLOW); tft.fillRoundRect(200, 120, 50, 50, 6, YELLOW); tft.fillRoundRect(70, 180, 180, 60, 6, MAGENTA); tft.setTextSize(3); tft.setCursor(63, 0); tft.setTextColor(BLACK); tft.print(utf8rus("Температура")); tft.setCursor(80, 90); tft.print(utf8rus("Влажность")); tft.setCursor(80, 200); tft.print(utf8rus("Сохранить")); tft.setTextSize(4); tft.setCursor(125, 40); tft.print(maxtemp); tft.setCursor(138, 130); tft.print(maxvlag); tft.setTextSize(5); tft.setCursor(82, 37); tft.print(utf8rus("-")); tft.setCursor(82, 127); tft.print(utf8rus("-")); tft.setCursor(212, 37); tft.print(utf8rus("+")); tft.setCursor(212, 127); tft.print(utf8rus("+")); maxtemptek = maxtemp; maxvlagtek = maxvlag; tft.setTextSize(4); for (tem1 = 0; tem1 <= 3; tem1++) { sensor(); if ((X > 70) && (Y > 30) && (X < 130) && (Y < 80)) { // Нажатие кнопки температура - tft.setTextColor(CYAN); tft.setCursor(125, 40); tft.print(maxtemptek); maxtemptek = maxtemptek - 5 * (maxtemptek != 40); tft.setTextColor(BLACK); tft.setCursor(125, 40); tft.print(maxtemptek); } if ((X > 200) && (Y > 30) && (X < 250) && (Y < 80)) { // Нажатие кнопки температура + tft.setTextColor(CYAN); tft.setCursor(125, 40); tft.print(maxtemptek); maxtemptek = maxtemptek + 5 * (maxtemptek != 110); tft.setTextColor(BLACK); tft.setCursor(125, 40); tft.print(maxtemptek); } if ((X > 70) && (Y > 120) && (X < 120) && (Y < 170)) { // Нажатие кнопки влажность - tft.setTextColor(CYAN); tft.setCursor(138, 130); tft.print(maxvlagtek); maxvlagtek = maxvlagtek - 5 * (maxvlagtek != 0); tft.setTextColor(BLACK); tft.setCursor(138, 130); tft.print(maxvlagtek); } if ((X > 200) && (Y > 120) && (X < 250) && (Y < 170)) { // Нажатие кнопки влажность + tft.setTextColor(CYAN); tft.setCursor(138, 130); tft.print(maxvlagtek); maxvlagtek = maxvlagtek + 5 * (maxvlagtek != 60); tft.setTextColor(BLACK); tft.setCursor(138, 130); tft.print(maxvlagtek); } if ((X > 70) && (Y > 180) && (X < 250) && (Y < 240)) { // Нажатие кнопки Сохранить tft.fillRect(60, 0, 200, 240, CYAN); //стираем экран maxtemp = maxtemptek; //сохраняем температуру maxvlag = maxvlagtek; //сохраняем влажность tem = 3; //рисуем главный экран temvar = BLACK; risuem(); tem1 = 4; // заканчиваем цикл } tem1 = tem1 - 1; delay(50); } } void risuem() { // Процедура вывода главного меню tft.setTextSize(3); tft.setCursor(63, 0); tft.setTextColor(BLACK); tft.print(utf8rus("Температура")); tft.setTextSize(2); tft.setCursor(60, 70); tft.print(utf8rus("Текущая Максимум")); tft.setCursor(180, 30); tft.setTextSize(4); tft.print(maxtemp); } void timeobr() { if (millis() % 1000 == 0) { // если прошла 1 секунда t = rtc.gettime("s"); //sek = int(temptime); delay(1); // приостанавливаем на 1 мс, чтоб не выводить время несколько раз за 1мс tft.setTextColor(BLACK); tft.setCursor(63, 200); } } void knopki() { //функция чтения с карты и вывода на экран for (tem1 = 0; tem1 <= 53; tem1++) { B = myFile.read(); } for (tem1 = 0; tem1 <= 11; tem1++) { B = myFile.read(); } for (Y1 = 60; Y1 > 0; Y1--) { for (X1 = 60; X1 > 0; X1--) { B = myFile.read(); G = myFile.read(); tft.drawPixel(60 - X1 + X, Y1 + Y - 1, G * 256 + B); } } myFile.close(); } String utf8rus(String source) //печать русских шрифтов { int i, k; String target; unsigned char n; char m[2] = { '0', '\0' }; k = source.length(); i = 0; while (i < k) { n = source[i]; i++; if (n >= 0xBF) { switch (n) { case 0xD0: { n = source[i]; i++; if (n == 0x81) { n = 0xA8; break; } if (n >= 0x90 && n <= 0xBF) n = n + 0x2F; break; } case 0xD1: { n = source[i]; i++; if (n == 0x91) { n = 0xB7; break; } if (n >= 0x80 && n <= 0x8F) n = n + 0x6F; break; } } } m[0] = n; target = target + String(m); } return target; }ответ
slave.ino: In function 'void timeobr()':
Другой разговор. Вы пытаетесь получить целое число из содержимого String, но прямое преобразование там не определено (с чего Вы взяли, что так должно работать). Для преобразования в классе String есть специальный метод, который это отлично делает. Т.е. в строке 352, вместо нынешнего
надо написать
и всего делов.
Другое дело, что Вы эту переменную sek потом нигде и никак не используете, так зачем ей что-то присваивать? Но, это меня не касается, впрочем :)
спасибо щас проверю... обработчики вермени еще не написаны... нужны числовые данные о секундах минутах и тп ... буду делать так.. хотя второй вариант удобнее конечно ..
Здесь тоже нет ничего необычного. Тип Time у Вас не определён. Не подключена нужная библиотека или ещё что, но такого типа у Вас нет. Ну, а второе сообщени о том, что переменная t не определена и это понятно - Вы же её пытались объявить с несуществующем типом.
эт я так и понял ... но создавая переменную типа int к примеру .... впихать все туда не получается... вот и какой тип выбрать чтобы считать все данные сразу
и какой тип выбрать чтобы считать все данные сразу
Я не знаю, какой Вы библиотекой RTC.h пользуетесь. Если вот этой, то там есть тип RTCTime, посмотрите с 27 строки
struct RTCTime { uint8_t second; uint8_t minute; uint8_t hour; uint8_t day; uint8_t month; uint8_t year; uint8_t dayOfWeek; };Вот им и пользуйтесь. Если у Вас другая библиотека, то опять же откройте её .h файл и посмотрите, там по идее должен быть како-нибудь тип для этого.
Другой разговор. Вы пытаетесь получить целое число из содержимого String, но прямое преобразование там не определено (с чего Вы взяли, что так должно работать). Для преобразования в классе String есть специальный метод, который это отлично делает. Т.е. в строке 352, вместо нынешнего
из книжки проекты с использованием арудино ....
а где то мона глянуть полный список комманд на ру сайте?.... на arduino.cc я нашел вашу предложенную команду... но каждую так выискивать сложновато
из книжки проекты с использованием арудино ....
Вы пытаетесь мне что-то доказать? Не надо - доказывайте компьютеру.
5.4.4.3. int()
int(x);
А там не написано какие именно значения оно приводит? К классам это никакого отношения не имеет, а String - класс.
а где то мона глянуть полный список комманд на ру сайте?.... на arduino.cc я нашел вашу предложенную команду... но каждую так выискивать сложновато
Это (преобразование типов и т.п.) не имеет никакого отношения к ардуино. Идите на любой сайт, посвящённый языку С++ и смотрите. Сайтов чуть больше, чем 100500. Например, http://ru.cppreference.com/w/
ни в коем случае не пытаюсь доказать ... просто ответил на вопрос почему я думал что это должно работать ...
в книжке и написано преобразование типов... но команда не работает ... как я догадываюсь зависит от версии языка чтоли...
ваша команда заработала ... вот и хочу найти где все увидеть ... ибо любую команду можно обойти самому... но это длинно и через жопу...
ни в коес случае не хотел обидеть ... ваша помощь неоценима.... ибо щас скетч работает на вашем примере ...
в книжке и написано преобразование типов... но команда не работает ... как я догадываюсь зависит от версии языка чтоли...
Да, нет же ж! Причём тут версия языка? String это класс, а для них нет умолчательных преобразований. Хотите, чтобы класс во что-то преобразовывался - надо писать преобразователь ручками. По умолчанию классы никуда и никак не преобразуются.