第十九篇、基于Arduino uno,获取光电开关(NPN/PNP型)的信号——结果导向

news2025/1/11 23:51:11

0、结果

说明:先来看看串口调试助手显示的结果,如果有遮挡会输出低电平或者高电平,没有遮挡会输出高电平或者低电平,如果是你想要的,可以接着往下看。


1、外观

说明:这里要区分到底是NPN型号的,还是PNP型号的,他们的接线方式和触发电平都不太一样。


2、连线

 说明:只需要连接四根线。
uno————PNP型光电开关

     5V--------------棕色的线
  GND--------------蓝色的线
       4--------------黑色的线
  GND---10K电阻---黑色的线

3、源程序

 说明:采用非阻塞方式编写,一定时间检测一次是否有遮挡,并将对应功能进行函数化,方便移植。

/****************************************光电开关 part****************************************/
/*
  接线:
  VCC------棕色的线
  GND------蓝色的线
  GND---10K电阻---黑色的线
    4------黑色的线
*/
#define photoSwitchPin 4                                                    //定义一个引脚  
int photoelectricityState = 0;                                              //定义一个变量
#define photoSwitchTimeInterval 300               //检测一次的时间间隔                   
unsigned long photoSwitchTimes = 0;                //记录设备运行时间
/****************************************set up and loop part*********************************/
void setup() {
  Serial.begin(9600);                                                       //设置串口波特率为9600
  pinMode(photoSwitchPin, INPUT);                                           //引脚设置成输入

  Serial.println("设备上线!");
}
void loop() {
  getphotoelectricityState();                                               //获取光电开关信息
}
/*获取光电开关信息*/
void getphotoelectricityState() {
  if (millis() - photoSwitchTimes >= photoSwitchTimeInterval) {             //一定时间执行一次
    photoSwitchTimes = millis();

    photoelectricityState = digitalRead(photoSwitchPin);                    //读取信号
    Serial.print("遮挡0,无遮挡1:");                                         //也有可能是反的
    Serial.println(photoelectricityState);
  }
}

4、注意事项

说明:需要知道自己的传感器是什么类型的,如果是NPN型的,有障碍物的时候输出低电平,没有障碍物的时候输出高电平;如果是PNP型的,有障碍物的时候输出高电平,没有障碍物的时候输出低电平。此外他们的接线方式也不一样。如果想要调节检测障碍物的距离,可以调节传感器后面的旋钮,顺时针转可以增加检测距离,逆时针转可以减少检测距离。

 

5、基本原理

        光电开关是一种使用光电效应进行检测和控制的传感器。在Arduino中,常使用光电开关来检测物体的位置、颜色、透明度等信息。
        简单来说,光电开关包括一个光源和一个光敏元件。当物体经过光电开关时,会遮挡光源发出的光线,导致光敏元件接收到的光强度发生变化。这样,通过检测光敏元件接收到的光强度变化,就可以确定物体的位置、颜色、透明度等信息。
        在Arduino中,光电开关通常使用数字PIN或模拟PIN进行连接。当光敏元件接收到的光强度超过预设阈值时,将会触发Arduino的输入引脚,从而产生电信号。Arduino可以根据这个电信号来实现对物体的检测和控制。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/602101.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分享几个索引创建的小 Tips

文章目录 1. 冗余索引1.1 联合索引左边列1.2 索引中加入主键 2. 隐藏的索引排序3. 删除不使用的索引4. 手动更新索引统计信息5. 适时优化表 关于 MySQL 中的索引,松哥前面已经和小伙伴们聊了不少了,不过在索引使用的时候,还是有一些需要注意的…

如何发布一个npm包

1、注册账号 https://www.npmjs.com/ 使用邮箱注册即可 a. 邮箱会在本地登录时发送验证码使用 b. 发布包后邮箱会收到通知 2、生成AccessToken (1)直接本地登录 # 根据提示输入用户名、密码、注册邮箱 npm login# 输入完邮箱会发送验证码&#xff0c…

如何做一个有质量的技术分享

分享信息并不难,大多数人都能做到,就算是不善言谈性格内向的技术人员,通过博客或社交媒体,或是不正式的交流,他们都能或多或少的做到。但是如果你想要做一个有质量有高度的分享,这个就难了。 所谓的有质量和有高度,我心里面的定义有两点: 分享内容的保鲜期是很长的会被…

win11本地安装k8s

1、确保本地已经安装DesktopDocker; 2、使用choco下载安装Kind,正常下载安装报错提示,建议使用管理员权限 使用管理员权限下载安装Kind 也可以从github下载kind到本地进行安装,下载地址 Releases kubernetes-sigs/kind GitHub …

分布式锁Redis基础理论与落地实现与Redisson。

分布式锁Redis基础理论与落地实现 基本概念基于Redis的分布式锁基本用法基于Redis实现分布式锁初级版本改进Redis的分布式锁问题Redis的Lua脚本利用Lua脚本写释放锁业务流程再次改进Redis的分布式锁 总结 Redisson基于setnx实现的分布式锁存在下面的问题Redisson入门Redisson可…

64位系统究竟牛逼在哪里?

想必大家都遇到过这样的问题:安装某个软件的时候,出现提示选择32位版本还是64位版本?我们也可以查看自己的电脑是32位还是64位系统。 Windows Linux 大家可能知道32位和64位和系统有关, 但其实 32 vs 64 可以有多重含义。 一般情…

JVM学习笔记(上)

1、总体路线 2、程序计数器 Program Counter Register 程序计数器(寄存器) 作用:是记录下一条 jvm 指令的执行地址行号。 特点: 是线程私有的不会存在内存溢出 解释器会解释指令为机器码交给 cpu 执行,程序计数器会…

GCC写个库给你玩,就这?

前言 什么是GCC GCC原名为 GNU C语言编译器 「GCC」(GNU Compiler Collection,GNU编译套件) 是由GNU开发的编程语言编译器。 正文 安装命令 sudo apt-get insatll gcc g注意安装版本要大于4.8.5因为4.8.5以后的版本才支持c11标准 查看版本 gcc -v gcc --version g -v g …

Vue.js 的数据双向绑定实现原理

Vue.js 的数据双向绑定实现原理 Vue.js 是一款流行的前端框架,它采用了数据双向绑定的方式,让前端开发人员更加方便地管理数据和视图。在本文中,我们将深入探讨 Vue.js 的数据双向绑定实现原理,以及相关的代码示例。 数据双向绑定…

1. TensorRT量化的定义及意义

前言 手写AI推出的全新TensorRT模型量化课程,链接:TensorRT下的模型量化。 课程大纲如下: 1. 量化的定义及意义 1.1 什么是量化? 定义 量化(Quantization)是指将高精度浮点数(如float32)表示为低精度整数(如int8)的过程&…

jmeter性能测试步骤实战教程

1. Jmeter是什么? 2. Jmeter安装 2.1 JDK安装 由于Jmeter是基于java开发,首先需要下载安装JDK (目前JMeter只支持到Java 8,尚不支持 Java 9) 1. 官网下载地址: http://www.oracle.com/technetwork/java/…

Map、Set和哈希表的应用练习(数据结构系列15)

目录 前言: 练习题: 结束语: 前言: 在上一节博客中小编给大家介绍了Map、Set和哈希表的一些简单的知识点,同时也给大家简单的演示了一下如何使用他们里面的一些基础方法,那么接下来让小编带着你们一起来…

当心!经济学家分析:未来三年内做好随时失业的准备

AI人工智能又来抢饭碗了,这次竟然通过了公认难考的会计行业考试! 近期,OpenAI的大语言模型最新版GPT-4已经完成美国注册会计师(简称CPA)考试,四大主要会计考试所有科目的平均得分为85.1。 而在CPA考试中&…

落地页设计的营销心理学(三)

本文是「落地页设计的营销心理学」这个主题系列文章的收官篇,要给大家分享关于用户行动号召、提高用户参与度和整个营销落地页结构的设计。 回顾系列文章: 《落地页设计的营销心理学(一)》 《落地页设计的营销心理学&#xff08…

C++进阶 —— 线程库(C++11新特性)

十,线程库 thread类的简单介绍 在C11之前涉及多线程问题,都是和平台相关的,如windows和Linux下各有自己的接口,这使代码的可移植性较差;C11中最重要的特性就是对线程进行支持,使得C在并行编程时不需要依赖…

【社区图书馆】《写作脑科学》

文章目录 前言语言和思维写作技巧创造性思维总结 前言 杨滢著的《写作脑科学》是一本关于写作的科学读物,它深入探讨了人类大脑是如何进行创造性思维和表达的。这本书让我对写作有了全新的认识,也为我提供了一些实用的技巧和策略来提高自己的写作能力。…

整理 钢琴教材 约翰·汤普森现代钢琴教程(大汤)

邮箱不能及时回复,现放到网盘里了,文末按需自取 约翰-汤普森钢琴教程1 文件名:(大汤1)约翰汤普森现代钢琴教程 1 超清PDF 文件大小:9.9 MB 下载地址:https://download.csdn.net/download/qq_36040764/85051148 约翰-汤普森钢琴教程2 文件名:(大汤2)约翰汤普森现…

Python3中goto的用法

Python3代码指定跳转可以使用goto这个库: 安装: pip install goto-statement 一般安装的版本是1.2 需要做以下修改才能正常使用: python 使用goto,遇到的问题解决_奶嘴偷走初吻的博客-CSDN博客python goto 出现报错:Attribut…

Python difflib的使用

今天做了一个从list的内容取出一个与指定内容尽可能相似的内容,做完之后抽个几分钟记录下 difflib的作用 比对2个文件的差异. 使用的时候直接 import difflib 即可 get_close_matches 作用 匹配最大相似的内容返回结果 list1 ["abc", "acd", "…

NIO编程

目录 1、什么是NIO编程? 为什么说Java NIO是非阻塞的? 2、Java NIO 通道(Channel)详解 如何获取Channel对象? 3、Java NIO 缓冲区(Buffer)详解 (1)获取缓冲区对象 (2)将数据写入Buffer以…