Yuav Khaws Cov Ntaub Ntawv Hauv Arduino Li Cas

Cov txheej txheem:

Yuav Khaws Cov Ntaub Ntawv Hauv Arduino Li Cas
Yuav Khaws Cov Ntaub Ntawv Hauv Arduino Li Cas

Video: Yuav Khaws Cov Ntaub Ntawv Hauv Arduino Li Cas

Video: Yuav Khaws Cov Ntaub Ntawv Hauv Arduino Li Cas
Video: qhia ntaub liab ua nphau li cas los saib 2024, Plaub Hlis Ntuj
Anonim

Arduino boards muaj ntau hom kev nco. Ua ntej, nws yog zoo li qub RAM (random nkag nco), uas yog siv los khaws cov hloov pauv thaum lub sijhawm ua haujlwm. Qhov thib ob, nws yog lub cim xeeb flash uas khaws cov sketches uas koj tau sau. Thiab qhov thib peb, nws yog EEPROM uas tuaj yeem siv mus rau cov ntaub ntawv mus tas li. Thawj hom kev nco yog qhov tsis tuaj yeem, nws poob tag nrho cov ntaub ntawv tom qab rov pib dua Arduino. Qhov thib ob ob hom ntawm lub cim xeeb khaws cia cov ntaub ntawv kom txog thaum nws yog overwritten nrog ib qho tshiab, txawm tias tom qab fais fab tua. Hom kawg ntawm kev nco - EEPROM - tso cai rau cov ntaub ntawv sau, khaws thiab nyeem raws li xav tau. Peb yuav xav txog qhov kev nco no tam sim no.

Khaws cov ntaub ntawv hauv EEPROM Arduino
Khaws cov ntaub ntawv hauv EEPROM Arduino

Tsim nyog

  • - Arduino;
  • - khoos phis tawj.

Cov Lus Qhia

Kauj ruam 1

EEPROM sawv rau Kev Xaiv Hluav Taws Xob Uas Muaj Kev Lom Zem Nyeem Hauv Lub Cev Xwb, i.e. hluav taws xob erasable nyeem nkaus-tsuas nco. Cov ntaub ntawv nyob rau hauv lub cim xeeb no tuaj yeem khaws cia rau kaum xyoo tom qab fais fab tuag tau kaw. Tus lej ntawm kev rov ua dua phaum yog nyob ntawm qhov kev txiav txim ntawm ntau lab lub sijhawm.

Tus nqi ntawm EEPROM nco nyob rau hauv Arduino theej tsuas yog: rau cov laug cam raws ATmega328 microcontroller (piv txwv li, Arduino UNO thiab Nano), qhov nyiaj nco yog 1 KB, rau ATmega168 thiab ATmega8 cov laug cam - 512 bytes, rau ATmega2560 thiab ATmega1280 - 4 KB.

Kauj ruam 2

Txhawm rau ua haujlwm nrog EEPROM rau Arduino, lub tsev qiv ntawv tshwj xeeb tau sau, uas tau suav nrog Arduino IDE los ntawm lub neej ntawd. Cov tsev qiv ntawv muaj cov qauv zoo li hauv qab no.

nyeem (chaw nyob) - nyeem 1 byte los ntawm EEPROM; chaw nyob - qhov chaw nyob uas cov ntaub ntawv nyeem los ntawm (cell pib los ntawm 0);

sau (chaw nyob, tus nqi) - sau cov nqi teev (1 byte, tus naj npawb ntawm 0 txog 255) kom nco txog ntawm chaw nyob chaw nyob;

hloov kho (chaw nyob, tus nqi) - hloov cov nqi ntawm qhov chaw nyob yog tias nws cov ntsiab lus qub txawv ntawm qhov tshiab;

tau (chaw nyob, cov ntaub ntawv) - nyeem cov ntaub ntawv ntawm hom kev sau tseg los ntawm cim xeeb ntawm chaw nyob;

tso (chaw nyob, cov ntaub ntawv) - sau cov ntaub ntawv ntawm hom kev ntaus kis las kom nco qab ntawm qhov chaw nyob;

EEPROM [chaw nyob] - tso cai rau koj siv "EEPROM" tus cim los ua tus lej sau cov ntaub ntawv rau thiab nyeem los ntawm nco.

Txhawm rau siv chav qiv ntawv nyob rau hauv cov duab kos, peb suav nrog nws nrog #include EEPROM.h kev taw qhia.

Kauj ruam 3

Cia peb sau ob tus lej rau EEPROM thiab tom qab ntawd nyeem lawv los ntawm EEPROM thiab tsim tawm lawv mus rau qhov chaw nres nkoj serial.

Tsis muaj teeb meem dab tsi nrog cov lej ntawm 0 txog 255, lawv nyob tsuas yog 1 byte ntawm lub cim xeeb thiab raug sau rau qhov chaw xav tau siv EEPROM.write () muaj nuj nqi.

Yog tias tus lej loj dua 255, tom qab ntawd siv cov neeg siv ua haujlwm highByte () thiab lowByte () nws yuav tsum tau faib los ntawm bytes thiab txhua byte yuav tsum sau rau nws tus kheej ntawm tes. Tus naj npawb siab tshaj plaws hauv qhov no yog 65536 (lossis 2 ^ 16).

Saib, cov chaw nres nkoj txog kab hauv xov tooj ntawm tes 0 tsuas yog qhia tus naj npawb tsawg dua 255. Hauv cov hlwb 1 thiab 2, cov naj npawb loj yog 789. (piv txwv li 789 = 3 * 256 + 21). Txhawm rau rov ua dua tus lej loj, faib rau hauv bytes, muaj lo lus () ua haujlwm: int val = lo lus (hi, qis), qhov twg hi thiab qis yog qhov tseem ceeb ntawm qib siab thiab qis bytes.

Hauv txhua cov ntawm lwm lub hlwb uas peb tsis tau sau dua ib zaug, 255 yog khaws cia.

Sau cov zauv rau EEPROM Arduino
Sau cov zauv rau EEPROM Arduino

Kauj ruam 4

Txhawm rau sau cov lej ntab thiab cov hlua, siv EEPROM.put () kev, thiab nyeem, siv EEPROM.get ().

Hauv kev teeb tsa () tus txheej txheem, peb xub sau cov kab kis ntaws tus naj npawb f. Tom qab ntawd peb tsiv los ntawm tus naj npawb ntawm lub cim xeeb hlwb uas cov hom ntab nyob, thiab sau cov hlua char uas muaj peev txheej ntawm 20 hlwb.

Nyob rau hauv lub voj () tus txheej txheem peb yuav nyeem tag nrho cov cim xeeb ntawm lub hlwb thiab sim ua decrypt lawv thawj ua "ntab" hom, thiab tom qab ntawd ua "char" hom, thiab tso tawm qhov txiaj ntsig mus rau qhov chaw nres nkoj serial.

Koj tuaj yeem pom tias tus nqi hauv hlwb 0 txog 3 raug muab txhais kom raug raws li tus naj npawb ntab, thiab pib ntawm 4 - raws li txoj hlua.

Qhov txiaj ntsig ntawm ovf (txeej dhau) thiab nan (tsis yog tus lej) qhia tias tus lej tsis tuaj yeem hloov kho tsis raug rau ib tus lej ntab. Yog tias koj paub tseeb tias hom ntaub ntawv twg lub hlwb khaws cia nyob, ces koj yuav tsis muaj teeb meem.

Sau cov xov tooj ntab thiab cov hlua mus rau EEPROM Arduino
Sau cov xov tooj ntab thiab cov hlua mus rau EEPROM Arduino

Kauj ruam 5

Ib qhov yooj yim heev yog xa mus rau lub hlwb nco raws li cov khoom ntawm EEPROM array. Hauv cov duab kos no, hauv kev teeb tsa () tus txheej txheem, peb yuav sau thawj cov ntaub ntawv rau thawj 4 bytes, thiab nyob rau hauv lub voj () cov txheej txheem, txhua feeb peb yuav nyeem cov ntaub ntawv los ntawm txhua lub hlwb thiab tso tawm lawv mus rau qhov chaw nres nkoj serial.

Pom zoo: