записать его в переменную (как именно - смотри примеры к используемой библиотеке) и затем эту переменную передать в LCD (аналогично).
я не знаю в каком формате выдает данные библиотека GPRS, не знаю какую библиотеку ты используешь... Это все должно быть в примерах к библиотеке.
Если я правильно понял мне надо сделать примерно как то так Код (C++): int j ;//вожу переменную //здесь я как то получаю данные о времени lcd.print(j);//и вывожу на лсд
да, примерно так. Но тип переменных может быть и int или byte (если в библиотеке по одному числу для часов-минут-секунд, т.е. три переменных h = 12, m = 33, s = 56), и long (если это просто число секунд от Единого старта: ss = 223654587), и String (если они тупо в текстовом виде: j = "12:33:56"), все зависит от используемой библиотеки. Код (C++): int j ;//вожу переменную j = getTime() //здесь я как то получаю данные о времени lcd.print(j);//и вывожу на лсд
Так не покатит. Надо вывести команду на терминал, получить ответную строку из буфера в строковую переменную, обработать ее выискивая в тексте время и дату. Не проще уже купить ЧРВ, аналоги от дядюшки вообще копеечные, а работают исправно.
С выводом проблем нет Код (C++): // библиотека для работы с GPRS устройством #include <GPRS_Shield_Arduino.h> #include <SoftwareSerial.h> SoftwareSerial mySerial(10, 11); // RX, TXint getTime; GPRS gprs(9600);// библиотека для работы с GPRS устройством void setup() { // включаем GPRS-шилд gprs.powerUpDown(); Serial.begin(9600); //Скорость порта для связи Arduino с компьютером // проверяем есть ли связь с GPRS устройством Serial.println("GPRS AT comand"); mySerial.begin(9600); //Скорость порта для связи Arduino с GSM модулем mySerial.println("AT"); delay(1000); mySerial.println("AT+CCLK?"); delay(1000); } void loop() { if (mySerial.available()) Serial.write(mySerial.read()); if (Serial.available()) mySerial.write(Serial.read()); } Получил ответ Код (C++): +CCLK: "15/10/28,13:24:47+03" Как записать не знаю. Есть вариант что типа этого: Код (C++): / int j = 9; //j=0 int g = 0;//g = 0 char datetimeStrings[] = {"15/10/28,13:24:47+03"}; //массив c датой,временем и часовым поясом String stroka = ""; //записываем в строку void setup() { Serial.begin(9600);//сериал соедеинение } void loop() { while (datetimeStrings[j] != '+') //постоянный цыкл в которм ищем + //и показывем все что идет до + { stroka = stroka + datetimeStrings[j]; //запмсываем в строку 15/10/28,13:24:47+03 j++;//добавляем символы //как я понимаю 15/10/28,13:24:47 добавляються при каждом цыкле по одному числу } //Выводим изъятую строку Serial.println(stroka); delay(1000); }
Короче так но пока косяков много Код (C++): // подключаем библиотеку GPRS модуля #include <GPRS_Shield_Arduino.h> #include <SoftwareSerial.h> #include <stdio.h> #include <string.h> #include <LiquidCrystal.h> // initialize the library with the numbers of the interface pins LiquidCrystal lcd(13, 12, 7, 6, 5, 4); // заводим serial-соединение на 10 и 11 цифровых входах SoftwareSerial gprsSerial(10, 11); GPRS gprs(9600);// библиотека для работы с GPRS устройством void setup () { gprs.powerUpDown(); gprsSerial.begin(9600); Serial.begin(9600); lcd.begin(16, 2); } String currStr = ""; char result; void loop () { delay(300); if (!gprsSerial.available()) delay(100); gprsSerial.println("AT+CCLK?"); delay(100); timeRead: char currSymb = gprsSerial.read(); currStr = currStr + currSymb; if (currSymb == '\r') { goto timePrint; } else { goto timeRead; } timePrint: delay(100); Serial.println(currStr); lcd.setCursor(0,0); lcd.print(currStr); lcd.setCursor(0,1); lcd.print(" "); currStr=""; delay(100); }
Есть вариант что то типа такого но тут одни ошибки Код (C++): // библиотека для работы с GPRS устройством #include <GPRS_Shield_Arduino.h> #include <SoftwareSerial.h> SoftwareSerial mySerial(10, 11); // RX, TX GPRS gprs(9600);// библиотека для работы с GPRS устройством #include <EEPROM.h> // размер массива для времени с учётом завершающего нуля #define LEN_DATE 12 // размер массива для даты с учётом завершающего нуля #define LEN_TIME 12 // размер массива для дня часового пояса с учётом завершающего нуля #define LEN_TZ 12 void setup() { // включаем GPRS-шилд gprs.powerUpDown(); //Скорость порта для связи Arduino с компьютером Serial.begin(9600); while (!Serial) { // ждём пока не откроется монитор последовательного порта // для того, чтобы отследить все события в программе } Serial.println("GPRS clock"); //Скорость порта для связи Arduino с GSM модулем mySerial.begin(9600); mySerial.println("AT"); //отпавляем АТ команду и получаем ответ OK delay(1000); //установливаем время, //но у меня оно установенно //mySerial.println("AT+CCLK=\"15/10/27,19:50:00+03\""); } void loop() { if (mySerial.available()) Serial.write(mySerial.read()); if (Serial.available()) mySerial.write(Serial.read()); // массив для хранения текущего времени char time[LEN_DATE] = {0}; // массив для хранения текущей даты char date[LEN_TIME] = {0}; // массив для хранения текущего дня недели char tz[LEN_TZ] = {0}; // запрашиваем данные с GPRS mySerial.println("AT+CCLK?"); // сохраняем текущее время в массив time gprs.getTimeStr(time, LEN_DATE); // сохраняем текущую дату в массив date gprs.getDateStr(date, LEN_TIME); // сохраняем текущий день недели в массив dow gprs.getDOWStr(dow, LEN_TZ); // выводим в serial порт текущее время, дату и день недели Serial.print(time); Serial.print("--"); Serial.print(date); Serial.print("--"); Serial.println(tz); // ждём одну секунду delay(1000); }