37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验七:旋转电位器模块 旋钮编码器电路板 模拟量输出0-5V电压 电子积木

在这里插入图片描述
在这里插入图片描述

电位器模块实验环境
1、实验所需硬件清单——
电位器模块X1
Arduino Uno开发板 X1
杜邦线 若干(备了8条)
LED发光二极管(蓝色)X1
220欧姆限流电阻(1/8W)x1
SG90 9g舵机模块(180度)X1
有源蜂鸣器模块(低电平触发)X1
Proto Shield 原型扩展板(带mini面包板)X1

在这里插入图片描述
2、实验所需软件平台——
代码编程 Arduino IDE (版本1.8.13)
仿真编程 Linkboy (版本V4.2)
图形编程 Mind+ (版本 V1.7.0 RC1.0)以及 编玩边学(线上平台)

3、实验接线示意图——

在这里插入图片描述
在这里插入图片描述

电位器模块的几个小实验
1、实验一:通过串口显示测试电位器的数值与波形
(1)实验一参考开源代码(Arduino):

/*
 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一:通过串口显示测试电位器的数值与波形
  实验接线:电位器模块OUT接Uno的A0
*/

void setup() 
{
  Serial.begin(9600);  // 设置串口波特率为9600
  pinMode(A0, INPUT);  // 电位器模块OUT连接引脚A0,并设置为输入模式
}

void loop() 
{
  Serial.println(analogRead(A0)); //将读取的A0模拟值输出到串口监视器
  delay(500); // 延时500毫秒
}

(2)打开Arduino IDE上的串口监视器(红点处),读取A0模拟端口输入的数值

在这里插入图片描述

在这里插入图片描述
(3)打开Arduino IDE—工具—串口绘图器,查看旋转电位器产生的信号波形

在这里插入图片描述
在这里插入图片描述
(4)实验二开源仿真编程(Linkboy V4.2)之一串口输出

在这里插入图片描述
在这里插入图片描述

(5)实验三开源仿真编程(Linkboy V4.2)之二串口波形输出

在这里插入图片描述
在这里插入图片描述
(6)实验四开源图形编程(Mind+、编玩边学)以及运行后串口数据

在这里插入图片描述

(6)实验四场景图

在这里插入图片描述
2、实验五:通过读取电位器输入的电压值来控制LED灯的亮度
(1)实验二说明:模拟输入引脚是带有ADC(Analog-to-Digital Converter,模数转换器)功能的引脚。它可以将外部输入的模拟信号转换为芯片运算时可以识别的数字信号,从而实现读入模拟值的功能。Arduino 模拟输入功能有10位精度,即可以将0~5V的电压信号转换为0~1024的整数形式表示。通过使用analogRead() 函数读取电位器模块输入的电压值,然后通过analogWrite()函数来控制LED灯亮度。

(2)实验五参考开源代码(Arduino):

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验五:通过读取电位器输入的电压值来控制LED灯的亮度
  实验接线:电位器模块OUT接Uno的A0,LED灯接D10
*/

int ledPin = 10;
int readValue = 0; //保存读到的模拟值
int ledValue = 0;  //保存LED灯占空比

void setup(){
  pinMode(ledPin, OUTPUT); //数字口要选择带~号的具有pwm功能的输出口
}

void loop(){
  readValue = analogRead(A0);     //读取A0模拟口的数值(0-5V 对应 0-1204取值)
  ledValue = map(readValue, 0, 1024, 0, 255); 
// 将0到1024之间的数据映射成0到255之间的数据
  analogWrite(ledPin, ledValue);   //PWM最大取值255
}

(3)使用函数map()
描述:将数据从一个范围映射到另一个范围。
函数原型:map(value, fromLow, fromHigh, toLow, toHigh)
参数:
value: 要映射的数据
fromLow: 当前范围的下限值。
formHigh: 当前范围的上限值。
toLow: 目标范围的下限值。
toHigh: 目标范围的上限值。
返回值:重新映射后的数据。

(4)实验六开源仿真编程(Linkboy V4.2)

在这里插入图片描述

(5)实验七开源图形编程(Mind+、编玩边学)

在这里插入图片描述

(7)实验七场景图

在这里插入图片描述

3、实验八:通过串口显示电位器模块OUT端的电压值(mV)
(1)实验八参考开源代码(Arduino):

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验八:通过串口显示电位器模块OUT端的电压值(mV)
  实验接线:电位器模块OUT接Uno的A0
*/

int analogPin = A0; // 模拟针脚 A0
int val = 0; // 读取值
int valTran = 0; // 转换后

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  val = analogRead(analogPin); // 读取输入引脚
  valTran = map(val, 0, 1023, 0, 5000);
  // map函数主要功能为把一个数从一个范围变换到另一个范围 map(value, fromLow, fromHigh, toLow, toHigh)
  Serial.print(valTran); // 打印调试值
  Serial.println("mV");
  delay(1000);
}

(2)通过串口读取A0模拟端口输入的实验电压数值

在这里插入图片描述

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐