久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9118|回復: 1
打印 上一主題 下一主題
收起左側

Arduino教程-數值校準

[復制鏈接]
跳轉到指定樓層
樓主
Hi,大家好!上一次,我們給大家介紹了一位新成員,代號叫Arduino Mega2560,在這里跟大家提個醒兒,在以后的學習中,只要Arduino UNO能完成的實驗,用Mega2560也一定能完成。好,就醬!下面繼續我們今天新的內容。
在實際使用中,我們很有可能會遇到一種情況,將模擬信號接口獲取到的數值進行重新校準,以方便我們在項目中接下來的實際操作中,使用起來更加便捷。今天我們就來一起看看,關于這個問題,到底是如何解決的。
首先,還是先來看看,我們都需要哪些硬件吧。
硬件方面
圖片來源:Arduino電路硬件
具體如下:
  • Arduino UNO(1塊)
  • 面包板(1塊)
  • 220Ω電阻(1個)
  • 10KΩ電阻(1個)
  • LED神燈(1個)
  • 光敏電阻(1個)
  • 面包線(若干)
嗯,看起來沒有陌生的面孔,之前我們都見過的。好,繼續。
軟件方面Arduino官方提供的IDE
連接電路
圖片來源:Arduino電路連接
還好還好,電路連接也不是特別復雜。在之前的學習中,我們已經對光敏電阻學習過,所以對它的電路連接應該也比較熟悉了。如果一切順利,讓我們進行最后一步。
添加幾行代碼首先,還是新建一個項目窗口。

圖片來源:Arduino官方IDE
然后向其中添加幾行代碼:


  1. // 定義光敏電阻模擬信號引腳常量
  2. const int sensorPin = A0;
  3. // 定義LED神燈數字信號引腳常量
  4. const int ledPin = 9;
  5. // 定義接收光敏電阻模擬信號數值變量
  6. int sensorValue = 0;
  7. // 定義光敏電阻模擬信號最小數值變量,
  8. // 初始化為最大常見整數值1023。
  9. int sensorMin = 1023;
  10. // 定義光敏電阻模擬信號最大數值變量,
  11. // 初始化為最小常見整數值0。
  12. int sensorMax = 0;
  13. // 對Arduino電路板或相關狀態進行初始化方法
  14. void setup() {
  15.   // 定義13號數字引腳為輸出類型引腳
  16.   pinMode(13, OUTPUT);
  17.   // 將13號引腳的狀態初始化為高電壓,
  18.   // 也即將Arduino UNO電路板上自帶的
  19.   // 那盞LED神燈點亮。
  20.   // 點亮此LED神燈的目的是為了清晰的指示
  21.   // 接下來要進行的5秒鐘操作。
  22.   digitalWrite(13, HIGH);
  23.   // 在最開始的5秒鐘,不停地獲取光敏電阻的
  24.   // 數值,以此在這5秒鐘內得到其中的最大和
  25.   // 最小數值。
  26.   while (millis() < 5000) {
  27.     sensorValue = analogRead(sensorPin);
  28.     // 比較獲取到的數值,
  29.     // 如果比sensorMax數值大,
  30.     // 則賦值給sensorMax,以此記錄最終得到
  31.     // 的最大值。
  32.     if (sensorValue > sensorMax) {
  33.       sensorMax = sensorValue;
  34.     }
  35.     // 比較獲取到的數值,
  36.     // 如果比sensorMin數值小,
  37.     // 則賦值給sensorMin,以此記錄最終得到
  38.     // 的最小值。
  39.     if (sensorValue < sensorMin) {
  40.       sensorMin = sensorValue;
  41.     }
  42.   }
  43.   // 5秒鐘過后,將13號數字引腳的數值
  44.   // 設置為低電壓,以此熄滅Arduino UNO
  45.   // 電路板自帶的那盞LED神燈。
  46.   digitalWrite(13, LOW);
  47. }
  48. // 系統調用,無限循環方法
  49. void loop() {
  50.   // 讀取光敏電阻的數值
  51.   sensorValue = analogRead(sensorPin);
  52.   // 使用map()方法,將獲取到的sensorValue數值,
  53.   // 從sensorMin~sensorMax的數值范圍內,
  54.   // 映射到0~255數值范圍內的某個數值。
  55.   sensorValue = map(sensorValue, sensorMin, sensorMax, 0, 255);
  56.   // 保證映射完成之后的sensorValue數值在0~255范圍內。
  57.   // 第一個參數是輸入值,
  58.   // 第二個參數和第三個參數是數值的取值范圍。
  59.   // 返回值被限定在0~255之間。
  60.   sensorValue = constrain(sensorValue, 0, 255);
  61.   // 將最終校準后的數值設置給LED神燈
  62.   analogWrite(ledPin, sensorValue);
復制代碼



好!代碼一共就這幾行,只有一個新面孔,那就是constrain()方法。這個方法的使用也很簡單,代碼的注釋里已經說明了使用方法,這里不再啰嗦。

圖片來源:Arduino官方IDE的文件編輯菜單選項
點擊上圖中標有向右指向的箭頭圖標,將編寫完成的代碼燒入Arduino電路板。如果一切順利,LED神燈的亮度會隨著光敏電阻的光線強弱進行變化。
總結通過這次學習,我們知道了如何校準數值。這對于主要以模擬信號的傳感器而言,有時候是非常必要的,可以過濾掉忽高忽低的數值,并將最終數值強制變換到指定的某個數值范圍內,對于數值的穩定起到很關鍵的作用。在我們做的這個實驗中,光敏電阻越亮,產生的數值越大,相應的LED神燈也就越亮。那如果想讓光敏電阻越暗,LED神燈變的越亮應該怎么辦呢?如果改裝一下,就可以變身一款時髦的應急燈嘍!可以開動腦筋想一想!
下期預告對于模擬信號的傳感器,產生的數值有可能不是非常的穩定,或者說偶爾有可能會產生忽高忽低的數值,那如何讓獲取到的模擬數值變的連貫平滑呢?好!下一次我們就解決這個問題!


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:239822 發表于 2017-10-23 10:30 | 只看該作者
樓主,你的下一期在哪呢,需要參考你的消抖思路,共享大愛,贊
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产福利在线 | 99精品欧美一区二区三区综合在线 | 亚洲最大福利网 | 免费视频一区二区三区在线观看 | 精品国产乱码久久久久久中文 | 中文字幕日韩欧美 | 久夜精品 | 91在线视频观看 | 久久精品国产一区二区电影 | 久久五月婷 | 国产一区欧美 | 成人精品免费视频 | 黄色毛片视频 | 国产一区二区三区日韩 | 极品在线 | 亚洲精品 在线播放 | 亚洲高清在线观看 | 一区二区三区中文字幕 | 午夜在线小视频 | 亚洲精品久久久久久宅男 | 91精品国产乱码久久久久久 | 狠狠操天天干 | 日韩在线一区二区三区 | 91欧美精品成人综合在线观看 | 91久久精品视频 | 免费毛片网站在线观看 | 欧美综合久久 | 国产精品99久久久久久动医院 | 欧美成人不卡 | 日韩一区av | 成人免费视频网站在线观看 | 农村妇女毛片精品久久久 | 综合久| 日本一二区视频 | 国产精品福利在线 | 99国内精品久久久久久久 | 久久成人一区二区三区 | 国产精品中文字幕在线播放 | 欧美成人一区二区 | 久久久久久久久久久丰满 | 精品96久久久久久中文字幕无 |