Съдържание:

Ардуино начертаване на дата/час/регистриране с помощта на Millis () и PfodApp: 11 стъпки
Ардуино начертаване на дата/час/регистриране с помощта на Millis () и PfodApp: 11 стъпки

Видео: Ардуино начертаване на дата/час/регистриране с помощта на Millis () и PfodApp: 11 стъпки

Видео: Ардуино начертаване на дата/час/регистриране с помощта на Millis () и PfodApp: 11 стъпки
Видео: CS50 2014 – 7-я неделя 2024, Ноември
Anonim
Артуино начертаване на дата/час/регистриране с помощта на Millis () и PfodApp
Артуино начертаване на дата/час/регистриране с помощта на Millis () и PfodApp

Не се изисква програмиране с Arduino или Android. Поддържат се също RTC и GPS модули. Автоматична корекция за часови зони, RTC дрейф и липсващи високосни секунди на GPS

Въведение

Този урок ви показва как да използвате вашите времеви марки Arduino millis () за начертаване на данни срещу дата и час на вашия мобилен телефон с Android с помощта на pfodApp.

Не се изисква програмиране на Arduino или Android. pfodApp също регистрира достатъчно данни, за да можете по -късно да възпроизведете графиците за дата/час в електронна таблица.

НЕ са необходими RTC или GPS модул, но ако вашият проект Arduino има RTC (часовник в реално време) или GPS модул, те също могат да бъдат използвани. В тези случаи графиките на pfodApp автоматично ще коригират часовата зона, RTC дрейфа и GPS липсващите високосни секунди. За тези корекции не се изисква специален код на Arduino. Както винаги с pfodApp, получените данни се регистрират точно както са, некоригирани, но регистрационният файл също съдържа достатъчно информация, която да ви позволи да приложите тези корекции сами, когато изтегляте регистрационните файлове на вашия компютър. Вижте по-долу за примери за тази последваща обработка.

Поддържа се голямо разнообразие от форматиране по оста X по време и дата, като всички те се контролират изцяло от къси текстови низове във вашата скица на Arduino. Не се изисква програмиране за Android.

pfodApp ще се свързва чрез WiFi, Bluetooth Classic, BLE и SMS. Безплатният pfodDesigner генерира пълни скици на Arduino за нанасяне на дата/час/регистриране, за да се свърже с голямо разнообразие от дъски. Не се изисква програмиране с Arduino.

Тази инструкция ще използва Adafruit Feather52 като примерна платка Arduino, която се свързва чрез BLE.

Тази инструкция обхваща три случая:- 1) Вашият микропроцесорен проект има само милисекундни времеви марки- millis () 2) Вашият микропроцесорен проект има часовник в реално време (RTC)- pfodApp автоматично коригира дрейфа. 3) Вашият микропроцесорен проект има GPS модул - pfodApp автоматично коригира за високосни секунди, когато те настъпят (в момента 18 секунди към 2018 г.).

Стъпка 1: Използване на Arduino Millisecond Timestamps, Millis ()

Използването на милисекунди за дата и час има две части. Единият е за начертаване на данните спрямо изминалото време или дата/час, а другата част е пресъздаването на датата и часа от регистрираните милисекундни времеви марки. pfodApp не променя необработените данни, получени от pfodDevice (Arduino micro). Той просто регистрира точно получените байтове.

Първо използвайте безплатния pfodDesigner, за да генерирате скица на Arduino за вашия микро, който ще изпрати милисекундите и измерванията на данните до pfodApp за начертаване/регистриране. Този пример създава меню за дъската Adafruit Feather 52 BLE, която чете A0. Урокът за Adafruit Feather nRF52 LE - Персонализирани контроли с pfodApp преминава през стъпките на pfodDesigner, за да създаде меню за Feather nRF52, което включва бутон диаграма, така че го проверете за повече подробности. В този урок ще добавим само бутон с диаграма и ще използваме новите опции за формат на оста X, за да начертаем показанията на A0 спрямо изминалото време и дата/час.

Първата част на този урок ще премине през безплатния pfodDesigner за създаване на примерна диаграма за дата и час на вашия мобилен телефон с Android. Когато сте доволни от дисплея, можете да генерирате скицата на Arduino, която ще го възпроизведе, когато се свържете с pfodApp. Не се изисква програмиране за Android и тъй като pfodDesigner генерира пълни скици на Arduino за голямо разнообразие от дъски Arduino, не се изисква и програмиране на Arduino.

Стъпка 2: Добавяне на диаграма към менюто

Добавяне на диаграма към менюто
Добавяне на диаграма към менюто
Добавяне на диаграма към менюто
Добавяне на диаграма към менюто
Добавяне на диаграма към менюто
Добавяне на диаграма към менюто
Добавяне на диаграма към менюто
Добавяне на диаграма към менюто

Изтеглете приложението pfodDesigner от Google Play, отворете го и кликнете върху „Старт на ново меню“

Щракнете върху „Target Serial“и след това върху бутона „Bluetooth Low Energy“, за да се покаже списъкът с около 11 BLE табла (превъртете надолу, за да видите другите опции). Изберете върху Adafruit Bluefruit Feather52.

Върнете се в менюто Редактиране и кликнете върху „Редактиране на подкана“и задайте подходящ подкана за това меню, напр. „Перо52“и текст удебелен и размер +7. Цветът на фона беше оставен като „бял“по подразбиране

Върнете се и кликнете върху „Добавяне на елемент от менюто“, превъртете надолу и изберете „Бутон за диаграма“, който отваря екрана за редактиране на бутона за диаграма. Тук можете да промените външния вид на бутона. В този случай текстът на бутона беше променен на „Дата/час график на A0“, а останалите настройки по подразбиране бяха оставени такива, каквито са.

Това ви дава бутон в менюто, който ще отвори екрана с диаграми.

Стъпка 3: Редактиране на източника на графиката и етикетите

Редактиране на източника на графиката и етикетите
Редактиране на източника на графиката и етикетите
Редактиране на източника на графиката и етикетите
Редактиране на източника на графиката и етикетите
Редактиране на източника на графиката и етикетите
Редактиране на източника на графиката и етикетите
Редактиране на източника на графиката и етикетите
Редактиране на източника на графиката и етикетите

Щракнете върху бутона „Графика за дата/час на A0“, за да отворите екрана Редактиране на графики, където можете да получите достъп до етикета на диаграмата, формата на оста X, интервала за данни на графиката и (чрез превъртане надолу) самите настройки на графиката. Редактирайте етикета на диаграмата на нещо подходящо, напр. „А0 волта“.

Превъртете надолу и за графики 2 и 3 отворете Edit Plot и щракнете върху Hide Plot, за да ги премахнете от дисплея на диаграмата.

След това щракнете върху „Редактиране на график 1“и задайте етикет на графика (напр. A0), единици на оста y (напр. Волта), покажете максимум 3,6 V и се свържете към I/O пин A0.

Превъртете обратно нагоре и кликнете върху „Преглед на диаграма“до най -новите 0 примерни точки от данни, на интервали от 1 сек, начертани спрямо изминалото време в минути: сек.

За всички изминали времеви графики водещите нулеви единици не се показват, така че в този график само тези времена> 1 минути имат показани водещи минути.

Стъпка 4: Избор на формат за дата/час

Избор на формат за дата/час
Избор на формат за дата/час
Избор на формат за дата/час
Избор на формат за дата/час
Избор на формат за дата/час
Избор на формат за дата/час

За графиците на изминалото време водещата единица просто се увеличава с течение на времето. За да видите пример за това, върнете се на екрана „Редактиране на графики“и увеличете интервала за данни на графиката до 15 минути (долната част на този екран)

След това щракнете върху Преглед на диаграма, за да покажете същите примерни данни, но сега с интервали от 15 минути между пробите. Както можете да видите минутната част на mm: ss просто продължава да се увеличава.

Сега се върнете и кликнете върху бутона X ос, за да покажете малка селекция от всички възможни формати за данни/време по оста X (превъртете надолу за повече)

По-горе е селекция от визуализации на диаграми, използващи различни формати на оста X.

Графиките за дата/час, показани тук, са в „местната“часова зона. Има и опции за форматиране на дата/час в UTC. За пълен набор от възможни опции за формат дата/час вижте pfodSpecification.pfd.

Стъпка 5: Генерирайте и тествайте скицата на Arduino

Генерирайте и тествайте скицата на Arduino
Генерирайте и тествайте скицата на Arduino
Генерирайте и тествайте скицата на Arduino
Генерирайте и тествайте скицата на Arduino

След като сте доволни от формата на диаграмата и интервала от данни, можете да отидете на екрана „Меню за редактиране_1“и да превъртите надолу и „Генериране на код“за избраната от вас табла. Ето примерната скица за Adafruit Feather52, използвайки 1сек интервали от данни и формат за изминало време mm: ss, pfodFeather52_timeplot.ino

По -горе е график на A0 от Перото52

Промяната на формата в делничен час hr: min: sec (~ E HH: mm: ss) и повторното генериране на кода (pfodFeather52_dateplot.ino) дава график като втория по-горе.

Можете да редактирате формата на оста X директно във вашата скица на Arduino, както е описано по-долу.

Стъпка 6: Как PfodApp нанася дата/час от Millis ()?

Когато pfodApp се свърже, той запомня своето „локално“и UTC време и изисква времевите маркировки на текущите графични данни на pfodDevice (платката Arduino). Използвайки тази информация, pfodApp може след това да начертае милисекундни часови марки като изминало време, т.е.конвертиране на милисекунди в часове минути секунди и т.н., или да нанесе дата и час, които милисекундните часови марки представляват спрямо времето, когато връзката е била осъществена и е поискано текущото време на pfodDevice.

Разглеждайки генерираната от Arduino скица (например pfodFeather52_dateplot.ino), има три малки бита код, които обработват Arduino страната на графиките.

Кодовата секция loop (), която обработва заявката за текущо време на pfodApp {@}

// обработваме {@} заявка} иначе ако ('@' == cmd) {// pfodApp иска 'текущо' време plot_mSOffset = millis (); // улавяне на текущите мили като отместване на необработените времеви марки на rawdata parser.print (F ("{@` 0} ")); // връща "0 като" текущи "необработени данни в милисекунди

Можете просто да върнете текущата стойност на millis (), но millis () се връща обратно до 0 на всеки 49,7 дни, което би накарало графиката да скочи назад. Така че вместо това кодът запомня текущата стойност на millis (), когато е направена {@} заявката, и връща {@`0}, т.е. текуща милисекундна времева отметка от нула. След това, когато изпращате точките rawdata, скицата използва

plot_1_var = analogRead (A0); // четене на въвеждане на график // plot_2_var plot Скрит, така че няма данни, зададени тук // plot_3_var plot Скрит, така че няма присвоени данни // изпращане на графични данни в CSV формат parser.print (millis ()-plot_mSOffset); // време в милисекунди ….

така че милисекундната времева марка, изпратена с данните, започва от 0 и се увеличава до 49.7 дни. Ако останете свързани непрекъснато в продължение на 49.7 дни, тогава ще видите, че сюжетът скача назад с ~ 50 дни. Прекъсването и повторното свързване веднъж на всеки 49,7 дни избягва това.

Третата част от графика за дата/час е съобщението на сюжета.

} else if ('A' == cmd) {// натиснат потребител - 'Дата/Час на A0' // в главното меню на Menu_1 // връщане на съобщение за начертаване. parser.print (F ("{= A0 Volts ~ E HH: mm: ss | date | A0 ~~~ Volts ||}"));

Когато потребителят натисне бутона „Дата/час график на A0“, pfodApp изпраща {A} cmd до pfodDevice и pfodDevice отговаря с графичното съобщение, {=… {= A0 волта ~ E HH: mm: ss | дата | A0 ~~~ Volts ||}, който съдържа формат на оста X E HH: mm: ss

Форматите на Java SimpleDateFormat са приемливи тук. Регистрирането и начертаването на данни на pfodApp и pfodSpecification.pdf имат повече подробности за съобщението за график.

Стъпка 7: Възпроизвеждане на графики за дата/час на вашия компютър

Възпроизвеждане на графики за дата/час на вашия компютър
Възпроизвеждане на графики за дата/час на вашия компютър
Възпроизвеждане на графики за дата/час на вашия компютър
Възпроизвеждане на графики за дата/час на вашия компютър
Възпроизвеждане на графики за дата/час на вашия компютър
Възпроизвеждане на графики за дата/час на вашия компютър

По подразбиране pfodApp записва всички входящи необработени данни в лог файл на вашия мобилен телефон, освен ако не сте деактивирали това регистриране в екрана за редактиране на връзката, вижте pfodAppForAndroidGettingStarted.pdf

Когато редактирате pfodApp, се показва кратко съобщение с местоположението и името на лог файла, напр. /pfodAppRawData/pfod_bluefruit52.txt Този файл е в CSV формат, разделен със запетая и след като го прехвърлите на компютъра си (вижте pfodAppForAndroidGettingStarted.pdf за опции за прехвърляне), можете да го отворите в електронна таблица, за да начертаете данните.

Ето първите няколко реда на лог файла.

// pfodApp V3.0.360, местно време, UTC, mS на ден, pfod bluefruit52 текущо време (mS), pfod bluefruit52 текущо време, // свързано на, 2019/04/20 11: 32: 50,238, 2019/04/20 01: 32: 50.238, 86400000, 0, 366, 0.25,, 1366, 0.29,, 2366, 0.31,, 3366, 0.33,, 4366, 0.33,, По -горе можете да видите „локалното“и UTC времето, което pfodApp е свързал с Feather52, и текущото време в mS, което Feather52 отчете чрез отговора {@..}. Последната колона е празна, тъй като няма RTC или GPS, така че Feather52 не отчита текущо време в гггг/MM/dd време.

За да начертаете данните спрямо изминалото време, извадете текущото време (mS) от милисекундната времева маркировка и след това разделете на mS на дневна стойност. Ето електронната таблица с добавена формула и начертан резултат. Електронната таблица по -долу (pfod_bluefruit52.xls) е електронна таблица на OpenOffice, запазена във формат Excel.

В OpenOffice, графикът е диаграма на разсейване и оста x на графиката е форматирана в HH: MM: SS Забележка: форматите за дата/час на електронната таблица НЕ са същите като форматите на графиките, използвани от pfodApp. Например в pfodApp, MM е месеци, а mm е минути.

За да начертаете дата и час, трябва само да добавите времето за връзка към часа на електронната таблица и да я пренастроите. (pfod_bluefruit52_date.xls)

Забележка: Местното време и UTC бяха импортирани като текст в електронната ми таблица, така че трябваше да премахна водещото ', преди да ги използвам във формула.

Стъпка 8: Как да избегнете лимита от 49,7 дни Millis () и защо не трябва

Както бе споменато по -горе в Как pfodApp изобразява дата/час от millis () ?, ако останете свързани непрекъснато за повече от 49,7 дни, милисекундните времеви марки ще се върнат обратно до нула. Няколко реда код могат да избегнат това, но това не се препоръчва.

Първо как да избегнете обвиването. Добавете друга променлива без знак int, за да следите колко пъти се увиват времевите марки и да отпечатате комбинирания резултат в HEX.

uint_t mSwrapCount = 0; uint32_t lastTimeStamp = 0;

… Plot_1_var = analogRead (A0); // четене на въвеждане на график // plot_2_var plot Скрит, така че тук не са присвоени данни // plot_3_var plot Скрит, така че няма присвоени данни // изпращане на графични данни във формат CSV uint32_t timeStamp = millis ()-plot_mSOffset; if (timeStamp <lastTimeStamp) {// timeStamp върнат на 0 mSwrapCount ++; // добавете един за броене} lastTimeStamp = timeStamp; parser.print ("0x"); parser.print (msWrapCount, HEX); parser.print (timeStamp, HEX); // време в милисекунди в HEX….

Когато връщате отговора {@.. изчистете и mSwrapCount.

// обработваме {@} заявка} иначе ако ('@' == cmd) {// pfodApp иска 'текущо' време plot_mSOffset = millis (); // улавяне на текущи милис като отместване на времеви отметки на rawdata mSwrapCount = 0; // изчистване на броя на обвивките. parser.print (F ("{@` 0} ")); // връща "0 като" текущи "необработени данни в милисекунди

Времевите маркировки сега ще дадат „правилната“стойност за следващите 40.7 дни * 65536 ~ = 7308 години.

pfodApp автоматично ще преобразува шестнадесетичните времеви марки за начертаване и ще ги регистрира точно както е получено, т.е. в шестнадесетичен. В електронната таблица (OpenOffice) използвате тази формула, за да преобразувате шестнадесетичния низ в A2 в mS (където A1 е всяка празна клетка) = HEX2DEC (ЗАМЕНИ (A2; 1; 2; A1))

Защо не искате да направите това

Както е показано по -горе, лесно е да удължите времевите марки на mS до повече от 50 дни. Вероятно обаче не искате да направите това, защото те стават все по-неточни. Типичен 16Mhz кристал, използван за създаване на millis (), води до микро с точност ~ 50ppm (части на милион). Това означава, че след 49,7 дни милисекундната времева отметка може да изчезне с 3 ½ минути и това пренебрегва влиянието на температурата върху точността на кристала.

При кратки периоди на свързване тази неточност не е проблем, тъй като отговорът {@.. повторно синхронизира милисекундната времева маркировка с датата/часа на мобилния телефон при всяко повторно свързване. Ако обаче искате да останете свързани за дълги периоди от време (дни) и непрекъснато да регистрирате данните, тогава трябва да използвате нещо по-точно от вградения millis (), като например RTC или GPS модул.

Стъпка 9: Използване на RTC (часовник в реално време)

Използване на RTC (часовник в реално време)
Използване на RTC (часовник в реално време)
Използване на RTC (часовник в реално време)
Използване на RTC (часовник в реално време)

Налични са редица RTC модули, един от по -точните е DS3231 напр. Модулът DS3231 на Adafruit. Посочената точност е +/- 2ppm при 0 до 40C. т.е. ~ +/- 5 сек/месец.

Ако искате да начертаете данни, които имат времеви отметки за дата/час, напр. 2019/04/19 20: 4: 34, тогава трябва да промените отговора {@, за да върнете текущата дата/час, напр. {@`0 ~ 2019/4/19 3: 33: 5}. Ето някои примерни промени в кода, които да се прилагат към генерираната от pfodDesigner скица за използване на RTC модул, ако приемем, че използвате библиотеката RTClib и сте добавили кода, инициализиращ RTC модула.

// обработваме {@} заявка} иначе ако ('@' == cmd) {// pfodApp иска 'текущо' време plot_mSOffset = millis (); // улавяне на текущи мили в размер на отместване на необработени данни времеви печати parser.print (F ("{@` 0 "}); // връщане на" 0 като "текущи" необработени данни милисекунди parser.print ('~'); // начален низ на дата/час DateTime сега = rtc.now () sendDateTime (& now); // изпращане на гггг/M/d/H: m: s до parser.print, пропуск адрес & като arg. parser.print ('}'); // край на {@ отговор например {@ `0 ~ 2019/4/19 3: 33: 5}….

// изпращане на дата и час до анализатора printvoid sendDateTime (DateTime* dt) {parser.print (dt-> година (), DEC); parser.print ('/'); parser.print (dt-> месец (), DEC); parser.print ('/'); parser.print (dt-> ден (), DEC); parser.print (''); parser.print (dt-> час (), DEC); parser.print (':'); parser.print (dt-> минута (), DEC); parser.print (':'); parser.print (dt-> втори (), DEC); }

void sendData () {if (plotDataTimer.isFinished ()) {plotDataTimer.repeat (); // рестартиране на таймера за данни за график, без дрейф // присвояване на стойности за начертаване на променливи от вашите циклични променливи или четене на ADC входове plot_1_var = analogRead (A0); // четене на въвеждане на график // plot_2_var plot Скрит, така че няма данни, присвоени тук // plot_3_var plot Скрит, така че няма данни, присвоени тук // изпращане на графични данни във формат CSV DateTime now = rtc.now (); sendDateTime (& сега); // изпращате yyyy/M/d/H: m: s до parser.print, адрес за преминаване & като arg. parser.print (','); parser.print (((float) (plot_1_var - plot_1_varMin)) * plot_1_scaling + plot_1_varDisplayMin); parser.print (','); // Парцел 2 е скрит. Не са изпратени данни. parser.print (','); // Парцел 3 е скрит. Не са изпратени данни. parser.println (); // край на записа на CSV данни}}

Частта ~ 2019/4/19 3: 33: 5 на отговора {@ позволява на pfodApp да знае какво мисли pfodDevice за текущата дата и час. След това вашата скица може да изпраща данни с времеви отметки yMd Hms и pfodApp ще ги начертае или като изтекло време от времето на връзката ИЛИ като дата и час, в зависимост от формата на оста X, който сте посочили.

Когато правите графики срещу дата и час, програмата за график на pfodApp коригира всяко „отклонение“в RTC, като сравнява отчетеното текущо време на pfodDevice с текущото време на мобилния телефон. Тази корекция също така управлява настройката на RTC на различна часова зона от локалната часова зона на вашия мобилен телефон. метките millis () продължават да работят, както в Използването на милисекунди на Arduino, стъпка 5 по -горе.

Ето примерна електронна таблица със стайни температури за период от 8 дни, Office_Temp.xls Когато регистрационният файл беше импортиран, първата колона беше маркирана като YMD, за да преобразува текста в дата/час. Все още трябва да премахнете водещите от формата за местното време, UTC и записите за текущото време на Office, за да може електронната таблица да ги интерпретира като дати и часове.

За да получите същия график, който показва pfodApp, трябва да изчислите „Коригирана дата/час“. В този случай времето за RTC е 2 секунди зад местното време на мобилния телефон, така че към всяка времева отметка за RTC се добавя (местно време - текущо време на Office Temp), за да се получи истинското местно време.

За графици за изтекло време, създайте нова колона, съдържаща (дата/час timstamp-текущото време на Office Time) и я използвайте като оста X в диаграмата (Office_TempElapsed.xls) Всъщност в този случай pfodApp създава по-хубави изминали графики в дни ч: мин: сек.

Стъпка 10: Използване на GPS модул

Използването на GPS модул е подобно на използването на RTC модул, с изключение на това, че GPS модулите имат налични милисекунди, годините започват от 2000 г. и времето липсва скоковите секунди UTC (вижте https://tycho.usno.navy.mil/leapsec.html) Датата и часът на GPS в момента са 18 секунди преди UTC, към януари 2018 г.

GPS библиотеката на Adafruit за Adafruit Ultimate GPS, за разлика от RTClib, не добавя отместването на 2000 г. към годините на GPS, така че това трябва да се добави, когато изпращате дата и час. Също така, въпреки че GPS библиотеката доставя милисекунди, които имат много добра дългосрочна точност, те не са много точни. Актуализациите на GPS времето са само веднъж на всеки 100 mS и след това има допълнително забавяне при получаване на серийните данни на бавни 9600 бода и друго забавяне при анализирането им. Всичко това допринася за милисекундната прецизност при отчитане на данни за отчитане на времето.

Ето някои примерни промени в кода, които да приложите към генерираната от pfodDesigner скица за използване на GPS модул, ако приемете, че използвате GPS библиотеката на Adafruit и сте добавили кода за получаване и анализиране на съобщенията в GPS обект.

// обработваме {@} заявка} иначе ако ('@' == cmd) {// pfodApp иска 'текущо' време plot_mSOffset = millis (); // улавяне на текущи милис като отместване на необработените времеви марки на rawdata parser.print (F ("{@` 0 "}); // връща" 0 като "текущи" необработени данни милисекунди parser.print ('~'); // начален низ на дата/час sendDateTime (& GPS); // изпращане на гггг/M/d/H: m: s до parser.print, адрес за преминаване & като arg. parser.print ('}'); // край на {@ отговор напр. {@`0 ~ 2019/4/19 3: 33: 5}….

// изпращане на дата и час до анализатора printvoid sendDateTime (Adafruit_GPS* gps) {parser.print (F ("20"); // 20.. година parser.print (gps-> година, DEC); parser.print ('/ '); parser.print (gps-> месец, DEC); parser.print ('/'); parser.print (gps-> ден, DEC); parser.print (' '); parser.print (gps- > час, DEC); parser.print (':'); parser.print (gps-> минута, DEC); parser.print (':'); parser.print (gps-> секунда, DEC); // parser.print ('.'); ако изпращате милисекунди // ако искате да изпратите mS, трябва да подплатите стойността gps-> милисекунди с водещи нули // т.е. 3 трябва да се допълнят до 003}

void sendData () {if (plotDataTimer.isFinished ()) {plotDataTimer.repeat (); // рестартиране на таймера за данни за график, без дрейф // присвояване на стойности за начертаване на променливи от вашите циклични променливи или четене на ADC входове plot_1_var = analogRead (A0); // четене на въвеждане на график // plot_2_var plot Скрит, така че няма данни, присвоени тук // plot_3_var plot Скрит, така че няма данни, присвоени тук // изпращане на графични данни във формат CSV sendDateTime (& GPS); // изпращате yyyy/M/d/H: m: s до parser.print, адрес за преминаване & като arg. parser.print (','); parser.print (((float) (plot_1_var - plot_1_varMin)) * plot_1_scaling + plot_1_varDisplayMin); parser.print (','); // Парцел 2 е скрит. Не са изпратени данни. parser.print (','); // Парцел 3 е скрит. Не са изпратени данни. parser.println (); // край на записа на CSV данни}}

Когато правите графики срещу дата и час, pfodApp автоматично коригира за високосни секунди. Към януари 2018 г. GPS времето е с 18 секунди преди UTC. pfodApp коригира това, като сравнява датата/часа, върната от GPS при свързване, чрез {@ отговор, спрямо датата и часа на мобилния телефон. Създаването на графики в електронна таблица от регистрационния файл на pfodApp е същото като за RTC модулите, по -горе. Добавянето на (местно време - текущо време на Office Office) към часовите марки на GPS коригира високосните секунди.

метките millis () продължават да работят, както в Използването на милисекунди на Arduino, стъпка 5 по -горе.

Стъпка 11: Заключение

Използването на pfodApp на вашия мобилен телефон с Android ви позволява да нанасяте данни спрямо дата и час или изминало време, като използвате само функцията millis () на Arduino. Използвайки регистрационния файл на pfodApp, можете да пресъздадете тези графики за дата/час в електронна таблица. Ако вашият проект Arduino има RTC модул, можете да регистрирате и начертаете дата и времеви марки на RTC, като автоматично коригирате „дрейфа“на RTC. Ако вашият проект Arduino има GPS модул, можете да регистрирате и начертаете неговите много точни часови марки и pfodApp автоматично ще коригира липсващите високосни секунди на GPS.

Във всички случаи необработените данни от вашия проект Arduino се регистрират точно както са получени, некоригирани. Журналният файл на pfodApp обаче включва допълнителни данни, които ви позволяват да създадете отново тези корекции в електронна таблица от изтегления регистрационен файл.

Не се изисква кодиране на Android. Графичните формати се определят от малки текстови низове във вашата скица на Arduino. Безплатният pfodDesigner генерира цялостно архивиране и скициране на Arduino данни за голямо разнообразие от платки Arduino, свързващи се чрез WiFi, класически Bluetooth, BLE и SMS

Препоръчано: