Სარჩევი:

თქვენი Arduino– ს ჩაშენებული EEPROM: 6 ნაბიჯი
თქვენი Arduino– ს ჩაშენებული EEPROM: 6 ნაბიჯი

ვიდეო: თქვენი Arduino– ს ჩაშენებული EEPROM: 6 ნაბიჯი

ვიდეო: თქვენი Arduino– ს ჩაშენებული EEPROM: 6 ნაბიჯი
ვიდეო: Octopus Max EZ v1.0 - EZ2130 2024, ნოემბერი
Anonim
თქვენი Arduino– ს ჩაშენებული EEPROM
თქვენი Arduino– ს ჩაშენებული EEPROM

ამ სტატიაში ჩვენ ვაპირებთ შეისწავლოს შიდა EEPROM ჩვენს Arduino დაფებში. რას ნიშნავს ზოგიერთი თქვენგანი EEPROM? EEPROM არის ელექტრონულად წაშლადი პროგრამირებადი მხოლოდ წაკითხული მეხსიერება.

ეს არის არასტაბილური მეხსიერების ფორმა, რომელსაც შეუძლია დაიმახსოვროს საგნები გამორთული ენერგიით, ან არდუინოს გადატვირთვის შემდეგ. ამგვარი მეხსიერების სილამაზე იმაში მდგომარეობს, რომ ჩვენ შეგვიძლია შევინახოთ ესკიზში გენერირებული მონაცემები უფრო მუდმივ საფუძველზე.

რატომ გამოიყენებ შიდა EEPROM- ს? იმ სიტუაციებისთვის, როდესაც მონაცემებს, რომლებიც უნიკალურია სიტუაციისთვის, სჭირდება უფრო მუდმივი სახლი. მაგალითად, Arduino– ზე დაფუძნებული კომერციული პროექტის უნიკალური სერიული ნომრის და წარმოების თარიღის შენახვა-ესკიზის ფუნქციას შეუძლია სერიული ნომრის ჩვენება LCD– ზე, ან მონაცემების წაკითხვა „სერვისის ესკიზის“ატვირთვით. ან შეიძლება დაგჭირდეთ გარკვეული მოვლენების დათვლა და არ დაუშვათ მომხმარებელმა მათი გადატვირთვა-მაგალითად, ოდომეტრი ან სამუშაო ციკლის მრიცხველი.

ნაბიჯი 1: რა სახის მონაცემთა შენახვაა შესაძლებელი?

რა სახის მონაცემების შენახვაა შესაძლებელი?
რა სახის მონაცემების შენახვაა შესაძლებელი?

ყველაფერი, რაც შეიძლება წარმოდგენილი იყოს როგორც მონაცემთა ბაიტი. მონაცემთა ერთი ბაიტი შედგება რვა ბიტიანი მონაცემისაგან. ბიტი შეიძლება იყოს ჩართული (მნიშვნელობა 1) ან გამორთული (მნიშვნელობა 0) და შესანიშნავია რიცხვების ორობითი ფორმით წარმოსადგენად. სხვა სიტყვებით რომ ვთქვათ, ბინარულ რიცხვს შეუძლია გამოიყენოს მხოლოდ ნულოვანი და ერთეული მნიშვნელობის გამოსახატავად. ამრიგად, ორობითი ასევე ცნობილია როგორც "ბაზა -2", რადგან მას შეუძლია გამოიყენოს მხოლოდ ორი ციფრი.

როგორ შეიძლება ორობითი რიცხვი მხოლოდ ორი ციფრის გამოყენებით იყოს უფრო დიდი რიცხვი? იგი იყენებს უამრავ ერთს და ნულს. განვიხილოთ ორობითი რიცხვი, ვთქვათ 10101010. ვინაიდან ეს არის ფუძე -2 რიცხვი, თითოეული ციფრი წარმოადგენს 2-ს x სიმძლავრისგან, x = 0-დან.

ნაბიჯი 2:

გამოსახულება
გამოსახულება

ნახეთ, თუ როგორ შეუძლია ორობითი რიცხვის თითოეულ ციფრს წარმოადგინოს ფუძე -10 რიცხვი. ამრიგად, ზემოთ მოყვანილი ორობითი რიცხვი წარმოადგენს 85-ს 10-ში-მნიშვნელობა 85 არის ფუძე -10 მნიშვნელობების ჯამი. კიდევ ერთი მაგალითი - 11111111 ორობაში უდრის 255 მეათე ფუძეს.

ნაბიჯი 3:

ამ ორობითი რიცხვის თითოეული ციფრი იყენებს მეხსიერების ერთ „ბიტს“და რვა ბიტი ქმნის ბაიტს. ჩვენს Arduino დაფებზე მიკროკონტროლერების შიდა შეზღუდვების გამო, ჩვენ შეგვიძლია მხოლოდ 8 ბიტიანი ნომრების (ერთი ბაიტი) შენახვა EEPROM– ში.

ეს ზღუდავს რიცხვის ათობითი მნიშვნელობას ნულამდე და 255 -ს შორის. ამის შემდეგ თქვენზეა დამოკიდებული, თუ როგორ შეიძლება თქვენი მონაცემების წარმოდგენა ამ რიცხვის დიაპაზონში. ნუ მოგაცილებთ ამას - სწორი გზით განლაგებული რიცხვები შეიძლება თითქმის არაფერს წარმოადგენდეს! არსებობს ერთი შეზღუდვა, რომელსაც უნდა გავუფრთხილდეთ - რამდენჯერ შეგვიძლია წავიკითხოთ ან დავწეროთ EEPROM– ზე. მწარმოებელი Atmel- ის თანახმად, EEPROM კარგია 100,000 წაკითხვის/წერის ციკლისთვის (იხ. მონაცემთა ფურცელი).

ნაბიჯი 4:

ახლა ჩვენ ვიცით ჩვენი ბიტი და ბაიტი, რამდენი ბაიტი შეიძლება იყოს შენახული ჩვენი არდუინოს მიკროკონტროლერში? პასუხი განსხვავდება მიკროკონტროლის მოდელის მიხედვით. Მაგალითად:

  • დაფები Atmel ATmega328- ით, როგორიცაა Arduino Uno, Uno SMD, Nano, Lilypad და ა.შ. - 1024 ბაიტი (1 კილობიტი)
  • დაფები Atmel ATmega1280 ან 2560, როგორიცაა Arduino Mega სერია - 4096 ბაიტი (4 კილობაიტი)
  • დაფები Atmel ATmega168– ით, როგორიცაა ორიგინალური Arduino Lilypad, ძველი ნანო, დიეციმილა და სხვა - 512 ბაიტი.

თუ არ ხართ დარწმუნებული, გადახედეთ Arduino აპარატურის ინდექსს ან ჰკითხეთ თქვენი დაფის მიმწოდებელს. თუ გჭირდებათ მეტი EEPROM საცავი ვიდრე ის რაც თქვენს მიკროკონტროლერთან არის ხელმისაწვდომი, განიხილეთ გარე I2C EEPROM- ის გამოყენება.

ამ ეტაპზე ჩვენ ახლა გვესმის რა სახის მონაცემები და რამდენი შეიძლება იყოს შენახული ჩვენი Arduino– ს EEPROM– ში. ახლა დროა, ეს ამოქმედდეს. როგორც ზემოთ განვიხილეთ, ჩვენი მონაცემებისთვის არის შეზღუდული სივრცე. შემდეგ მაგალითებში ჩვენ გამოვიყენებთ ტიპიურ Arduino დაფას ATmega328– ით 1024 ბაიტი EEPROM საცავით.

ნაბიჯი 5:

EEPROM- ის გამოსაყენებლად საჭიროა ბიბლიოთეკა, ასე რომ გამოიყენეთ ეს ბიბლიოთეკა თქვენს ესკიზებში:

#მოიცავს "EEPROM.h"

დანარჩენი ძალიან მარტივია. მონაცემების შესანახად ჩვენ ვიყენებთ შემდეგ ფუნქციას:

EEPROM. დაწერეთ (a, b);

პარამეტრი a არის პოზიცია EEPROM– ში მონაცემთა მთელი რიცხვის (0 ~ 255) შესანახად b. ამ მაგალითში ჩვენ გვაქვს 1024 ბაიტი მეხსიერების საცავი, ამიტომ a- ს მნიშვნელობა 0 -დან 1023 -მდეა. მონაცემთა ნაწილის აღსადგენად თანაბრად მარტივია, გამოიყენეთ:

z = EEPROM.read (a);

სადაც z არის მთელი რიცხვი EEPROM პოზიციიდან მონაცემების შესანახად a. ახლა ვნახოთ მაგალითი.

ნაბიჯი 6:

გამოსახულება
გამოსახულება

ეს ესკიზი შექმნის შემთხვევით რიცხვებს 0 -დან 255 -მდე, შეინახავს მათ EEPROM- ში, შემდეგ მიიღებს და აჩვენებს სერიულ მონიტორზე. ცვლადი EEsize არის თქვენი EEPROM ზომის ზედა ზღვარი, ასე რომ (მაგალითად) ეს იქნება 1024 Arduino Uno– სთვის, ან 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 ("შეიცავს"); Serial.println (zz); დაგვიანება (25); }}

სერიული მონიტორიდან გამომავალი გამოჩნდება, როგორც სურათზეა ნაჩვენები.

ასე რომ თქვენ გაქვთ ეს, კიდევ ერთი სასარგებლო გზა მონაცემების შესანახად ჩვენს არდუინოს სისტემებთან. მიუხედავად იმისა, რომ ეს არ არის ყველაზე საინტერესო სამეურვეო პროგრამა, ის ნამდვილად სასარგებლოა.

ეს პოსტი მოგიტანათ pmdway.com– ით - ყველაფერი მწარმოებლებისთვის და ელექტრონიკის მოყვარულთათვის, უფასო მიწოდებით მთელს მსოფლიოში.

გირჩევთ: