EEPROM ในตัวของ Arduino: 6 ขั้นตอน
EEPROM ในตัวของ Arduino: 6 ขั้นตอน
Anonim
EEPROM ในตัวของ Arduino ของคุณ
EEPROM ในตัวของ Arduino ของคุณ

ในบทความนี้ เราจะมาตรวจสอบ EEPROM ภายในในบอร์ด Arduino ของเรา EEPROM ที่พวกคุณบางคนอาจกำลังพูดถึงคืออะไร? EEPROM เป็นหน่วยความจำแบบอ่านอย่างเดียวที่สามารถตั้งโปรแกรมได้ซึ่งลบได้ด้วยไฟฟ้า

เป็นหน่วยความจำแบบไม่ลบเลือนรูปแบบหนึ่งที่สามารถจดจำสิ่งต่างๆ ได้เมื่อปิดเครื่อง หรือหลังจากรีเซ็ต Arduino ความสวยงามของหน่วยความจำประเภทนี้คือการที่เราสามารถจัดเก็บข้อมูลที่สร้างขึ้นภายในแบบร่างได้อย่างถาวรมากขึ้น

ทำไมคุณถึงใช้ EEPROM ภายใน? สำหรับสถานการณ์ที่ข้อมูลเฉพาะสถานการณ์ต้องการบ้านที่ถาวรมากขึ้น ตัวอย่างเช่น การจัดเก็บหมายเลขซีเรียลที่ไม่ซ้ำกันและวันที่ผลิตของโปรเจ็กต์ที่ใช้ Arduino เชิงพาณิชย์ ฟังก์ชั่นของภาพสเก็ตช์สามารถแสดงหมายเลขซีเรียลบน LCD หรือข้อมูลสามารถอ่านได้โดยการอัปโหลด "ร่างบริการ" หรือคุณอาจต้องนับเหตุการณ์บางอย่างและไม่อนุญาตให้ผู้ใช้รีเซ็ตเหตุการณ์ เช่น มาตรระยะทางหรือตัวนับรอบการทำงาน

ขั้นตอนที่ 1: สามารถจัดเก็บข้อมูลประเภทใดได้บ้าง

ข้อมูลประเภทใดที่สามารถจัดเก็บได้?
ข้อมูลประเภทใดที่สามารถจัดเก็บได้?

อะไรก็ตามที่สามารถแสดงเป็นไบต์ของข้อมูลได้ ข้อมูลหนึ่งไบต์ประกอบด้วยข้อมูลแปดบิต บิตสามารถเป็นได้ทั้งเปิด (ค่า 1) หรือปิด (ค่า 0) และเหมาะสำหรับการแสดงตัวเลขในรูปแบบไบนารี กล่าวอีกนัยหนึ่งเลขฐานสองสามารถใช้ศูนย์และตัวเลขเพื่อแสดงค่าเท่านั้น ดังนั้นเลขฐานสองจึงเรียกว่า "ฐาน-2" เนื่องจากสามารถใช้ตัวเลขได้เพียงสองหลักเท่านั้น

เลขฐานสองที่มีเพียงสองหลักสามารถแทนจำนวนที่มากขึ้นได้อย่างไร ใช้ตัวเลขและศูนย์จำนวนมาก ลองตรวจสอบเลขฐานสองกัน เช่น 10101010 เนื่องจากเป็นตัวเลขฐาน 2 แต่ละหลักแทน 2 ยกกำลัง x ตั้งแต่ x=0 เป็นต้นไป

ขั้นตอนที่ 2:

ภาพ
ภาพ

ดูว่าเลขฐานสองแต่ละหลักสามารถแทนเลขฐาน 10 ได้อย่างไร ดังนั้นเลขฐานสองด้านบนจึงแทน 85 ในฐาน 10 – ค่า 85 คือผลรวมของค่าฐาน 10 อีกตัวอย่างหนึ่ง – 11111111 ในเลขฐานสองเท่ากับ 255 ในฐาน 10

ขั้นตอนที่ 3:

ตอนนี้แต่ละหลักในเลขฐานสองนั้นใช้หน่วยความจำหนึ่งบิตและแปดบิตสร้างหนึ่งไบต์ เนื่องจากข้อจำกัดภายในของไมโครคอนโทรลเลอร์ในบอร์ด Arduino เราจึงสามารถเก็บตัวเลข 8 บิต (หนึ่งไบต์) ใน EEPROM ได้เท่านั้น

ซึ่งจะจำกัดค่าทศนิยมของตัวเลขให้อยู่ระหว่างศูนย์ถึง 255 จากนั้นจึงขึ้นอยู่กับคุณที่จะตัดสินใจว่าข้อมูลของคุณสามารถแสดงด้วยช่วงตัวเลขนั้นได้อย่างไร อย่าปล่อยให้สิ่งนั้นทำให้คุณผิดหวัง – ตัวเลขที่จัดเรียงอย่างถูกวิธีสามารถแสดงได้เกือบทุกอย่าง! มีข้อ จำกัด หนึ่งข้อที่ควรคำนึงถึง - จำนวนครั้งที่เราสามารถอ่านหรือเขียนไปยัง EEPROM ตามที่ผู้ผลิต Atmel กล่าวว่า EEPROM นั้นดีสำหรับรอบการอ่าน/เขียน 100,000 รอบ (ดูเอกสารข้อมูล)

ขั้นตอนที่ 4:

ตอนนี้เรารู้บิตและไบต์ของเราแล้ว ไมโครคอนโทรลเลอร์ของ Arduino สามารถจัดเก็บได้กี่ไบต์ คำตอบจะแตกต่างกันไปตามรุ่นของไมโครคอนโทรลเลอร์ ตัวอย่างเช่น:

  • บอร์ดที่มี Atmel ATmega328 เช่น Arduino Uno, Uno SMD, Nano, Lilypad เป็นต้น – 1024 ไบต์ (1 กิโลไบต์)
  • บอร์ดที่มี Atmel ATmega1280 หรือ 2560 เช่น Arduino Mega series – 4096 ไบต์ (4 กิโลไบต์)
  • บอร์ดที่มี Atmel ATmega168 เช่น Arduino Lilypad ดั้งเดิม, Nano รุ่นเก่า, Diecimila เป็นต้น - 512 ไบต์

หากคุณไม่แน่ใจ ให้ดูดัชนีฮาร์ดแวร์ Arduino หรือสอบถามผู้จำหน่ายบอร์ดของคุณ หากคุณต้องการที่เก็บข้อมูล EEPROM มากกว่าที่มีให้ในไมโครคอนโทรลเลอร์ ให้ลองใช้ I2C EEPROM ภายนอก

ณ จุดนี้เราเข้าใจว่าข้อมูลประเภทใดและเท่าใดที่สามารถเก็บไว้ใน EEPROM ของ Arduino ได้ ตอนนี้ได้เวลานำสิ่งนี้ไปปฏิบัติแล้ว ตามที่กล่าวไว้ก่อนหน้านี้ มีพื้นที่จำกัดสำหรับข้อมูลของเรา ในตัวอย่างต่อไปนี้ เราจะใช้บอร์ด Arduino ทั่วไปกับ ATmega328 ที่มีหน่วยความจำ EEPROM 1024 ไบต์

ขั้นตอนที่ 5:

ในการใช้ EEPROM จำเป็นต้องมีไลบรารี่ ดังนั้นให้ใช้ไลบรารีต่อไปนี้ในแบบสเก็ตช์ของคุณ:

#รวม "EEPROM.h"

ที่เหลือก็ง่ายมาก ในการจัดเก็บข้อมูล เราใช้ฟังก์ชันต่อไปนี้:

EEPROM.write(a,b);

พารามิเตอร์ a คือตำแหน่งใน EEPROM เพื่อเก็บจำนวนเต็ม (0~255) ของข้อมูล b ในตัวอย่างนี้ เรามีหน่วยความจำ 1024 ไบต์ ดังนั้นค่าของ a อยู่ระหว่าง 0 ถึง 1,023 ในการดึงข้อมูลบางส่วนนั้นง่ายเท่ากัน ให้ใช้:

z = EEPROM.read(a);

โดยที่ z เป็นจำนวนเต็มสำหรับเก็บข้อมูลจากตำแหน่ง EEPROM a ทีนี้มาดูตัวอย่าง

ขั้นตอนที่ 6:

ภาพ
ภาพ

สเก็ตช์นี้จะสร้างตัวเลขสุ่มระหว่าง 0 ถึง 255 เก็บไว้ใน EEPROM จากนั้นดึงข้อมูลและแสดงบนจอภาพแบบอนุกรม ตัวแปร EEsize คือขีดจำกัดบนของขนาด EEPROM ของคุณ ดังนั้น (ตัวอย่าง) นี่จะเป็น 1024 สำหรับ Arduino Uno หรือ 4096 สำหรับเมกะ

// การสาธิต EEPROM ภายในของ Arduino

#รวม

int zz; int EEsize = 1024; // ขนาดเป็นไบต์ของ EEPROM. ของบอร์ดคุณ

การตั้งค่าเป็นโมฆะ ()

{ Serial.begin(9600); randomSeed(analogRead(0)); } void loop() { Serial.println("กำลังเขียนตัวเลขสุ่ม…"); สำหรับ (int i = 0; i < EEsize; i++) { zz=random(255); EEPROM.write(i, zz); } Serial.println(); สำหรับ (int a=0; a < EEsize; a++) { zz = EEPROM.read (a); Serial.print("ตำแหน่ง EEPROM: "); Serial.print(ก); Serial.print(" มี "); Serial.println(zz); ล่าช้า(25); } }

เอาต์พุตจากจอภาพอนุกรมจะปรากฏขึ้น ดังแสดงในภาพ

คุณก็มีวิธีที่มีประโยชน์อีกวิธีหนึ่งในการจัดเก็บข้อมูลกับระบบ Arduino ของเรา แม้ว่าจะไม่ใช่บทช่วยสอนที่น่าตื่นเต้นที่สุด แต่ก็มีประโยชน์อย่างแน่นอน

โพสต์นี้มาถึงคุณโดย pmdway.com – ทุกอย่างสำหรับผู้ผลิตและผู้ที่ชื่นชอบอุปกรณ์อิเล็กทรอนิกส์ พร้อมบริการจัดส่งฟรีทั่วโลก

แนะนำ: