Сиздин Arduino орнотулган EEPROM: 6 кадам
Сиздин Arduino орнотулган EEPROM: 6 кадам
Anonim
Сиздин Arduinoңуздун курулган EEPROM
Сиздин Arduinoңуздун курулган EEPROM

Бул макалада биз Arduino такталарыбыздагы ички EEPROMду карап чыгабыз. Кээ бирлериңиз EEPROM деген эмне? EEPROM-бул электр менен өчүрүлүүчү программалуу окуу үчүн гана эстутум.

Бул өчүрүлбөгөн эстутумдун бир түрү, ал өчүрүлгөн нерселерди эстей алат, же Arduino баштапкы абалга келтирилгенден кийин. Мындай эс тутумдун кооздугу - биз эскиздин ичинде түзүлгөн маалыматтарды туруктуу негизде сактай алабыз.

Эмне үчүн ички EEPROMду колдоносуз? Жагдайга мүнөздүү болгон маалыматтар туруктуу үйгө муктаж болгон жагдайлар үчүн. Мисалы, уникалдуу сериялык номерди жана коммерциялык Arduino долбоорунун өндүрүш датасын сактоо-эскиздин функциясы сериялык номерди ЖКда көрсөтө алат, же маалыматтарды "кызмат эскизин" жүктөө аркылуу окууга болот. Же кээ бир окуяларды санап, колдонуучунун аларды баштапкы абалга келтирүүсүнө жол бербешиңиз керек болот-мисалы, одометр же операция цикли-эсептегич.

1 -кадам: Кандай маалыматтарды сактоого болот?

Кандай маалыматтарды сактоого болот?
Кандай маалыматтарды сактоого болот?

Дайындардын байттары катары көрсөтүлүүчү нерселердин баары. Бир байт маалымат сегиз бит маалыматтан турат. Бит күйүк (1) же өчүк (0 мааниси) болушу мүмкүн жана сандарды бинардык түрдө көрсөтүү үчүн идеалдуу. Башкача айтканда, экилик сан бир маанини көрсөтүү үчүн нөлдөрдү жана бирдиктерди гана колдоно алат. Ошентип бинардык "base-2 ″" деп да аталат, анткени ал эки цифраны гана колдоно алат.

Кантип эки цифраны колдонуу менен экилик сан чоң сандарды билдирет? Бул көп жана нөлдөрдү колдонот. Келгиле, экилик санды карап көрөлү, айталы 10101010. Бул базалык-2 сан болгондуктан, ар бир цифра xтин күчүнө чейин 2ди билдирет, x = 0 баштап.

2-кадам:

Сүрөт
Сүрөт

Бинардык сандын ар бир цифрасы базалык-10 санын кантип көрсөтөөрүн караңыз. Ошентип, жогорудагы бинардык сан база-10до 85ти билдирет-85 мааниси база-10 маанилеринин суммасы. Дагы бир мисал - 11111111 бинардык 10 базада 255 барабар.

3 -кадам:

Эми ошол экилик сандын ар бир цифрасы бир "бит" эс тутумун колдонот жана сегиз бит байт түзөт. Ардуино такталарыбыздагы микроконтроллерлердин ички чектөөлөрүнө байланыштуу, биз EEPROMдо 8-бит сандарды (бир байт) гана сактай алабыз.

Бул сандын ондук маанисин нөлдөн 255ке чейин чектейт. Бул сиздин маалыматтарыңыз ошол сандар диапазону менен кантип көрсөтүлөөрүн өзүңүз чечесиз. Буга жол бербеңиз - туура жол менен жайгаштырылган сандар дээрлик бардыгын чагылдыра алат! Көңүл бурууга бир чектөө бар - EEPROMго канча жолу окуп же жаза алабыз. Атмелдин айтымында, EEPROM 100 000 окуу/жазуу циклдери үчүн жакшы (маалымат барагын караңыз).

4 -кадам:

Эми биз биттерибизди жана байттарыбызды билебиз, биздин Arduino микроконтроллеринде канча байтты сактоого болот? Жооп микроконтроллердин моделине жараша өзгөрөт. Мисалы:

  • Armelino Uno, Uno SMD, Nano, Lilypad ж.б. сыяктуу Atmel ATmega328 такталары - 1024 байт (1 килобайт)
  • Armelino Mega сериясы сыяктуу Atmel ATmega1280 же 2560 менен такталар - 4096 байт (4 килобайт)
  • Atmel ATmega168 менен такталар, мисалы, түпнуска Arduino Lilypad, эски Nano, Diecimila ж.б. - 512 байт.

Эгер ишенбесеңиз, Arduino аппараттык индексин карап көрүңүз же тактаңыздын жеткирүүчүсүнөн сураңыз. Эгерде сизге микроконтроллериңизге караганда көбүрөөк EEPROM сактагычы керек болсо, тышкы I2C EEPROMду колдонууну ойлонуп көрүңүз.

Бул жерде биз азыр Arduino EEPROMдо кандай маалыматтарды жана канча сактоого болорун түшүнөбүз. Эми муну ишке ашырууга убакыт келди. Жогоруда айтылгандай, биздин маалыматтар үчүн чектелген мейкиндик бар. Төмөнкү мисалдарда биз ATmega328 менен 1024 байт EEPROM сактагычы бар типтүү Arduino тактасын колдонобуз.

5 -кадам:

EEPROMду колдонуу үчүн китепкана керек, андыктан эскиздериңизде төмөнкү китепкананы колдонуңуз:

#"EEPROM.h" кошуу

Калгандары абдан жөнөкөй. Маалыматтардын бир бөлүгүн сактоо үчүн, биз төмөнкү функцияны колдонобуз:

EEPROM.write (a, b);

Параметр а - EEPROMдагы b бүтүндүгүн (0 ~ 255) сактоо позициясы. Бул мисалда бизде 1024 байт эс тутуму бар, андыктан a мааниси 0дөн 1023кө чейин. Маалыматтын бир бөлүгүн алуу үчүн бирдей жөнөкөй, колдонуңуз:

z = EEPROM.read (a);

Бул жерде z - EEPROM позициясындагы маалыматтарды сактоо үчүн бүтүн сан a. Эми мисалды көрөлү.

6 -кадам:

Сүрөт
Сүрөт

Бул эскиз 0ден 255ке чейинки туш келди сандарды түзүп, EEPROMдо сактайт, андан кийин аларды сериялык монитордо көрсөтөт. EEsize өзгөрмөсү сиздин EEPROM өлчөмүңүздүн жогорку чеги, андыктан (мисалы) бул Arduino Uno үчүн 1024, же Мега үчүн 4096 болмок.

// Arduino ички EEPROM демонстрациясы

#кошуу

int zz; int EEsize = 1024; // өлчөмү тактаңыздын EEPROM байтында

жараксыз орнотуу ()

{Serial.begin (9600); randomSeed (analogRead (0)); } void loop () {Serial.println ("Туш келди сандарды жазуу…"); for (int i = 0; i <EEsize; i ++) {zz = random (255); EEPROM.write (i, zz); } Serial.println (); for (int a = 0; a <EEsize; a ++) {zz = EEPROM.read (a); Serial.print ("EEPROM позициясы:"); Serial.print (a); Serial.print ("камтыйт"); Serial.println (zz); кечигүү (25); }}

Сүрөттө көрсөтүлгөндөй сериялык монитордон чыгуу пайда болот.

Демек, биздин Arduino системалары менен маалыматтарды сактоонун дагы бир пайдалуу жолу бар. Эң кызыктуу үйрөткүч болбосо да, албетте, пайдалуу.

Бул билдирүү сизге pmdway.com тарабынан келген - бүткүл дүйнө жүзү боюнча бекер жеткирүү менен, өндүрүүчүлөр жана электроника ышкыбоздору үчүн.

Сунушталууда: