2016年9月27日 星期二

可變電阻調控SciCore多功能sensors檔位

之前把SciCore做成多功能sensor了。主要就是希望可以一次組裝完,韌體灌完後,就可以一直使用。只要接電源,不用接電腦。





當時做了包括環境溫濕度壓力、較精準的溫度壓力數值、超音波測距、單擺實驗、pH值等功能。並且設計在Serial monitor那邊輸入數字來選擇要呈現什麼樣的功能。不過這樣其實太麻煩了,用實體按鈕調控比較方便,也不用連接電腦。

所以這次就新增一個電阻,專門用來調控sensor的檔位。兩端接上正負極,把中間那隻腳丟給一個analog的腳位,讓那個腳位去讀取數值,再將數值設定為條件,依照這個數值決定功能就行。

analog的數值讀取,都是從 0 ~ 1023。所以如果直接把analog讀到的數字變成條件的話,還蠻麻煩的唷。要用一堆大於小於的條件去寫。

所以就要學另一個指令叫做map

arduino官方的例子是這樣

  int val = analogRead(0);
  val = map(val, 0, 1023, 0, 255);
  analogWrite(9, val);

第一行的意思,是起始一個變數叫做va1, 這個變數要去讀 A0 腳位的數值。
第二行的意思,把va1這個數值變成從A0讀到的那個數值,用map調整成一個新的數值。這啥鬼啊?

原本的數值是從0到1023, 那假設我們只要從0到255的話,用這個指令就會幫你等比例縮小。把原本0-1023的數值縮到0-255。

那如果我要用這玩意兒變成可以調控功能的檔位,檔位共有6種的話,就是這樣

va1 = map(va1, 0, 1023, 0, 5)

這樣就行啦。



張貼留言