Ads 468x60px

##EasyReadMore##

11 4月, 2018

ardiuno 可用記憶體低下

用F()

原本如果要序列傳輸 “This string will be stored in flash memory” 這段文字的話,一般來說都會這樣寫。
Serial.println("This string will be stored in flash memory");
這將佔用 42 位元組的記憶體空間,所以如果有 50 個這種長度的文字同時在記憶體中,Arduino 就沒有記憶體可以做其他事情了。但其實只要在文字外加上一個神奇的 F 函數呼叫,像下面這樣,

Serial.println(F("This string will be stored in flash memory"));
那文字就不再佔用 Arduino 的記憶體,瞬間省了你 42 位元組的空間。可別小看這一點點小節省,累積下來他們也可能非常驚人。

移除不用的函數庫

如果在程式碼中看到 #include 的話,代表程式碼有引用額外的函數庫,但是有時候這些額外的函數庫並沒有實際被使用(例如你下載別人寫好的程式碼再修改過),像是明明沒有用伺服馬達,卻在程式碼內看到:
#include <Servo.h>
這時伺服馬達的函數庫,就只是白白在佔用你的記憶體,透過刪掉那行引用宣告,就可以把被吃掉的記憶體要回來。如果不確定函數庫有沒有被使用也沒關係,可以試試把引用宣告刪掉,再編譯程式碼。如果編譯成功,代表有很高的機率,那個函數庫並沒有被使用;反之,如果刪掉引用宣告後程式無法成功編譯,那就代表那個函數庫有被使用,這時只要把剛剛被刪掉的那行引用宣告,補回來就行了。

Arduino 記憶體不足不用怕,一個函數打天下 | vMaker 台灣自造者 - https://goo.gl/yioz86

0 意見:

張貼留言

 
Blogger Templates