旋轉編碼器、DS1302 實時時鐘、紅外遙控模塊、雨滴探測傳感器 | 配合Arduino使用案例

旋轉編碼器

src=http___cbu01.alicdn.com_img_ibank_O1CN01sMzEe52N30BZzdOqH_!!2210293519906-0-cib.jpg&refer=http___cbu01.alicdn.webp

旋轉編碼器是一種用作檢測自動化領域中的角度、速度、長度、位置和加速度的傳感器。

有絕對式和增量式,這里使用增量式(相對)。
絕對輸出只是周的當前位置,是他們成為角度傳感器。增量輸出關于軸的運動信息,需要進一步處理成速度、距離和位置等信息。

本案例通過左右旋轉輸出數值,按下清空數值。

/****** Arduino 接線 ***** Arduino   傳感器* VCC       5v* GND       GND* 2        CLK   * 3        DT   * 4        SW   ***********************/int clkPin = 2;
int dtPin = 3;
int swPin = 4;void setup() {Serial.begin(9600);  // 串口通信用于輸出 logpinMode(clkPin, INPUT);pinMode(dtPin, INPUT);pinMode(swPin, INPUT);digitalWrite(swPin, HIGH);
}
// 旋轉就會不斷變大或者變小,按下就會清零
int encoderVal = 0;
void loop() {int change = getEncoderTurn();encoderVal = encoderVal + change;if (digitalRead(swPin) == LOW) {// 按鈕按下encoderVal = 0;}Serial.println(encoderVal);
}int getEncoderTurn(void) {static int oldA = HIGH;  //set the oldA as HIGHstatic int oldB = HIGH;  //set the oldB as HIGHint result = 0;int newA = digitalRead(dtPin);     //read the value of clkPin to newAint newB = digitalRead(clkPin);    //read the value of dtPin to newBif (newA != oldA || newB != oldB)  //if the value of clkPin or the dtPin has changed{if (oldA == HIGH && newA == LOW) {result = (oldB * 2 - 1);}}oldA = newA;oldB = newB;return result;
}

DS1302 實時時鐘

u=3208019454,1113893018&fm=253&fmt=auto&app=138&f=JPEG.webp

可為程序實現時鐘功能。下面程序將會一秒鐘輸出一次:2023-07-27 星期四 21:28:09

開始之前需要先安裝依賴

image.png

/****** Arduino 接線 ***** Arduino   傳感器* VCC       3.3v* GND       GND* 5        RST   * 6        SDA/DAT   * 7        SCL/CLK   ***********************/#include <Ds1302.h>uint8_t RST_PIN = 5;
uint8_t SDA_PIN = 6;
uint8_t SCL_PIN = 7;// DS1302 RTC instance
Ds1302 rtc(RST_PIN, SCL_PIN, SDA_PIN);const static char* WeekDays[] = {"星期一","星期二","星期三","星期四","星期五","星期六","星期日"
};void setup() {Serial.begin(9600);// 初始化rtc.init();/** 設置時間 **/// 變量定義見代碼底部枚舉Ds1302::DateTime dt = {.year = 23,.month = Ds1302::MONTH_JUL,.day = 27,.hour = 21,.minute = 26,.second = 0,// 周.dow = Ds1302::DOW_THU};rtc.setDateTime(&dt);
}void loop() {// 獲取當前時間Ds1302::DateTime now;rtc.getDateTime(&now);static uint8_t last_second = 0;if (last_second != now.second) {last_second = now.second;Serial.print("20");Serial.print(now.year);  // 00-99Serial.print('-');if (now.month < 10) Serial.print('0');Serial.print(now.month);  // 01-12Serial.print('-');if (now.day < 10) Serial.print('0');Serial.print(now.day);  // 01-31Serial.print(' ');Serial.print(WeekDays[now.dow - 1]);  // 1-7Serial.print(' ');if (now.hour < 10) Serial.print('0');Serial.print(now.hour);  // 00-23Serial.print(':');if (now.minute < 10) Serial.print('0');Serial.print(now.minute);  // 00-59Serial.print(':');if (now.second < 10) Serial.print('0');Serial.print(now.second);  // 00-59Serial.println();}delay(1000);
}//  * 月份枚舉 
// enum MONTH : uint8_t {
//     MONTH_JAN = 1,
//     MONTH_FEB = 2,
//     MONTH_MAR = 3,
//     MONTH_APR = 4,
//     MONTH_MAY = 5,
//     MONTH_JUN = 6,
//     MONTH_JUL = 7,
//     MONTH_AUG = 8,
//     MONTH_SET = 9,
//     MONTH_OCT = 10,
//     MONTH_NOV = 11,
//     MONTH_DEC = 12
// };//  * 周枚舉 
// enum DOW : uint8_t {
//     DOW_MON = 1,
//     DOW_TUE = 2,
//     DOW_WED = 3,
//     DOW_THU = 4,
//     DOW_FRI = 5,
//     DOW_SAT = 6,
//     DOW_SUN = 7
// };

紅外遙控模塊

.jpg

該模塊由兩部分組成:信號發射器和接收器組成。

開始之前先安裝依賴

image.png

/****** Arduino 接線 ***** Arduino   傳感器* VCC       5v* GND       GND* A0        D0    ***********************/#include <IRremote.h>int pin = A0;IRrecv irrecv(pin);
decode_results results;void setup() {Serial.begin(115200); IrReceiver.begin(pin);  
}void loop() {if (IrReceiver.decode()) {// IrReceiver.decodedIRData.command 每個按鈕都是一個不一樣的數字,根據數字判斷即可Serial.println(IrReceiver.decodedIRData.command);IrReceiver.resume();  // 允許接收下一個值} 
} 

雨滴探測傳感器

u=99622666,1154093227&fm=253&fmt=auto&app=138&f=JPEG.webp

用來檢測是否下雨,一般用于汽車的雨刷系統、只能照明和天窗系統

該模塊由兩部分組成:信號發射器和接收器組成。

/****** Arduino 接線 ***** Arduino   傳感器* VCC       5v* GND       GND* A0        A0    雨滴越多值越小* A1        D0    達到閾值時輸入低電平***********************/ int pin1 = A0;
int pin2 = A1; int pin1Val = 0;
int pin2Val = 0; void setup() {Serial.begin(9600);  pinMode(pin2, INPUT);
}void loop() { pin1Val = analogRead(pin1);pin2Val = digitalRead(pin2);Serial.print(pin1Val);  // 雨滴越多值越小Serial.print(" - "); Serial.println(pin2Val); // 達到閾值時輸入低電平delay(200);
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/21452.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/21452.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/21452.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python中degrees怎么用

degrees() 函數可以將弧度轉換為角度。 語法 以下是 degrees() 方法的語法&#xff1a; import math math.degrees(x) 注意&#xff1a;degrees() 是不能直接訪問的&#xff0c;需要導入 math 模塊&#xff0c;然后通過 math 靜態對象調用該方法。 參數 x -- 一個數值。 返…

視頻SK配置教程

視頻SK配置教程 提供的pika接口服務&#xff08;國外的&#xff0c;所以要反代&#xff09;&#xff0c;創建一個pika賬號并開通pika套餐 反向配置教程 https://blog.csdn.net/u012241616/article/details/139391954?spm1001.2014.3001.5502 1、進入站點后臺->功能->…

.Net Core Console 項目如何使用 HttpClient 與 Web 服務通信

前言 HttpClient 類是在 .NET Framework 4.5 和 .NET Core 中引入的新的 HTTP 客戶端類&#xff0c;是 .NET 用于發送和接收 HTTP 請求的類&#xff0c;相比之前的 WebRequest 和 HttpWebRequest&#xff0c; 它提供了現代的、易用的 API&#xff0c;并且具有更好的性能和擴展…

2024 cicsn magicvm

文章目錄 參考檢查逆向vm::runvm::vmvm_alu::set_inputvm_mem::set_inputvm_id::runvm_alu::runvm_mem::run 漏洞思路參考的exp 參考 https://forum.butian.net/share/3048 https://akaieurus.github.io/2024/05/20/2024%E5%9B%BD%E8%B5%9B%E5%88%9D%E8%B5%9Bpwn-wp/#SuperHea…

9個輕量化的效率神器,保證你100%用得上

給你推薦9個輕量化的效率神器&#xff0c;保證你100%用得上。 首先介紹uTools的3個效率技巧 快速啟動 想要快速打開一個應用&#xff0c;不用去一堆的應用圖標里面去尋找&#xff0c;直接按下快捷鍵&#xff0c;輸入應用的名稱或首字母&#xff0c;便可以找到應用&#xff0…

GNeRF論文理解

文章目錄 主要解決什么問題&#xff1f;結構設計以及為什么有效果&#xff1f;個人想法。 主要解決什么問題&#xff1f; 本文主要想要解決的問題是 如何使用uncalibrated的照片來進行Nerf重建。雖然說現在已經有了一些方式可以對相機位姿進行估計和優化&#xff0c;但是他們限…

journal日志管理

1、systemd-journald詳解 systemd-journald日志默認保存在/run/log/journal中&#xff0c;重啟會被清楚&#xff0c;如果存在/var/log/journal目錄&#xff0c;systemd-journald日志會自動改為記入在這個目錄中&#xff0c;同時日志輪轉也會啟動&#xff0c;日志輪狀每月啟動&…

如何通過網站封裝App工具輕松創建移動應用

想象一下&#xff1a;將您的網站變成App 大多數網站管理員和開發人員多多少少都曾夢想過將自己的網站變成一款移動應用。傳統的App開發過程不僅繁瑣&#xff0c;還需要耗費大量的時間和資源。好消息是&#xff0c;現在有了網站封裝App工具&#xff0c;這一切都變得簡單了。您只…

HashMap 隨記

HashMap 構造器 HashMap 共有四個構造器&#xff1a; public HashMap(int initialCapacity, float loadFactor) {// 對于傳入的初始容量&#xff08;loadFactor&#xff09; 及 負載因子&#xff08;loadFactor&#xff09;的一些邊界判斷if (initialCapacity < 0) throw n…

Android Audio基礎——音頻配置xml文件加載(七)

通過前面的文章&#xff0c;我們知道在 AudioPolicyManager 初始化的時候回調用 loadConfig() 方法去加載 Audio 相關的配置信息&#xff0c;這里我們就來詳細看一下。 一、配置文件加載 1、AudioPolicyManager 源碼位置&#xff1a;/frameworks/av/services/audiopolicy/ma…

將下拉彈層渲染節點固定在觸發器的父元素中

將下拉彈層渲染節點固定在觸發器的父元素中 注意: 如果發現下拉菜單跟隨頁面滾動&#xff0c;或者需要在其他彈層中觸發 Select&#xff0c; 請嘗試使用 getPopupContainer{triggerNode > triggerNode.parentElement} 將下拉彈層渲染節點固定在觸發器的父元素中。

【MySQL】探索 MySQL 的 GROUP_CONCAT 函數

緣分讓我們相遇亂世以外 命運卻要我們危難中相愛 也許未來遙遠在光年之外 我愿守候未知里為你等待 我沒想到為了你我能瘋狂到 山崩海嘯沒有你根本不想逃 我的大腦為了你已經瘋狂到 脈搏心跳沒有你根本不重要 &#x1f3b5; 鄧紫棋《光年之外》 什么是 GRO…

遺傳算法與應用分析

遺傳算法的概念 簡單來說&#xff0c;遺傳算法&#xff08;Genetic Algorithm&#xff0c;GA&#xff09;是一種模擬自然進化過程的優化算法。它通過模擬生物進化的遺傳機制&#xff0c;通過選擇、交叉和變異等操作&#xff0c;逐代優化搜索空間中的解。遺傳算法最初由約翰霍蘭…

【面試題-001】什么是面向對象?

文章目錄 什么是面向對象&#xff1f;與面向過程的區別&#xff1f;哪些語言是面向對象 哪些是面向過程&#xff1f; 什么是面向對象&#xff1f; 面向對象&#xff08;Object-oriented&#xff09;是一種程序設計范例&#xff0c;它通過將數據與對數據操作的函數&#xff08;…

V90 PN伺服驅動器附加報文750詳細使用介紹(算法分析)

1、V90PN伺服驅動器轉矩控制(750報文) V90 PN伺服驅動器轉矩控制(750報文)_v90pn轉矩控制-CSDN博客文章瀏覽閱讀3.4k次,點贊2次,收藏3次。主要介紹通過標準報文加附加報文 750 實現發送驅動報文的控制字、速度給定、轉矩限幅及附加轉矩給定的功能,首先就是V90在博途環境下…

算法學習筆記——對數器

對數器 對數器的實現&#xff1a; 你想要測的方法a&#xff08;最優解&#xff09;實現復雜度不好但是容易實現的方法b&#xff08;暴力解&#xff09;實現一個隨機樣本產生器&#xff08;長度也隨機、值也隨機&#xff09;把方法a和方法b跑相同的輸入樣本&#xff0c;看看得…

分享5款.NET開源免費的Redis客戶端組件庫

前言 今天大姚給大家分享5款.NET開源、免費的Redis客戶端組件庫&#xff0c;希望可以幫助到有需要的同學。 StackExchange.Redis StackExchange.Redis是一個基于.NET的高性能Redis客戶端&#xff0c;提供了完整的Redis數據庫功能支持&#xff0c;并且具有多節點支持、異步編…

總結2024/6/3

省流&#xff0c;藍橋杯國優&#xff0c;還是太菜了&#xff0c;聽說都是板子題但是還是寫不出來&#xff0c;靠暴力好歹沒有爆0&#xff0c;還是得多練&#xff0c;明年加油了

JWT 簽名用對稱加密還是非對稱加密?

一 概念梳理 對稱加密和非對稱加密是兩種基本的加密方法&#xff0c;它們在現代密碼學中扮演著核心角色&#xff0c;用于保護數據的安全和隱私。 1.1 對稱加密&#xff08;Symmetric Encryption&#xff09; 對稱加密是指加密和解密使用同一個密鑰的過程。這意味著發送方和接…

!力扣 108. 將有序數組轉換為二叉搜索樹

給你一個整數數組 nums &#xff0c;其中元素已經按升序排列&#xff0c;請你將其轉換為一棵 平衡二叉搜索樹。 示例 1&#xff1a; 輸入&#xff1a;nums [-10,-3,0,5,9] 輸出&#xff1a;[0,-3,9,-10,null,5] 解釋&#xff1a;[0,-10,5,null,-3,null,9] 也將被視為正確答案…