旋转编码器、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.mzph.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…

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…

V90 PN伺服驱动器附加报文750详细使用介绍(算法分析)

1、V90PN伺服驱动器转矩控制(750报文) V90 PN伺服驱动器转矩控制(750报文)_v90pn转矩控制-CSDN博客文章浏览阅读3.4k次,点赞2次,收藏3次。主要介绍通过标准报文加附加报文 750 实现发送驱动报文的控制字、速度给定、转矩限幅及附加转矩给定的功能,首先就是V90在博途环境下…

分享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;明年加油了

!力扣 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] 也将被视为正确答案…

封装了一个使用UICollectionViewLayout 实现的吸附居左banner图

首先查看效果图 实现的原理就是通过自定义UICollectionView layout&#xff0c;然后 设置减速速率是快速就可以达到吸附的效果 _collectionView.decelerationRate UIScrollViewDecelerationRateFast; 下面贴出所有代码 这里是.h // // LBMiddleExpandLayout.h // Liubo…

文章解读与仿真程序复现思路——电力系统自动化EI\CSCD\北大核心《具有源荷不平衡特性的配电网智能软开关和储能联合规划》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

CTF_RE学习

学了一个 map&#xff08;&#xff09;函数的使用 import base64rawData "e3nifIH9b_CndH" target list(map(ord, rawData)) # map 函数将 rawData 中的每个字符传递给 ord 函数。ord 函数返回给定字符的 Unicode 码点 print(target) # 打印 map 对象的内存地址&…

MySQL数据库的约束

MySQL对于数据库存储的数据, 做出一些限制性要求, 就叫做数据库的"约束". 在每一列的 列名, 类型 后面加上"约束". 一. not null (非空) 指定某列不能存储null值. 二. unique (唯一) 保证这一列的每行必须有唯一值. 我们可以看到, 给 table 的 sn 列插…

【微服务】docker部署redis,一主二从三哨兵,读写分离

配置redis读写分离 3台虚拟机 创建目录用于挂载 mkdir -p /root/redis/{conf,data,logs} #master配置文件 bind 0.0.0.0 //任何ip都能访问 port 6379 //redis端口号 logfile "/data/redis.log" //日志文件存放位置&#xff0c;启动redis之前设置为空&#xff…

prometheus docker部署

1.安装Docker sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-EOF {"registry-mirrors":["https://hub-mirror.c.163.com"] } EOF export DOWNLOAD_URL"https://hub-mirror.163.com/docker-ce" curl -fsSL https://ge…

【LIN】STM32新能源汽车LIN通信实现过程

【LIN】STM32新能源汽车LIN通信实现过程 文章目录 前言一、软件二、接线图三、硬件原理图四、上位机五、PICO示波器串行解码1.软件中的LIN波特率设置-192002.PIC设置3.PIC串行解码 六.引用总结 前言 【电机控制】直流有刷电机、无刷电机汇总——持续更新 使用工具&#xff1a;…

godot.bk

1.搜索godot国内镜像&#xff0c;直接安装&#xff0c;mono是csharp版本 2.直接解压&#xff0c;50m&#xff0c;无需安装&#xff0c;直接运行 3.godot里分为场景&#xff0c;节点 主场景用control场景&#xff0c;下面挂textureact放背景图片&#xff0c;右键实例化子场景把…