פונקציות Arduino עוזר - 💡 Fix My Ideas

פונקציות Arduino עוזר

פונקציות Arduino עוזר


המחבר: Ethan Holmes, 2019

הנה כמה פונקציות מועילות עבור Arduino.

מהבהב LED

פונקציה זו מהבהבת נורית LED מספר פעמים, בהתאם לשיעור המהבהב המבוקש.

(v) = (n =); (n = i = 0; numBlinks; i + +) {digitalWrite (targetPin, HIGH); עיכוב (blinkRate); DigitalWrite (targetPin, LOW); עיכוב (blinkRate); }}

מהבהב מספר

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

void blinkNumber (char * numString) {int versLength = strlen (numString); עיכוב (200); עבור (int i = 0; i <versLength; i ++) {מספר int = numString [i] -48; אם (מספר == 0) {blinkLED (LED_A, 1,20); עיכוב (160); } אם (מספר 0> & מספר <10) מהבהב (LED_A, מספר, 200); עיכוב (400); }}

מזמזם זמזם

פונקציה כללית הכללה לעשות שימוש Piezo buzzers מבלי לחשוב דרך מתמטיקה בכל פעם שאתה רוצה לשמוע תדר קול מסוים. כל שעליך לעשות הוא לומר את הפונקציה שבה אתה רוצה להשתמש, תדר אתה רוצה לשמוע, ואת משך לשחק את התדר.

חלל ריק (int targetPin, תדירות ארוכה, אורך ארוך) {long delayValue = 1000000 / Frequ / 2; ארוך numCycles = תדר * אורך / 1000; עבור (i i = 0 i <numCycles i; +) {digitalWrite (targetPin, HIGH); עיכוב מייקרו-שניות (delayValue); DigitalWrite (targetPin, LOW); עיכוב מייקרו-שניות (delayValue); }}

בדיקת זיכרון RAM חינם

ATmega328 יש 32K של זיכרון התוכנית, אבל רק 2K של SRAM. זיכרון התוכנית הוא עבור קוד RAM הוא עבור משתנים דינמיים. למעשה זה למעשה פחות מ 2K של RAM, כי ספריות Arduino ייקח קצת שטח זיכרון דינמי עבור עצמם.

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

int memoryTest () {int byteCounter = 0; בתים * בייט; בעוד ((byteArray = (byte *) malloc (byteCounter * sizeof (byte))! = = NULL) {byteCounter ++; ללא תשלום (byteArray); } חינם (byteArray); חזרה הביתה }

מיפוי מספרים גדולים יותר

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

(x_ in_min) * (out_max - out_min) / (in_max - in_min) + out_min; }

מתחבר ל- WiFi

החדש Arduino WiFi מגן הוא די נחמד הלוח. עם זאת להתמודד עם סוגים שונים של הרשת יכול להיות בעייתי. קטע הקוד הבא ינסה להתחבר לרשת WPA מוצפנת WPA / WPA2 ש- SSID מאוחסן בה ssid משתנה וסיסמא המאוחסנים לעבור משתנה. עם זאת, אם זה לא יכול למצוא את הרשת היא תיפול לאחור ולסרוק עבור רשתות WiFi פתוח במקום.

אם (WiFi.status () == WL_NO_SHIELD) {Serial.println ("מגן Wi-Fi לא קיים"); בעוד (נכון); } אם (stringFromCharString (ssid)! = "") {בעוד (מצב! = WL_CONNECTED) {timesWeTriedToConnect ++; Serial.print (F ("ניסיון להתחבר אל SSID (ניסיון")); Serial.print (timesWeTriedToConnect); Serial.print (F ("of 5):"); Serial.println (ssid); Status = WiFi.begin (ssid, pass); // התחבר לרשת WPA / WPA2. עיכוב (2000); אם (timesWeTriedToConnect> = 5) הפסקה; }} אם (Status! = WL_CONNECTED) {Serial.print ("לא ניתן להתחבר ל- ssid"); Serial.print (ssid); Serial.println ("" "); Serial.println ("** סריקה עבור רשתות פתוחות **"); בייט numSsid = WiFi.scanNetworks (); Serial.print ("מספר הרשתות הזמינות:"); Serial.println (numSsid); עבור (int thisNet = 0; thisNet

קריאה וכתיבה EEPROM

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

void setNumber (חתום ארוך ctr) {Serial.print ("הגדרת מספר EEPROM ל ="); Serial.println (ctr); EEPROM.write (4, (ctr & 0xFFFFFFFF) >> 24); // כתוב את MSB EEPROM.write (3, (ctr & 0xFFFFFF) >> 16); // לכתוב את EEPROM.write 3B (2, (ctr & 0xFFFF) >> 8); // כתוב את ה- EEPROM.write השני (1, ctr & 0xFF); // לכתוב את LSB}

ואז לקרוא את המספר בחזרה,

getigned ארוך לא חתום () {cigned ארוך ctr; (אם המספר EEPROM.read = 5) = {אם המספר מוגדר כסטטוס שקרית Serial.println ("אתחול מספר EEPROM"); EEPROM.write (1,0); // לכתוב LSB אפס EEPROM.write (2,0); // כתוב 2B אפס EEPROM.write (3,0); // לכתוב 3B אפס EEPROM.write (4,0); // לכתוב MSB אפס EEPROM.write (5,1); / / set set status הוא true / / מקבל את מספר - הוסף בתים עבור 32 סיביות מספר ctr = (EEPROM.read (4) << 24) + (EEPROM.read (3) << 16) + (EEPROM. קרא (2) << 8) + (EEPROM.read (1)); Serial.print ("קבלת מספר מ- EEPROM ="); Serial.println (ctr); חזור ctr; }

קוד עבור הפוסט הזה סופק על ידי רוב פלודי Alasdair אלן.הוא מפורסם כאן באתר MAKE באישור.



אתה עשוי להתעניין

עושה בעיות - בייבי פריצה

עושה בעיות - בייבי פריצה


תוצרת כדור הארץ - כפר דגם מרכזי

תוצרת כדור הארץ - כפר דגם מרכזי


תוצרת כדור הארץ - וול-א עולם

תוצרת כדור הארץ - וול-א עולם


תוצרת הארץ -

תוצרת הארץ -