როგორ შევინახოთ მონაცემები Arduino- ში

Სარჩევი:

როგორ შევინახოთ მონაცემები Arduino- ში
როგორ შევინახოთ მონაცემები Arduino- ში

ვიდეო: როგორ შევინახოთ მონაცემები Arduino- ში

ვიდეო: როგორ შევინახოთ მონაცემები Arduino- ში
ვიდეო: Осциллограф на ардуино (PULTOSCOP ARDUINO) 2024, მაისი
Anonim

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

მონაცემთა შენახვა EEPROM Arduino- ში
მონაცემთა შენახვა EEPROM Arduino- ში

აუცილებელია

  • - არდუინო;
  • - კომპიუტერი.

ინსტრუქციები

Ნაბიჯი 1

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

EEPROM მეხსიერების რაოდენობა Arduino- ში საკმაოდ შეზღუდულია: ATmega328 მიკროკონტროლერის დაფაზე დაფებისთვის (მაგალითად, Arduino UNO და Nano) მეხსიერების რაოდენობა არის 1 KB, ATmega168 და ATmega8 დაფებისთვის - 512 ბაიტი ATmega2560 და ATmega1280 - 4 კბ.

ნაბიჯი 2

Arduino– სთვის EEPROM– თან სამუშაოდ დაიწერა სპეციალური ბიბლიოთეკა, რომელიც სტანდარტულად შედის Arduino IDE– ში. ბიბლიოთეკა შეიცავს შემდეგ მახასიათებლებს.

წაკითხული (მისამართი) - კითხულობს 1 ბაიტს EEPROM– დან; მისამართი - მისამართი, საიდანაც იკითხება მონაცემები (უჯრედი იწყება 0-დან);

ჩაწერა (მისამართი, მნიშვნელობა) - წერს მნიშვნელობის მნიშვნელობას (1 ბაიტი, რიცხვი 0-დან 255-მდე) მეხსიერების მისამართში;

განახლება (მისამართი, მნიშვნელობა) - ცვლის მნიშვნელობას მისამართზე, თუ მისი ძველი შინაარსი განსხვავდება ახლისგან;

მიღება (მისამართი, მონაცემები) - კითხულობს მითითებული ტიპის მონაცემებს მეხსიერებიდან მისამართზე;

put (მისამართი, მონაცემები) - მიუთითებს მითითებული ტიპის მონაცემებს მეხსიერებაში მისამართზე;

EEPROM [მისამართი] - საშუალებას გაძლევთ გამოიყენოთ "EEPROM" იდენტიფიკატორი, როგორც მასივი, რომ წეროთ მონაცემები და წაიკითხოთ მეხსიერებადან.

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

ნაბიჯი 3

მოდით მივწეროთ ორი მთელი რიცხვი EEPROM– ს და შემდეგ წავიკითხოთ EEPROM– დან და გამოვა სერიული პორტისთვის.

0-დან 255-მდე რიცხვებთან დაკავშირებული პრობლემები არ არსებობს, ისინი მხოლოდ 1 ბაიტ მეხსიერებას იკავებენ და იწერება სასურველ ადგილას EEPROM.write () ფუნქციის გამოყენებით.

თუ რიცხვი 255-ზე მეტია, მაშინ ოპერატორების გამოყენებით highByte () და lowByte () ის უნდა იყოფა ბაიტებზე და თითოეული ბაიტი უნდა ჩაიწეროს თავის უჯრედში. ამ შემთხვევაში მაქსიმალური რაოდენობაა 65536 (ან 2 ^ 16).

შეხედეთ, 0 უჯრედის სერიული პორტის მონიტორი აჩვენებს 255-ზე ნაკლებ რიცხვს. 1 და 2 უჯრედებში ინახება დიდი რიცხვი 789. ამ შემთხვევაში, უჯრედი 1 ინახავს გადავსების ფაქტორს 3, ხოლო უჯრედი 2 ინახავს 21 ნომერს (ანუ 789 = 3 * 256 + 21). დიდი რაოდენობის შესადგენად, ბაიტებად დაყოფილი, არსებობს სიტყვის () ფუნქცია: int val = სიტყვა (hi, დაბალი), სადაც hi და low არის მაღალი და დაბალი ბაიტის მნიშვნელობები.

ყველა სხვა უჯრედში, რომელიც არასდროს ჩავწერეთ, 255 ნომერი ინახება.

მთელი რიცხვების ჩაწერა EEPROM Arduino- სთვის
მთელი რიცხვების ჩაწერა EEPROM Arduino- სთვის

ნაბიჯი 4

მცურავი წერტილების ნომრებისა და სტრიქონების დასაწერად გამოიყენეთ EEPROM.put () მეთოდი, ხოლო წასაკითხად გამოიყენეთ EEPROM.get ().

დაყენების () პროცედურაში, პირველ რიგში, ჩვენ ვწერთ მცურავი წერტილის ნომერს f. შემდეგ ჩვენ გადავდივართ მეხსიერების უჯრედების რაოდენობით, რომლებიც float ტიპს იკავებს და ვწერთ სიმ სტრიქონს, რომლის ტევადობაა 20 უჯრედი.

მარყუჟის () პროცედურაში წაიკითხავთ მეხსიერების ყველა უჯრედს და ვეცდებით გაშიფროთ ისინი ჯერ "float" ტიპის, შემდეგ კი "char" ტიპის სახით და გამოვა შედეგი სერიული პორტისთვის.

თქვენ ხედავთ, რომ უჯრედებში 0-დან 3-ის მნიშვნელობა სწორად განისაზღვრა, როგორც მცურავი წერტილის ნომერი, ხოლო მე -4-დან დაწყებული - სიმებიანი.

შედეგად მიღებული მნიშვნელობები ovf (overflow) და nan (not a number) მიუთითებს იმაზე, რომ რიცხვი არ შეიძლება სწორად გადაკეთდეს მცურავი წერტილის რიცხვში. თუ ზუსტად იცით, რა ტიპის მონაცემებს იკავებს მეხსიერების უჯრედები, მაშინ პრობლემები არ შეგექმნებათ.

მცურავი წერტილების რიცხვებისა და სიმების წერა EEPROM Arduino- სთვის
მცურავი წერტილების რიცხვებისა და სიმების წერა EEPROM Arduino- სთვის

ნაბიჯი 5

ძალიან მოსახერხებელი მახასიათებელია მეხსიერების უჯრედების მითითება, როგორც EEPROM მასივის ელემენტები. ამ ესკიზში, დაყენების () პროცედურაში, პირველ რიგში მონაცემებს დავწერთ პირველ 4 ბაიტში, ხოლო მარყუჟის () პროცედურაში, ყოველ წუთს წაიკითხავს მონაცემებს ყველა უჯრიდან და გამოვა მათ სერიული პორტისკენ.

გირჩევთ: