Arduino学习笔记3

简介: 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);//white
   delay(1000);//延时1s
   color(255,0,0);//red
   delay(1000);//延时1s
   color(0,255,0);//green
   delay(1000);//延时1s
   color(0,0,255); //blue
   delay(1000);//延时1s
 }

2.电路图08c3f6c494ec72aa6ae81154d1872f5c.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;//定义变量val
void setup() 
{ 
  Serial.begin(9600);     //设置波特率为9600
  pinMode(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.电路图

29e55c56fd3e3ca0ff8aae4548273078.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;//定义变量val
void 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.电路图a32d03b968f128dbfa04e48061a70bcf.jpg

3.火焰传感器

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

四.火焰报警器实验

1.源代码

int beep = 2;//定义数字口2控制蜂鸣器
int val;//定义变量val
void setup() 
{ 
  Serial.begin(9600);     //设置波特率为9600
  pinMode(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!

相关文章
|
传感器 监控 IDE
什么是Arduino?
Arduino是一个基于易于使用的硬件和软件的开源电子平台。 Arduino开发板能够读取输入——控制传感器上的LED灯;按钮上的手指或WeChat消息转换为——输出启动电动机、监控等在线发布内容。您可以通过向板上的微控制器发送一组指令来告诉您该怎么做。为此,您可以使用Arduino编程语言(基于Wiring)和Arduino软件(IDE)(基于Processing)。
202 0
|
传感器 存储 缓存
Arduino学习笔记4
Arduino学习笔记4
240 0
|
传感器 安全 机器人
Arduino学习笔记5
Arduino学习笔记5
216 0
|
传感器 存储 运维
Arduino学习笔记2
Arduino学习笔记2
151 0
|
传感器 存储 C语言
Arduino学习笔记1
Arduino学习笔记1
205 0
|
传感器 IDE Java
1.1什么是Arduino
1.1什么是Arduino
133 0