פרסומת
האם ידעת שהארדואינו יכול לאחסן נתונים כשהם כבויים? לא הסקיצה המאוחסנת בזיכרון הפלאש. אני מדבר על נתונים משתנים ב- EEPROM. הצטרף אלי כשאני מראה לך כיצד לקרוא ולכתוב לזה, ומה הוא יכול לעשות לפרויקטים שלך.
אם אתה חדש בארדואינו, הקפד לבדוק את שלנו מדריך למתחיל תחילת העבודה עם ארדואינו: מדריך למתחיליםArduino היא פלטפורמת אב-טיפוס אלקטרונית עם קוד פתוח המבוססת על חומרה ותוכנה גמישים ונוחים לשימוש. הוא מיועד לאמנים, מעצבים, חובבים ולכל מי שמעוניין ליצור חפצים או סביבות אינטראקטיביות. קרא עוד .
מה זה EEPROM?
EEPROM מייצג מחיקה חשמלית לזיכרון לקריאה בלבד שניתן לתכנות. זה סוג של זיכרון לא הפכפך. אל תדאג אם אינך מבין מה פירוש הדבר. זה פשוט מאחסן נתונים אפילו עם הסרת הכוח (שלא כמו RAM מדריך מהיר ומלוכלך ל- RAM: מה שאתה צריך לדעתזיכרון RAM הוא מרכיב מכריע בכל מחשב, אך הוא יכול להיות מבלבל. אנו מפרקים את זה במונחים קלים להבנה שתבינו. קרא עוד , הזקוק לחשמל כדי לשמור על נתונים).
EEPROM מובנה בשלל מעבדים, כמו מערך השער הניתן לתכנות בשדה (FPGA) המשמש במערכת יוצר מטריקס יוצר מטריצות לבדיקת Pi פטלה- Matrix Creator הוא סכין צבא שוויצרי עבור ה- Pi שלך, עם 15 חיישנים, חבילה של פרוטוקולי תקשורת, טבעת של נוריות RGB, מערך מיקרופונים, ועוד! קרא עוד פי HAT. לכל הארדואינו יש EEPROM, אך הקיבולת משתנה לפי דגם. ודא שאתה מסתכל על שלנו מדריך קנייה מדריך רכישה של ארדואינו: איזה לוח עליכם לקבל?יש כל כך הרבה סוגים שונים של לוחות ארדואינו שיש סליחה על כך שהתבלבלת. איזה אתה צריך לקנות לפרויקט שלך? בואו נעזור, עם מדריך הקנייה הזה של Arduino! קרא עוד לפרטים נוספים על כל לוח.
איך זה עובד?
EEPROM נמחק ומתוכנת באופן חשמלי באמצעות מנהרת פאולר-נורדהיים. אינך צריך לדעת את הפרטים הטכניים כדי שתוכל להשתמש בהם. הנחת היסוד היא שחשמל משמש לשינוי הנתונים הבינאריים (מה זה בינארי מה זה בינארי? [הסביר טכנולוגיה]בהתחשב בכך שבינארי כל כך בסיסי לקיומם של מחשבים, נראה מוזר שמעולם לא התמודדנו עם הנושא לפני כן - אז היום חשבתי שאביא סקירה קצרה של מה בינארי ... קרא עוד ). ניתן לקרוא, למחוק ולכתוב מחדש אלקטרונית.
למרבה המזל, שפת ארדואינו מקל על שינוי נתונים, וכל זאת מבלי להזדקק לתואר במדעי המחשב.
תוחלת חיים
אמנם קל להשתמש ב- EEPROM בארדואינו, אך יש לו חיים מוגבלים. EEPROM מוגדר לטיפול ב 100,000 מחזורי קריאה / מחיקה. משמעות הדבר היא שאתה יכול לכתוב ואז למחוק / לכתוב נתונים מחדש 100,000 פעמים לפני שה- EEPROM יהפוך לא יציב. במציאות, אטמל (יצרני ה- Arduino "Chip") מוליכים למחצה עשויים להתמודד עם מספר מחזורים גבוה או נמוך יותר, תלוי בסבולות של כל מעבד ומעבד.
ברגע שנכתב מיקום ונמחק יותר מדי פעמים הוא יכול להתחיל להיות לא אמין. יתכן שהוא לא יחזיר את הנתונים הנכונים, או יחזיר את הערך מהסיב הסמוך.
זה אולי נשמע כמו הרבה כותבים, אבל זה יכול להיות קל להגיע למגבלה זו אם קוראים וכותבים באופן תכנותי (בתוך א לולאה, לדוגמה). קריאת נתונים אינה מבזה את הסיליקון, רק הכתיבה עושה. אתה יכול לקרוא נתונים מ- EEPROM כמה שתרצה בלי לפחד!
חשוב לציין שמגבלה זו חלה על כל מיקום זיכרון. Arduino שלך עשוי לכלול 1,000 מיקומי זיכרון או יותר זמינים ב- EEPROM, כך שאם אתה כותב יותר מדי פעמים למיקום אחד, רק שהמיקום הזה מושפע ולא אף אחד מהאחרים. בהמשך אדון פילוס ללבוש, מה שיכול להפחית את בלאי ה- EEPROM על ידי הפצת נתונים באופן שווה - דבר זה SSDs כיצד להעריך את אורך החיים הנותר של ה- SSD שלךלכל תקני ה- SSD יש תוחלת חיים מוגבלת בגלל מחזורי הכתיבה (אם כי תוחלת החיים הזו ארוכה הרבה מכפי שאפשר לחשוב). כך תוכלו להעריך עד כמה אתם קרובים עד הסוף. קרא עוד לעשות שימוש ב.
בשביל מה זה מועיל?
EEPROM שימושי להפליא לפרויקטים של Arduino שלך. מכיוון שהוא זוכר נתונים גם כאשר הכוח מוסר, תוכלו לאחסן את מצב הארדואינו. אולי אתה יכול לבנות צריח לייזר פיו פיו! כיצד לבנות צריח לייזר עם ארדואינואתה משועמם? יכול גם לבנות צריח לייזר. קרא עוד שזוכר את עמדתו או כמה נשאר "תחמושת". אתה יכול להשתמש בזה כדי לשלוט במכשירים שלך שלוט במכשירים מארדואינו: תחילת האוטומציה הביתיתבפעם האחרונה הראיתי לכם כמה דרכים להשמיע את נאום פרויקטים Arduino שלכם באמצעות SiriProxy, OS X פריטים מובנים שניתן לדבר עליהם וכמה סקריפטים של Automator, או אפילו חומרה ייעודית לזיהוי קול שבב. אני... קרא עוד , ורשום כמה פעמים המכשיר שלך הופעל.
EEPROM מתאים ביותר לדברים כמו הגדרות או ציונים גבוהים. אם אתה רוצה לכתוב נתונים מורכבים באופן קבוע, אולי תשקול מגן אתרנט תן לפרוייקט Arduino שלך מיני שרת אינטרנט משלו, עם מגן אתרנטלפני זמן מה הראיתי לך כיצד להתקין מערכת בקרת אינטרנט לארדואינו שלך - אך היא הייתה חייבת להישאר מחוברת למחשב דרך USB כדי לשמור על חיבור האינטרנט ... קרא עוד (עם חריץ SD מובנה) או א פאי פטל פטל Pi: ההדרכה הלא רשמיתבין אם אתה בעל Pi נוכחי שרוצה ללמוד יותר ובין שהוא בעל פוטנציאל של מכשיר זה בגודל כרטיס אשראי, זה לא מדריך שאתה רוצה לפספס. קרא עוד .
תקרא ותכתוב
כעת, כשהתיאוריה לא בדרך, בואו נראה כיצד לקרוא ולכתוב נתונים מסוימים! ראשית, כלול את הספרייה (זה מגיע עם ה- IDE של ארדואינו):
# כלול
עכשיו כתוב כמה נתונים:
EEPROM.write (0, 12);
זה כותב את המספר 12 למיקום EEPROM 0. כל כתיבה אורכת 3.3 אלפיות השנייה (גברת, 1000 מס '= שנייה אחת). שימו לב כיצד אינכם יכולים לכתוב מכתבים (char), רק המספרים מאפס עד 255 מותרים. זו הסיבה ש- EEPROM אידיאלי להגדרות או לציונים גבוהים, אך לא כל כך טוב לשמות או מילים לשחקנים. אפשר לאחסן טקסט בשיטה זו (ניתן למפות כל אות באלף-בית למספר), עם זאת תצטרך להיות מיקומי זיכרון מרובים - מיקום אחד לכל אות.
כך קראת את הנתונים האלה:
EEPROM.read (0);
אפס הוא הכתובת אליה כתבת בעבר. אם לא כתבת לכתובת קודם, היא תחזיר את הערך המקסימלי (255).
ישנן כמה שיטות שימושיות מעט יותר. נניח שרצית לאחסן מקום או מחרוזת עשרונית:
EEPROM.put (2, "12.67");
זה כותב את הנתונים למספר מיקומים - משהו שיהיה קל לכתוב בעצמך, אך שימושי בכל זאת. עדיין תצטרך לעקוב אחר מספר המיקומים עליהם נכתב, כך שלא תחליף בטעות את הנתונים שלך! אתה צריך להשתמש ב- לקבל שיטה לאחזור נתונים אלה שוב:
לצוף f = 0.00f; EEPROM.get (2, f);
הערך מ- get נשמר בציפה ו משתנה. שימו לב כיצד מאתחל זה 0.00f כערך. ה ו מאפשרת למהדר לדעת שאולי תרצה לאחסן מספר גדול במשתנה זה, כך שהוא מגדיר כמה תצורות נוספות במהלך ההרכבה.
ה תיעוד EEPROM על אתר ארדואינו יש הרבה דוגמאות נוספות.
ללבוש פילוס
פילוס בלאי הוא טכניקה המשמשת להפחתת הבלאי והגדלת חיי ה- EEPROM. אם אתה עובד רק על פרויקט קטן, יתכן שלא תצטרך לדאוג בקשר לזה.
הדבר הפשוט ביותר שאתה יכול לעשות כדי לשמור על חיי EEPROM הוא להגביל את הכתיבה שלך למיקום מסוים. אתה יכול לעשות זאת על ידי קריאה ראשונה של הכתובת, ואם הערך שאתה רוצה לכתוב כבר קיים, אין צורך לכתוב אותו שוב (זכור, קריאת נתונים לא מזיקה). כך תעשה זאת:
int safeWrite (נתוני int, כתובת) {if (EEPROM.read (כתובת)! = data) {EEPROM.write (כתובת, נתונים); } }
זהו קוד די פשוט, אולם זה עובד רק עבור מספרים שלמים! במקום להמציא מחדש את הגלגל, השתמש בפונקציה המובנית בספריית Arduino EEPROM:
EEPROM.update (כתובת, val);
לשיטה זו יש בדיוק אותה חתימה כמו לכתוב שיטה, אם כי היא עשויה להפחית בצורה דרסטית את מספר הכותבים הדרושים!
אם אתה צריך לכתוב הרבה נתונים, ודואג ללבוש את הסיליקון, אתה יכול לעקוב אחר כמה כותבים שאתה עושה, אם כי זה משתמש בנתונים רבים יותר. הנה יישום גס ב- פסאודוקוד:
כתובת var = 0. var writeCount = 0 if (writeCount> 75,000) writeCount = 0 address + = 1 EEPROM.write (כתובת, נתונים)
יהיה עליך לאחסן כתובת וכתובת Count ב- EEPROM (ויש צורך לפצל את WritCount בין מיקומי כתובת). לרוב, רמת הגנה זו לא תהיה נחוצה. Arduinos הם גם כל כך זולים, כך שתוכלו למצוא את זה יותר קל לרכוש גיבוי!
כעת עליכם לדעת מספיק בכדי לבצע כמה פרויקטים מדהימים. תן לנו לדעת אם אתה עושה משהו מגניב! האם אתה יכול לזהות את כל המכשירים שבתמונות? השאירו לנו תגובה למטה!
ג'ו הוא בוגר מדעי המחשב מאוניברסיטת לינקולן, בריטניה. הוא מפתח תוכנה מקצועי, וכאשר הוא לא טס מל"טים או כותב מוסיקה, לעתים קרובות ניתן למצוא אותו בצילום או בהפקת סרטונים.