当前位置: 首页 > news >正文

Arduino学习笔记3

一.RGB三色小灯实验

1.源代码

int rgb_R=11;//接到板子上面的PWM口11 R
int rgb_G=9;//接到板子上面的PWM口9 G
int rgb_B=10;//接到板子上面的PWM口10 B
void setup() 
{pinMode(rgb_R,OUTPUT);//设置rgb_R的控制口为输出模式pinMode(rgb_G,OUTPUT);//设置rgb_G的控制口为输出模式pinMode(rgb_B,OUTPUT);//设置rgb_B的控制口为输出模式
}
void color(int red,int green,int blue)//注意其中各个参数范围为0到255,值不要超过255
{analogWrite(rgb_R,red);analogWrite(rgb_G,green);analogWrite(rgb_B,blue);
}void loop() 
{color(255,255,255);//whitedelay(1000);//延时1scolor(255,0,0);//reddelay(1000);//延时1scolor(0,255,0);//greendelay(1000);//延时1scolor(0,0,255); //bluedelay(1000);//延时1s}

2.电路图

jOJG.jpg

连接电路图最重要的是RGB三个引脚的判断,其中我们可以首先判断GND引脚即最长的那个引脚,GND引脚左边一个即为R引脚,右边两个分别是G引脚、B引脚。

3.RGB

RGB是一种表示颜色的方式,它是由红(Red)、绿(Green)、蓝(Blue)三原色组合而成的。在RGB颜色模型中,每个数字表示红、绿、蓝三种颜色的强度,范围从0到255。通过调节这三种颜色的强度及其组合比例,可以得到各种不同的颜色。这种方式被广泛应用于电子设备和计算机等技术领域。在网页设计、图像处理、游戏开发等领域中,RGB也是最为常用的颜色表示方式之一。

在计算机中可以使用RGB(0,0,0)到RGB(255,255,255)表示任意颜色。其中,RGB(255,255,255)代表纯白色,RGB(0,0,0)代表黑色。

在RGB颜色模型中,每个数字表示红、绿、蓝三种颜色的强度,范围从0到255。所以RGB(255,255,255)指的是红、绿、蓝三种颜色全都最大强度,即纯白色;RGB(0,0,0)指的是红、绿、蓝三种颜色全都最小强度,即黑色。

二.倾斜开关控制实验

1.源代码

int led = 2;//定义数字口2控制LED灯
int val;//定义变量valvoid setup() 
{ Serial.begin(9600);     //设置波特率为9600pinMode(led,OUTPUT);//设置数字2引脚为输出模式 //本设计用的是模拟口A0也就是14口,模拟口不需要初始化是输出或者输入模式的
}void loop() 
{ val = analogRead(14);//读取模拟14口电压值 Serial.println("模拟量值为:");  //显示字符串"模拟量值为:"Serial.println(val);    //读取模拟接口A0的值,并且通过串口进行显示出来if(val>512)//如果大于512,也就是对应的2.5V { digitalWrite(led,LOW);//关闭led灯 } else//否则 { digitalWrite(led,HIGH);//打开led灯 } delay(1000);
} 

2.电路图

jewz.jpg

3.倾斜开关

倾斜开关(Tilt Switch)是一种基于重力感应原理的电子元件,通常由一个小球和两个接触点构成。当倾斜开关处于正常位置时,小球会挡住接触点,导致电路中断,此时低电平占空比为100%;而当倾斜开关发生倾斜时,小球会滚动离开其中一个接触点,导致电路闭合。这种开关可以用于检测物体的倾斜、倾倒或运动方向等情况,通常用于玩具、游戏机、汽车安全气囊等产品中。在 Arduino 电路中,倾斜开关也可以用来控制 LED 灯、蜂鸣器等输出设备。

(只要不是正常位置,我们都当作闭合电路)

倾斜开关产生模拟信号的原理是:倾斜开关内部有一个可以倾斜的小球,当倾斜角度改变时,小球接触的金属片位置也会发生变化,从而导致金属片之间的电阻值发生改变。因此,将倾斜开关连接到模拟口A0上,通过analogRead()函数读取A0口的电压值,就可以获取到与倾斜角度相关的模拟信号。根据读取到的信号值,判断是否大于512(45度),如果大于512则关闭LED灯,否则打开LED灯。这样,就可以实现根据倾斜角度控制LED灯亮灭的效果。

三.火焰传感器控制LED实验

1.源代码

int led = 2;//定义数字口2控制LED灯
int val;//定义变量valvoid setup() 
{ Serial.begin(9600);pinMode(led,OUTPUT);//设置数字2引脚为输出模式 }void loop() 
{ val = analogRead(14);//读取模拟14口电压值 Serial.println("模拟量值为:");Serial.println(val);if(val<10)//可以通过调节这个参数来改变火焰检测的阀值{ digitalWrite(led,LOW);//关闭led灯 } else//否则 { digitalWrite(led,HIGH);//打开led灯 } delay(1000);
} 

2.电路图

TB3T.jpg

3.火焰传感器

火焰传感器与光敏传感器、倾斜开关等不同,火焰传感器通常是一种模拟传感器,它可以检测到火焰的存在。它长的一端通常需要接5V电源是因为该传感器需要工作在一定的工作电压范围内。5V是比较常见的工作电压,能够满足大多数应用场景的需求。

四.火焰报警器实验

1.源代码

int beep = 2;//定义数字口2控制蜂鸣器
int val;//定义变量valvoid setup() 
{ Serial.begin(9600);     //设置波特率为9600pinMode(beep,OUTPUT);//设置数字2引脚为输出模式 }void loop() 
{ val = analogRead(14);//读取模拟14口的值 Serial.println("模拟量值为:");  //显示字符串"模拟量值为:"Serial.println(val);    //读取模拟接口A0的值,并且通过串口进行显示出来if(val<15)//可以通过调节这个参数来改变火焰检测的阀值{ digitalWrite(beep,LOW);//关闭蜂鸣器} else//否则 { digitalWrite(beep,HIGH);//打开蜂鸣器 } delay(1000)
} 

2.电路图

这里实现报警器即用一个蜂鸣器代替上个实验的LED灯即可,电路图类似,请 参考上一个实验即可,也并无陌生器件和模式函数。

五.电压表实验

1.源代码

int dyPin=14;   //定义电位器接口14(这个是板子的模拟口A0)
int val;//定义变量
int dyValue;//定义电压示数变量
void setup()
{pinMode(dyPin,INPUT);  //定义数字接口为输入接口Serial.begin(9600);     //设置波特率为9600
}void loop()
{Serial.println("电压值为:");    //显示字符串"模拟量值为:"val = analogRead(dyPin);    //读取模拟口的模拟量数值dyValue=map(val,0,1023,0,500);//这个函数是将电位器调节的模拟量的值按比例转换成对应的电压量Serial.println((float)dyValue/100.00);    //串口显示对应的电压值delay(1000);//延时1秒
}

2.电路图

电路图请参考电位器调节实验,因为本次实验只是在电位器调节实验进行程序的修改,逻辑并无不同。

3.map函数

  • 作用:map()可以用来将某一数值从一个区间等比映射到一个新的区间。
  • 语法:map (x, in_min, in_max, out_min, out_max)
  • x: 要映射的值
  • in_min: 映射前区间最小值
  • in_max: 映射前区间最大值
  • out_min: 映射后区间最小值
  • out_max 映射后区间最大值

例如:map(val,0,1023,0,500)的作用是把val的值从[0,1023]等比例缩放为[0,500]。

4.串口显示电压值

用map函数进行等比映射后,范围为[0,500]但是我们 arduino 长用的电压范围为0到5V,注意电压范围不是整数,他是一个浮点型,所以需要float进行转化。

六.说明

接上一篇博客,arduino学习笔记3!

相关文章:

Arduino学习笔记3

一.RGB三色小灯实验 1.源代码 int rgb_R11;//接到板子上面的PWM口11 R int rgb_G9;//接到板子上面的PWM口9 G int rgb_B10;//接到板子上面的PWM口10 B void setup() {pinMode(rgb_R,OUTPUT);//设置rgb_R的控制口为输出模式pinMode(rgb_G,OUTPUT);//设置rgb_G的控制口为输出模…...

BPMN2.0 任务-用户任务

“用户任务(user task)”用于对需要人工执行的任务进行建模。当流程执行到达用户任务时,会为指派至该任务的用户或组的任务列表创建一个新任务。 用户任务用左上角有一个小用户图标的标准任务(圆角矩形)表示。 用户任务在XML中如下定义。其中id是必须属性,name是可选属性…...

David Silver Reinforcement Learning -- Markov process

1 Introduction 这个章节介绍关键的理论概念。 马尔科夫过程的作用&#xff1a; 1&#xff09;马尔科夫过程描述强化学习环境的方法&#xff0c;环境是完全能观测的&#xff1b; 2&#xff09;几乎所有的RL问题可以转换成MDP的形式&#xff1b; 2 Markov Processes 2.1 Mark…...

项目结束倒数2

今天,解决了,多个点的最短路问题 用的dfs,配上了floyed计算出的广源距离 难点是要记录路线,dfs记录路线就很烦 但是好在结束了,经过无数的测试,确保没啥问题(应该把) 来看看我的代码 void dfs(int b[], int x, int* sum, int last, int sums, int a[], BFS& s, Floyd_A…...

VBA智慧办公9——图例控件教程

如图&#xff0c;利用VBA进行可视化交互界面的设计&#xff0c;在界面中我们用到了label&#xff0c;button&#xff0c;text&#xff0c;title等多个工具&#xff0c;在进行框图效果的逐一实现后可进行相应的操作和效果实现。 VBA&#xff08;Visual Basic for Applications&a…...

Presto VS Spark

环境配置 5个节点&#xff0c;每个节点10G内存。 测试SQL&#xff0c;每个执行3次&#xff0c;求平均&#xff0c;对比计算性能。 版本信息 Spark&#xff1a;2.3.1Presto: 0.208 10亿量级查询性能对别 Spark&#xff1a; spark-sql> select sex,count(1) from conta…...

为什么我们能判断声音的远近

想象一下&#xff0c;当我们走在路上时&#xff0c;听到了头顶的鸟儿在树梢间的叫声&#xff0c;即使无法透过浓密的树叶看见它&#xff0c;也可以大致知道鸟儿的距离。此时身后传来由远到近自行车铃铛声&#xff0c;我们并不需要回过头去看&#xff0c;便为它让开了道路。这些…...

那些关于DIP器件不得不说的坑

了解什么是DIP DIP就是插件&#xff0c;采用这种封装方式的芯片有两排引脚&#xff0c;可以直接焊在有DIP结构的芯片插座上或焊在有相同焊孔数的焊位中。其特点是可以很方便地实现PCB板的穿孔焊接&#xff0c;和主板有很好的兼容性&#xff0c;但是由于其封装面积和厚度都比较…...

论文笔记:基于U-Net深度学习网络的地震数据断层检测

0 论文简介 论文&#xff1a;基于U-Net深度学习网络的地震数据断层检测 发表&#xff1a;2021年发表在石油地球物理勘探 1 问题分析和主要解决思路 问题&#xff1a;断层智能识别&#xff0c;就是如何利用人工智能技术识别出断层。 解决思路&#xff1a;结合&#xff35;-N…...

kafka单节点快速搭建

1.搭建使用centos7主机&#xff0c;关闭防火墙和selinux服务 2.创建kafka存放目录 mkdir /etc/kafka 3.从kafka官网下载安装包 我这里下载了3.3.1版本的kafka&#xff0c;放到kafka目录中 下载地址&#xff1a;Apache Kafka 4.解压安装包并更改名称 tar -zxvf /etc/kaf…...

【MySQL】(6)常用函数

文章目录 日期函数获取日期日期计算 字符串函数charsetconcatlengthsubstringreplaceinstrstrcmpltrim, rtrim, trim 数学函数absbin, hexconvceiling, floorrandformatmod 其他函数user() 查询当前用户密码加密md5()password() database() 查看当前数据库ifnull() 日期函数 函…...

Linux学习 Day1

注意&#xff1a; 以下内容均为本人初学阶段学习的内容记录&#xff0c;所以不要指望当成查漏补缺的字典使用。 目录 1. ls指令 2. pwd指令 3. cd指令 4. touch指令 5. mkdir指令&#xff08;重要&#xff09; 6. rmdir指令 && rm 指令&#xff08;重要&#xff…...

Hibernate中的一对多和多对多关系

Hibernate的一对多和多对多 Hibernate是一个优秀的ORM框架&#xff0c;它简化了Java应用程序与关系型数据库之间的数据访问。在Hibernate中&#xff0c;我们可以使用一对多和多对多的关系来处理复杂的数据模型。本文将介绍Hibernate中的一对多和多对多&#xff0c;包括配置和操…...

Linux系统之部署Samba服务

Linux系统之部署Samba服务 一、Samba服务介绍1.Samba服务简介2.NFS和CIFS简介3.Smaba服务相关包4.samba监听端口4.samba相关工具及命令 二、环境规划介绍1.环境规划2.本次实践介绍 三、Samba服务端配置1.检查yum仓库2.安装smaba相关软件包3.创建共享目录4.设置共享目录权限5.新…...

回顾产业互联网的发展历程,技术的支撑是必不可少的

从以新零售、全真互联网为代表的产业互联网的概念诞生的那一天开始&#xff0c;互联网的玩家们就一直都在寻找着它们的下一站。尽管在这个过程当中&#xff0c;遭遇到了很多的困难&#xff0c;走过了很多的弯路&#xff0c;但是&#xff0c;产业互联网的大方向&#xff0c;却始…...

关于gas费优化问题

关于gas费优化问题 首先我们先来看一下这段代码 // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract GasGolf{uint public total;//[1,2,3,4,5,100]function sum(uint[] memory nums) external{for(uint i 0;i<nums.length;i1){bool isEven nums[i] % 2…...

Linux——中断和时间管理(中)

目录 驱动中的中断处理 中断下半部 软中断 tasklet 工作队列 驱动中的中断处理 通过上一节的分析不难发现&#xff0c;要在驱动中支持中断&#xff0c;则需要构造一个 struct irqaction的结构对象&#xff0c;并根据IRQ 号加入到对应的链表中(因为 irq_des 已经在内核初始…...

嵌入式软件中常见的 8 种数据结构详解

目录 第一&#xff1a;数组 1、数组的应用 第二&#xff1a;链表 1、链表操作 2、链表的应用 第三&#xff1a;堆栈 1、堆栈操作 2、堆栈的应用 第四&#xff1a;队列 1、队列操作 2、队列的应用 第五&#xff1a;哈希表 1、哈希函数 2、哈希表的应用 第六&#…...

vue 修改当前路由参数并刷新界面

项目中经常用到的需求是在当前页面修改路由中的参数&#xff0c;并刷新页面。 我们只用this. r o u t e r . r e p l a c e 或者 t h i s . router.replace或者this. router.replace或者this.router.go是不行的&#xff0c;需配合下面的代码 方法一&#xff1a; this.$router.…...

视频处理之视频抽帧的python脚本

在计算机视觉研究中&#xff0c;处理视频的时候&#xff0c;往往需要将视频抽帧成图片。如果多个视频都存放在一个文件夹里&#xff0c;并且希望抽帧出来的图片&#xff0c;以一个视频对应一个文件夹的形式存放&#xff0c;可以用以下代码&#xff0c;抽帧频率可自己手动修改&a…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...

什么是VR全景技术

VR全景技术&#xff0c;全称为虚拟现实全景技术&#xff0c;是通过计算机图像模拟生成三维空间中的虚拟世界&#xff0c;使用户能够在该虚拟世界中进行全方位、无死角的观察和交互的技术。VR全景技术模拟人在真实空间中的视觉体验&#xff0c;结合图文、3D、音视频等多媒体元素…...

DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态

前言 在人工智能技术飞速发展的今天&#xff0c;深度学习与大模型技术已成为推动行业变革的核心驱动力&#xff0c;而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心&#xff0c;系统性地呈现了两部深度技术著作的精华&#xff1a;…...

归并排序:分治思想的高效排序

目录 基本原理 流程图解 实现方法 递归实现 非递归实现 演示过程 时间复杂度 基本原理 归并排序(Merge Sort)是一种基于分治思想的排序算法&#xff0c;由约翰冯诺伊曼在1945年提出。其核心思想包括&#xff1a; 分割(Divide)&#xff1a;将待排序数组递归地分成两个子…...

【threejs】每天一个小案例讲解:创建基本的3D场景

代码仓 GitHub - TiffanyHoo/three_practices: Learning three.js together! 可自行clone&#xff0c;无需安装依赖&#xff0c;直接liver-server运行/直接打开chapter01中的html文件 运行效果图 知识要点 核心三要素 场景&#xff08;Scene&#xff09; 使用 THREE.Scene(…...