כיצד לאחסן נתונים בארדואינו

תוכן עניינים:

כיצד לאחסן נתונים בארדואינו
כיצד לאחסן נתונים בארדואינו

וִידֵאוֹ: כיצד לאחסן נתונים בארדואינו

וִידֵאוֹ: כיצד לאחסן נתונים בארדואינו
וִידֵאוֹ: Arduino SD Card and Data Logging to Excel Tutorial 2024, מאי
Anonim

ללוחות Arduino יש כמה סוגים של זיכרון. ראשית, זהו זיכרון RAM סטטי (זיכרון גישה אקראית), המשמש לאחסון משתנים במהלך ביצוע התוכנית. שנית, זהו זיכרון הפלאש המאחסן את המערכונים שכתבת. ושלישית, זהו EEPROM שניתן להשתמש בו כדי לאחסן מידע לצמיתות. הסוג הראשון של הזיכרון הוא נדיף, הוא מאבד את כל המידע לאחר אתחול הארדואינו מחדש. שני סוגי הזיכרון השניים מאחסנים מידע עד שהוא מוחלף עם חדש, גם לאחר כיבוי החשמל. הסוג האחרון של הזיכרון - EEPROM - מאפשר לכתוב, לאחסן ולקרוא נתונים לפי הצורך. נשקול זיכרון זה כעת.

אחסון נתונים ב- EEPROM Arduino
אחסון נתונים ב- EEPROM Arduino

נחוץ

  • - ארדואינו;
  • - מחשב.

הוראות

שלב 1

EEPROM מייצג זיכרון לקריאה בלבד לתכנות המחיק באמצעות חשמל, כלומר זיכרון לקריאה בלבד שנמחק באמצעות חשמל. ניתן לשמור את הנתונים בזיכרון זה עשרות שנים לאחר כיבוי החשמל. מספר מחזורי השכתוב בסדר גודל של כמה מיליוני פעמים.

כמות הזיכרון של EEPROM בארדואינו מוגבלת למדי: עבור לוחות המבוססים על מיקרו-בקרה ATmega328 (למשל, Arduino UNO ו- Nano), כמות הזיכרון היא 1 קילו-בתים, עבור לוחות ATmega168 ו- ATmega8 - 512 בתים, ל- ATmega2560 ו- ATmega1280 - 4 KB.

שלב 2

לעבודה עם ה- EEPROM עבור Arduino, נכתבה ספרייה מיוחדת אשר כלולה ב- IDE של Arduino כברירת מחדל. הספרייה מכילה את התכונות הבאות.

קרא (כתובת) - קורא בת אחד מ- EEPROM; כתובת - הכתובת ממנה נקראים הנתונים (תא החל מ- 0);

כתוב (כתובת, ערך) - כותב את ערך הערך (בת אחד, מספר 0 עד 255) לזיכרון בכתובת הכתובת;

עדכון (כתובת, ערך) - מחליף את הערך בכתובת אם התוכן הישן שלה שונה מהתוכן החדש;

קבל (כתובת, נתונים) - קורא נתונים מהסוג שצוין מהזיכרון בכתובת;

put (כתובת, נתונים) - כותב נתונים מהסוג שצוין לזיכרון בכתובת;

EEPROM [כתובת] - מאפשר לך להשתמש במזהה "EEPROM" כמערך לכתיבת נתונים ולקריאה מהזיכרון.

כדי להשתמש בספרייה בשרטוט, אנו כוללים אותה בהנחיית EEPROM.h הכוללת.

שלב 3

בואו נכתוב שני מספרים שלמים ל- EEPROM ואז נקרא אותם מה- EEPROM ונפיק אותם ליציאה הטורית.

אין בעיות עם מספרים מ -0 עד 255, הם תופסים זיכרון אחד בלבד ונכתבים למיקום הרצוי באמצעות הפונקציה EEPROM.write ().

אם המספר גדול מ- 255, אז באמצעות האופרטורים highByte () ו- lowByte () יש לחלק אותו בתים וכל בייט חייב להיות כתוב לתא משלו. המספר המרבי במקרה זה הוא 65536 (או 2 ^ 16).

תראה, צג היציאות הטוריות בתא 0 פשוט מציג מספר נמוך מ- 255. בתאים 1 ו -2 מאוחסן מספר גדול 789. במקרה זה תא 1 מאחסן את גורם הגלישה 3 ותא 2 שומר את המספר החסר 21 (כלומר 789 = 3 * 256 + 21). כדי להרכיב מחדש מספר גדול, המנותח לבתים, קיימת הפונקציה word (): int val = word (hi, low), כאשר hi ו- low הם הערכים של בתים גבוהים ונמוכים.

בכל שאר התאים שמעולם לא רשמנו, מאוחסנים המספרים 255.

כתיבת מספרים שלמים ל- EEPROM Arduino
כתיבת מספרים שלמים ל- EEPROM Arduino

שלב 4

כדי לכתוב מספרים ומחרוזות של נקודות צפות, השתמש בשיטת EEPROM.put (), וכדי לקרוא, השתמש ב- EEPROM.get ().

בהליך ההתקנה (), אנו כותבים תחילה את מספר הנקודה הצפה f. ואז אנו נעים לפי מספר תאי הזיכרון שתופס הצף, וכותבים מחרוזת char עם קיבולת של 20 תאים.

בהליך הלולאה () נקרא את כל תאי הזיכרון וננסה לפענח אותם תחילה כסוג "float", ולאחר מכן כסוג "char" ונפיק את התוצאה ליציאה הטורית.

אתה יכול לראות שהערך בתאים 0 עד 3 הוגדר נכון כמספר נקודה צפה, והחל מה -4 - כמחרוזת.

הערכים המתקבלים ovf (גלישה) ו- nan (לא מספר) מצביעים על כך שלא ניתן להמיר את המספר כהלכה למספר נקודה צפה. אם אתה יודע בדיוק איזה סוג נתונים תאי הזיכרון תופסים, לא תהיה לך שום בעיה.

כתיבת מספרים וחוטים של נקודות צפות ל- EEPROM Arduino
כתיבת מספרים וחוטים של נקודות צפות ל- EEPROM Arduino

שלב 5

תכונה נוחה מאוד היא התייחסות לתאי זיכרון כאלמנטים במערך EEPROM. בסקיצה זו, בהליך ההתקנה (), נכתוב תחילה את הנתונים ל -4 הבתים הראשונים, ובנוהל הלולאה (), כל דקה נקרא נתונים מכל התאים ונפיק אותם ליציאה הטורית.

מוּמלָץ: