1. 程式人生 > >【Arduino官方教程第一輯】示例程式 3-2 模擬訊號輸入

【Arduino官方教程第一輯】示例程式 3-2 模擬訊號輸入

模擬訊號輸入

本例中,我們根據電位器(或用光敏電阻替代)的阻值變化來改變LED閃爍頻率。電阻的模擬訊號值將根據電壓變化。

完成本例所需的硬體裝置

  • Arduino板或Genuino板
  • 電位器 或 10kΩ光敏電阻+10kΩ電阻
  • 紅色220Ω LED燈(或者板載LED)

電路連線

電位器接法

圖片來自官網

連線3根線到Arduino/Genuino板。電位器一個外側的引腳連線到GND,另一個外側的引腳連線到+5V。A0口連線到電位器中間引腳。

對於本例來說,用13號板載LED也可。如要用外加LED,將LED長腳(陽極)用220Ω電阻連線到13號引腳。將LED短腳(陰極)連線到GND引腳。

譯者注:原文是“連線到13號引腳旁邊的引腳”。

光敏電阻接法

圖片來自官網

用光敏電阻的電路使用分壓器來保證模擬訊號在轉換電壓時有高阻抗。因為模擬輸入引腳幾乎不會消耗任何電流,因此根據歐姆定律,不管電阻阻值為多少,連線到5V的那一端總是5V。為了根據光敏電阻阻值變化改變電壓,電阻分壓器必不可少。電路中用一個可變電阻和一個電位器來組成分壓器,分壓器”劃片”在兩電阻的中間。
測量的電壓應根據以下公式可算得:

Vout=Vin*(R2/(R1+R2))

Vin為5V,R2為10kΩ,R1為光敏電阻。光敏電阻在黑暗時為1mΩ,白天(10 流明 )時10kΩ,日光下/明亮燈(超過100 流明 )管下小於1kΩ)。

原理圖

電位器接法

圖片來自官網

光敏電阻接法

圖片來自官網

例程程式碼

在程式碼開頭,sensorPin變數被設定為A0,A0口連線著電位器。LED引腳被設定為13。你也可建立另一個sensorValue變數來儲存從感測器讀出來的值。

analogRead()函式將0-5v的電壓值對映成為0-1023。這個操作通過板子上的數模轉換電路(ADC)完成。

通過轉動電位器的軸,你能改變電位器劃片兩側的電阻(整個電位器是由其中間引腳分開的滑動變阻器)。這樣一來就能改變中間引腳上的電壓,從而讓你在analogRead()讀出不同的值。當電位器轉軸被朝一個方向轉到底時,中間引腳和連線到GND引腳之間的電阻為0。analogRead()

此時應返回0。當電位器轉軸被朝另一個方向轉到底時,中間引腳和連線到5v引腳之間的電阻為0。中間引腳連線到+5v,analogRead() 返回1023。在中間時,analogRead() 根據A0口上的電壓按照比例返回0-1023的值。

返回值被存入sensorValuesensorValue用來設定delay()的毫秒數,即為閃爍的間隔時間。sensorValue值越小,閃爍的間隔時間越小。sensorValue的值是在閃爍的開頭讀取的,因此LED開啟和關閉之間的時間也總是相等的。

/*
  Analog Input
  本例向你展示在A0口讀取輸出模擬訊號的感測器的值,並且根據這個值讓13號引腳的LED閃爍。LED的閃爍週期根據analogRead()返回值確定。

 電路搭建:
 * 電位器中間的引腳連線到A0,兩側分別連線+5V和GND
 * LED陽極(長腳) 連線到13號引腳
 * LED負極(短腳)連線到GND

 * 小貼士:因為大多數板有板載LED連線到13號引腳,因此外加的LED是可選的。

    程式碼是公開的。
 */

int sensorPin = A0;    // 設定電位器的引腳
int ledPin = 13;      // 設定LED引腳
int sensorValue = 0;  // 感測器值的儲存變數

void setup() {
  // 宣告ledPin為輸出模式:
  pinMode(ledPin, OUTPUT);
}

void loop() {
  // 從感測器讀值:
  sensorValue = analogRead(sensorPin);
  // 開啟LED
  digitalWrite(ledPin, HIGH);
  // 暫停程式sensorValue毫秒:
  delay(sensorValue);
  // 將LED關閉:
  digitalWrite(ledPin, LOW);
  // 暫停程式sensorValue毫秒:
  delay(sensorValue);
}

相關資料

更新程序

日期 日誌 譯者
2016年5月9日 建立並翻譯文件 唐家勳

譯者:唐家勳
郵箱:[email protected]
QQ:649196486
轉載請註明出處,一切只因為熱愛。
希望您能指出寶貴意見,謝謝。
我的微信公眾號歡迎關注,2016年6月開始更新

相關推薦

Arduino官方教程第一示例程式 3-2 模擬訊號輸入

模擬訊號輸入 本例中,我們根據電位器(或用光敏電阻替代)的阻值變化來改變LED閃爍頻率。電阻的模擬訊號值將根據電壓變化。 完成本例所需的硬體裝置 Arduino板或Genuino板 電位器 或 10kΩ光敏電阻+10kΩ電阻 紅色220Ω LED

Arduino官方教程第一示例程式 3-5 模擬訊號的校準

模擬訊號的校準 本例向你展示校準感測器的一個技巧:在啟動時先讀取感測器值5秒鐘,然後尋找其最大、最小值。校準後的最大、最小值將在map函式有用。 完成本例所需的硬體裝置 Arduino板或Genuino板 LED 模擬訊號的感測器(光敏電阻就

Arduino官方教程第一示例程式 5-1 陣列

陣列 本例中我們使用for迴圈配合一個數組變數向你展示Arduino中陣列的使用。陣列是一個有多個”部分”的變數。如果我們把普通變數看做一個盛裝值的“杯子”,那麼陣列就好像是一個“製冰器”。陣列就好像是一連串“杯子”,每個杯子都可以儲存一個值(不過這些值

Arduino官方教程第一示例程式 5-4 Switch和Case條件語句

Switch和Case條件語句 If語句允許你根據條件的真假(真(TRUE)或假(FALSE))進行兩個分支操作。當需要進行多個判斷時,你就必須使用If巢狀。不過其實還有一種更為簡潔的處理多條件判斷的方法,那就是使用switch語句,switch語句允許

Arduino官方教程第一示例程式-目錄

譯者序:即將進入大學學習,我謹以本文件的來作為我CSDN部落格的開篇。前段時間看了許多文章,便覺得作為一個程式設計師開通自己的技術部落格是十分重要的。因為這樣做不僅能夠提高自己的技術水平、將知識做鞏固和回爐,還能通過自己的奉獻讓更多人獲利。最好發揮知識

Arduino官方教程第一示例程式 6-3 Memsic2125加速度計

Memsic2125加速度計 Memsic2125是一款兩軸加速度計,它能夠測量兩個方向正負2g的加速度(g代表重力加速度)。它的引腳設計很簡單:只有兩個資料輸出引腳,一個為X軸,一個為Y軸。它的資料輸出引腳會根據加速度的大小輸出不同的脈寬(不知道脈寬是

Arduino官方教程第一示例程式 5-3 If條件判斷

If條件判斷 條件判斷結構是程式設計中的最基本結構,在Arduino和其他語言中往往用if()語句實現條件判斷。if()讓你能夠根據某個條件(Condition)的真假執行不同的程式碼。(條件只有兩種可能,要麼是真(true)要麼是假(false))if語句的

Arduino官方教程第一示例程式 4-11 虛擬調色盤

虛擬調色盤 本例向你展示如何從Arduino傳送多個值到電腦。從三個電位器上獲取的值將被用來給Processing工程或Max/MSP工程設定背景色。 完成本例所需的硬體裝置 Arduino板或Genuino板 3個模擬訊號感測器 (電位器,

Arduino官方教程第一示例程式 5-6 While迴圈

While迴圈 有時你可能需要進行這樣的操作:如果某個條件為true的話就一直停在那裡,直到它由true變成false才繼續執行(反過來也可以,開始為false,直到true才繼續)。你可以使用while迴圈來做到這一點。本例向你展示如何使用while迴

Arduino官方教程第零基礎部分 2-2 模擬引腳

模擬引腳 本文是對於Arduino晶片上模擬引腳的介紹。上面所說的Arduino晶片主要包括(Atmega8, Atmega168,Atmega328或Atmega1280)。 數模轉換電路 Arduino中使用的Atmega控制器都配有一個板

可能有點用的記錄Android Studio 3.2.1更新(2)

前幾天更新到3.2.1 開啟原來的專案報了個奇怪的錯 Could not find aapt2-proto.jar (com.android.tools.build:aapt2-proto:0.3.1). Searched in the following location

3D-slicer環境搭建之vs2013 + qt5.3.2 環境搭建

開啟http://download.qt.io/archive/網址 下載qt及外掛,具體詳見 http://blog.csdn.net/haodemei2010/article/details/45484389

quick-cocos2d-x 遊戲開發quick cocos2dx 3.2最穩定版 建立工程+sublime除錯執行

測試環境mac quick cocos2dx 3.2 quick cocos2dx 3.2版本已經差不多了 已經可以建立工程使用了,看下流程 1.最新版quick cocos2dx 3.2 建立工程,編譯,執行 1.1下載 按照README配置工程,執行player3

Arduino基礎教程LCD5110顯示屏

Nokia 5110顯示屏模組 準備材料 Arduino UNO *1 Nokia 5110 LCD *1 跳線 若干 接線 Nokia 511

三星官方教程如何為Gear VR 開發應用(一):開發環境搭建(轉)

三星GearVR已經成為第一個成熟的移動VR平臺,並擁有目前全球最大也是最穩定的移動VR使用者群體。基於GearVR的應用越來越多,本文將為開發者介紹如何用Unity為Gear VR開發一個360度圖片檢視器。 搭建開發環境(Windows OS) 在開始用Uni

Arduino基礎教程RS1307時鐘模組

RS1307時鐘模組 RS1307是一個低功耗的外接時鐘模組,它可以讓你的專案即使在斷電的情況下,也能保證在重新啟動後走時正確。 所需材料 1x Ar

Nutch基礎教程之七Nutch的2種執行模式:local及deploy

mapred nap ont nal servlet miss mos ant issue 在對nutch源碼執行ant runtime後,會創建一個runtime的文件夾。在runtime文件夾下有deploy和local 2個文件夾。 [[email 

CC2530入門教程-增強版基礎技能綜合實訓案例(基礎版)-題目需求

情況 led 興趣 題目 嵌入式開發 廣東 難點 在一起 參數 【CC2530入門教程-增強版】基礎技能綜合實訓案例(基礎版)-題目需求 廣東職業技術學院 歐浩源 一、引用 不管是簡單的單片機應用,還是復雜的嵌入式系統,在我看來它們的本質結構是差不多的,都離不開“

Lucene4.8教程之二索引

文件路徑 位置 存在 this nth 創建索引 exe 搜索 最簡 一、基礎內容 0、官方文檔說明 (1)org.apache.lucene.index provides two primary classes: IndexWriter, whic

CQ18階梯賽第一題解

sca 就是 scanf main ace con 連續 動態 return 【A-風格不統一如何寫程序】 輸入字符串,得到長度,對於每個字符:如果是大寫,則改為:‘_’+小寫;如果是‘_’則忽略‘_&rsquo