Кіріспе
Бұл мақалада біз VEX роботына VEX миымен деректерді жинауды және деректерді талдау үшін SD картасында CSV файлында сақтауды нұсқайтын деректерді тіркеу жобасын қалай жасау керектігін талқылаймыз.
Деректерді тіркеу - бұл ғылыми зерттеулерге көмектесу, өз тәжірибелерімізді жүргізу және нақты мәселелерді шешу үшін пайдалана алатын қуатты құрал. Біз VEX роботын деректерді тіркеу арқылы орындауға болатын әртүрлі қызықты және қызықты тапсырмалар бар. Төменде кейбір мысалдар келтірілген:
- Роботтың жылдамдығын есептеу үшін қашықтық сенсорымен деректерді жинау
- Роботты сыныпта айдау және әртүрлі орындардағы жарық өзгерістерін бақылау үшін оптикалық сенсор арқылы деректерді жинау.
- Роботты шытырман оқиғаға апару және GPS жазу карта жасау үшін деректерді үйлестіреді.
Деректерді тіркеу жобасын әзірлеу үшін қажет кодтау дағдылары
- VEX Brain/Sensors көмегімен деректерді жинау және оны деректер құрылымына қосу үшін әртүрлі пәрмендерді пайдаланыңыз.
- Деректерді SD картасындағы үтірмен бөлінген мәндер (CSV) файлына жазыңыз.
Деректерді тіркеу үшін қажетті жабдық:
- VEX миы (IQ, V5, EXP)
- SD картасы
- Сенсор немесе бірнеше сенсорлар (қажетті деректерге сәйкес қосымша)
Сенсордан деректерді алу
Біз VEX роботын (IQ, V5, EXP) келесі сенсорлардан деректерді алу үшін бағдарламалай аламыз:
- Инерциялық сенсор
- Қашықтық сенсоры
- Оптикалық сенсор
- Көру сенсоры
- Айналу сенсоры (V5, EXP)
- GPS сенсоры (V5)
Ескертпе: VEX IQ (2-буын) миы мен VEX EXP миында инерциялық сенсор орнатылған. Біз осы VEX Brians көмегімен инерциялық сенсор деректерін жинай аламыз.
Бұл мақалада біз VEX IQ Brain (2-ші) көмегімен жеделдету деректерін жинайтын және оны SD картасына сақтайтын деректерді тіркеу жобасын әзірлейміз.
Біріншіден, VEX IQ миында (2-ші) орнатылған таймер мен инерциялық сенсордан көрсеткіштерді алу үшін қысқа бағдарлама жазу керек.
- Бұл бағдарламаның басында бізге VEX IQ Brain (2-ші) басқару және одан деректерді алу үшін Python модульдерін импорттау қажет болады. Осылайша, осы нұсқауларды жобаға қосу арқылы бастаңыз.
- Әрі қарай, жазуға арналған деректер жазбаларының санын сақтау үшін
numOfDataEntries
айнымалы мәнін жариялау үшін кодты қосыңыз, деректерді оқуға арналған уақыт аралығының мәнін сақтау үшінpolling_delay_msec
айнымалы мәнін жариялаңыз және сақтау үшін бос жол айнымалысынdata_buffer
жасаңыз. сенсордан оқылатын деректер. - Уақыт белгісін деректерге қосу үшін Таймердің ағымдағы мәнін пайдаланатындықтан, деректерді жинауды бастамас бұрын таймер мәнін 0 секундқа қайта орнатуымыз керек.
- VEX IQ миынан (2-ші) деректерді алатын және буфердегі деректерді жазатын нұсқауды қолданбас бұрын, алдымен оны түсінуіміз керек.
Келесі нұсқау ағымдағы таймер мәнін нақты пішімдегіdata_buffer
айнымалысына қосады.“%1.3f”
пішім жолын бөлейік:- “%”: түрлендіру спецификаторын енгізеді.
- «1»: жолда болатын цифрлардың ең аз санын көрсетеді
- “.3”: пішімделген санға қосылатын ондық таңбалардың санын көрсетеді.
- “f”: пішімделетін мән өзгермелі нүктелі сан екенін көрсетеді.
Осылайша, біз «%1.3f» пішім жолын ең аз ені 1 цифр және 3 ондық таңба дәлдігі бар өзгермелі нүктелі санды пішімдеу үшін пайдалана аламыз.
- Енді біз VEX IQ миында (2-ші) орнатылған инерциялық сенсордың Таймерді және үдеу мәнін оқи аламыз, содан кейін деректерді көрсетілген пішімде
data_buffer
айнымалысына қоса аламыз.Ескертпе: “\n” – Жаңа жол таңбасы. Ол жолдың осы жерде аяқталатынын және жаңа жолдың басын көрсетеді.
- Содан кейін,
data_buffer
айнымалысына деректер жазбаларының белгілі бір санын жазу үшін, деректерді алатын нұсқауларды қайталап орындау және деректерді бірнеше итерациялар үшінdata_buffer
айнымалысына қосу үшінfor циклін
пайдалана аламыз. Біздің стратегиямыз итерациялар санын анықтау үшінnumOfDataEntries
айнымалы мәнін пайдалану болып табылады.
- Әзірге біздің бағдарлама деректерді мүмкіндігінше жылдам жазады. Дегенмен, біз белгілі бір уақыт аралықтарында деректерді жазғымыз келеді. Сондықтан, біз екі оқу арасындағы нақты уақыт аралығын қосу үшін бағдарламаны кідірту үшін
for циклінде
циклдеwait()
функциясын пайдалана аламыз. Уақыт аралығының мәнін анықтау үшінpolling_delay_msec
айнымалысының мәнін қолданамыз.
Құттықтаймыз! Біз VEX миында орнатылған инерциялық сенсордан көрсеткіштерді (жеделдеу деректерін) алу үшін бағдарламаны аяқтадық. Әрі қарай, деректерді SD картасындағы CSV файлына қалай жазу керектігін қарастырамыз.
SD картасын VEX миына бекіту
Деректерді SD картасындағы файлға жазбас бұрын, алдымен SD картасын VEX Brain SD картасы ұясына салыңыз.
Ескертпе: Деректерді жазу үшін SD картасын FAT32 форматына пішімдеңіз. Өлшемі 32 ГБ немесе одан аз SD карталарын пайдалануды ұсынамыз.
SD картасындағы файлға деректерді жазу тиісті жағдайларда орындалуы мүмкін екеніне көз жеткізу үшін SD картасының VEX IQ миына (2-ші) дұрыс салынғанын тексеру үшін код қосу керек.
- SD картасының салынғанын тексеру үшін
brain.sdcard.is_inserted()
функциясын пайдаланыңыз. SD картасы салынбаған болса, VEX IQ ми экранында сәйкес хабарды көрсетіп, бағдарламаны ұстап тұрыңыз.
Ескертпе:brain.sdcard.is_inserted()
функциясы SD картасы миға салынған болса, True мәнін қайтарады.
Деректерді SD картасындағы CSV файлына жазу
Әзірге біздің бағдарлама VEX IQ миы арқылы деректерді жинай алады (2-ші). Деректерді тіркеу жобасын аяқтау үшін деректерді болашақта тексеру және талдау үшін SD картасындағы үтірмен бөлінген мәндер (CSV) файлына жазуымыз керек.
- CSV файлына деректердің әртүрлі түрлерін жазғанда, біз әр бағандағы деректер түрін білгіміз келеді. Бұл әрекетті орындау үшін, деректерді жазу алдында CSV тақырыбы мәтінін
data_buffer
айнымалысына қоса аламыз.
Осылайша, CSV файлының баған атауларын көрсету үшін CSV тақырыбы мәтінін сақтау үшінcsvHeaderText
айнымалы мәнін жариялау үшін кодты қосыңыз және CSV файлының атын сақтау үшінsd_file_name
айнымалы мәнін жариялаңыз. SD картасы.
Ескертпе: Тақырыптардың data_buffer
айнымалысында сақталған деректермен бірдей тәртіпте екенін тексеріңіз.
- Одан кейін CSV тақырыбы мәтінін деректерді жинауға арналған
data_buffer
жолына қосыңыз.
- SD картасындағы файлға деректерді жазбас бұрын, алдымен
brain.sdcard.savefile()
функциясын қалай пайдалану керектігін түсінейік.
Бұл нұсқаулықdata_buffer
айнымалысында сақталған деректерді SD картасындағы атаулы CSV файлына жазады.
Бөліп көрейік:-
brain.sdcard.savefile(): Функция SD картасындағы атаулы файлға байт массивін сақтайды. Функция файлға жазылған байттардың санын қайтарады.
-
sd_file_name: Функцияның бірінші параметрі. Жазылатын файлдың атын көрсетеді. Бұл жобада файл атауы
sd_file_name айнымалысында сақталады.
-
bytearray(datat_buffer,'utf-8'): Функцияның екінші параметрі. Файлға жазылатын байт массивін көрсетеді.
-
- bytearray(): Бұл әдіс өзгермелі байт массивін жасайды. Бұл нұсқаулықта біз оны кодтауды көрсету арқылы жолды байт массивіне түрлендіру үшін қолданамыз.
- data_buffer: әдістің бірінші параметрі. Байтер массивіне түрлендірілетін көзді көрсетеді. Бұл жобада дереккөз
data_buffer айнымалысында сақталған деректер болып табылады.
- 'utf-8': әдістің екінші параметрі. Жолды кодтау үшін пайдаланылатын көрсетілген кодтауды көрсетеді. Бұл нұсқаулықта кодтау «utf-8» болып табылады.
-
-
- Деректерді жинауға арналған
for
циклінен кейін SD картасындағы CSV файлынаdata_buffer
айнымалысында сақталған деректерді жазу үшінbrain.sdcard.savefile()
функциясын пайдаланыңыз. Оған қоса, деректердің файлға сәтті жазылғанын тексеру үшінbrain.sdcard.savefile()
функциясынан қайтарылатын мәнді тексеру үшін кодты қосыңыз және нақты ақпарат алу үшін VEX IQ ми экранында сәйкес хабарды көрсетіңіз. уақыт бойынша кері байланыс.
Ескертпе:brain.sdcard.savefile()
функциясы файлға жазылған байттардың санын қайтарады. Бұл жобада біз оны жиналған деректерді CSV файлына жазу үшін қолданамыз, сондықтан файлға жазылған байттардың саны нөлден көп болуы керек. Басқаша айтқанда,brain.sdcard.savefile()
функциясы 0 мәнін қайтарса, деректер файлға сәтті жазылмаған деген қорытынды жасауға болады. Әйтпесе, деректер файлға жазылған.
Құттықтаймыз! Біз VEX IQ Brain (2-ші) көмегімен жеделдету деректерін жинайтын және оны SD картасындағы CSV файлында сақтайтын деректерді тіркеу жобасын әзірледік. Әрі қарай, деректерді талдау үшін CSV файлын ашу жолын қарастырамыз.
Деректерді талдау үшін CSV файлын ашу
Деректер SD картасындағы CSV файлына жазылғаннан кейін біз деректерді оқу және талдау үшін файлды ашу үшін электрондық кесте қолданбасын пайдалана аламыз.
Ескертпе: Ең кең тараған екі электрондық кесте қолданбасы - Google Sheets және Microsoft Excel. Бұл мақалада SD картасында CSV файлын ашу үшін Google Sheets (веб-негізінде) қолданамыз. Басқа қолданбаларды пайдалану процесі ұқсас.
- SD картасын VEX IQ Brain SD картасы ұясынан шығарып алыңыз. Егер компьютерде кірістірілген Micro SD картасы ұясы болса, SD картасын тікелей сол ұяға салуға болады. Әйтпесе, SD картасын SD картасы адаптеріне салыңыз, содан кейін адаптерді компьютерге қосыңыз.
- Google есептік жазбамызға кіріп, Google Sheets ашыңыз. Жаңа электрондық кесте жасаңыз.
- Электрондық кестеде «Файл» мәзірін ашыңыз, «Импорттау» -> «Жүктеп салу» -> «Шолу» түймешігін таңдаңыз, содан кейін компьютердегі CSV файлын таңдаңыз. CSV файлын жүктеп салғаннан кейін «Деректерді импорттау» түймесін басыңыз. Деректерді импорттағаннан кейін CSV файлында жиналған деректерді көру үшін «Қазір ашу» түймесін басыңыз.
- (Қосымша) Деректерді талдаудың бір оңай жолы - график салу, содан кейін деректердегі үрдістерді іздеу. Электрондық кестеде CSV файлындағы деректерді пайдаланып график салу үшін «Insert» мәзірін ашыңыз және «диаграмма» таңдаңыз. Келесі график VEX IQ миымен (2-ші) жиналған жеделдету деректерінің нәтижесі болып табылады.
Ескертпе: Біз Диаграмма өңдегішін басқа Диаграмма түрін таңдау немесе қажеттіліктерімізге қарай диаграмманы өңдеу үшін пайдалана аламыз.
Осы уақытқа дейін біз VEX IQ миымен (2-ші) деректерді жинайтын және оны SD картасындағы CSV файлында сақтайтын деректерді тіркеу жобасын аяқтадық. Сондай-ақ, біз Google Sheets көмегімен SD картасындағы CSV файлын оқуды және одан әрі талдау үшін графикті жасауды үйрендік. Әрі қарай ше? Келіңіздер, өзгермелі қоршаған орта факторларының деректердің әртүрлі түрлеріне қалай әсер ететінін бақылау және айналамыздағы әлемді тереңірек түсіну үшін деректерді тіркеу үшін VEX роботын пайдалана отырып, қызықты эксперименттерді жоспарлауға тырысайық.