切換
舊版
前往
大廳
主題

[arduino學堂]計算什麼的交給電腦就對了!變數與算術篇

白鷗 | 2020-02-22 22:24:39 | 巴幣 14 | 人氣 1407

今天的這篇要來介紹arduino的變數形式以及數學計算的部分

所謂的變數就像是箱子不同格式的變數就像不同大小、或是用來裝特殊物品的箱子,依照要裝的東西來選擇適合的箱子是十分重要的,如果用太大的箱子很占空間,箱子太小又可能塞不進去就爆炸了(x

arduino中可使用的變數格式大概有這些:

雖然種類很多(而且有些其實是一樣的),不過其實常用的大概就那幾個

bool:用來做邏輯判斷用的,可以用true/false、1/0、HIGH/LOW 來表示

int:整數,能裝入的值(-32768~32767),相當常用的格式

long:一樣是整數,就像字面上的意思擁有更大的空間能裝入的值是前者的幾萬倍,通常用在會出現龐大數字的地方(廢話

double:倍精度浮點數(基本上需要小數就用它),如果學過c的應該知道它在電腦上長度是64bits(float的2倍),不過在大部分的arduino中都被削減為32bits(也就是會和float一樣),用在需要精確計算到小數的場合,需要注意的是如果總位數(小數點前+小數點後)太大(>7)的話也容易因為溢出而出錯

char:字元將字元依照ascii code轉換為整數後儲存,因此char其實也能用來儲存8bit的整數

String:字串,嚴格來說就是一連串的字元組合成的陣列,所以沒有固定的長度,像是漢字這些需要>1byte來儲存的字元就不能用char只能用String來儲存

uint8_t/uint16_t/uint32_t:正整數家族,可依照需求選擇適當大小的格式


然而當你需要儲存一連串的資料,你就需要名為"陣列"的東西

舉個例子,當你同時有五個同類型的整數需要儲存,比方說5個人的身高,那就能像這樣
這其實就相當於一次生成多個大小一樣的箱子,如果你需要其中一個的資料只需要像這樣(需要注意的是電腦或是arduino中在數數時都會從0開始數,因此第一個資料會在hight[0]中

將前面所講的寫成程式就會像這樣,依序把每個人的身高都輸出到電腦

然後還有一點就是數字的表示法,如果沒特別標示的話,程式中的數字皆會被視作10進位
而當前面有0b/0B的就代表2進位,0開頭的是8進位,0x/0X開頭是16進位



那麼接下來說說數學計算的部分

最基本的加減乘除就不說了

這裡會介紹以函式型態出現的數學計算,下面這是arduino官網中基本函式中和數學計算有關的部分

首先是"絕對值"abs()將帶入的值無條件變為正數

然後是constrain(),能夠把數值限制在一定範圍內(大於最大值或小於最小值時的話會自動調回來,就像地板和天花板一樣)

map()則是用來將數值從一個標準映照到另一種標準上(例如將溫度從華式轉到攝氏)

max()min()則是用來在兩個數值中取出最大/小的那個
需要注意的是這兩個函式一次只能比較兩個,如果需要在很多個資料中取最大/小的話就需要連續使用好幾個,例如這樣:

pow()簡單說就是指數啦XDD,然後sq()是平方,sqrt()是開根號

最後就是邪惡(?的三角函數
cos()、sin()、tan()使用方式基本上跟手寫的時候一樣

這裡是一個範例,能夠畫出cos跟sin曲線(tan因為會出現無限大所以畫出來的圖並不漂亮)

最後,雖然官網沒寫到,但是其實還有acos()、asin()、atan()等等反三角、還有雙曲函數也能夠使用


這篇大概就到這裡囉~欲知更詳細推薦看這兩篇:
(小狐狸事務所的文真的甚麼都寫得很詳細,而且種類多元,應該是相當資深的人)


創作回應

喔哇@あくあ☆
%鷗
2020-02-23 09:39:56
白鷗
(°A。;)
2020-02-23 09:45:36

更多創作