【嵌入式系统与入门】Day02 Arduino 按键、蜂鸣器与湿温度传感器

这篇具有很好参考价值的文章主要介绍了【嵌入式系统与入门】Day02 Arduino 按键、蜂鸣器与湿温度传感器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 按键控制

1.1 认识按键

  • 目的:控制电动机或其他电气设备运行,常用来连通或断开,控制电路
    【嵌入式系统与入门】Day02 Arduino 按键、蜂鸣器与湿温度传感器

1.2 工作原理

  • 原理:K1、K2、K3、K4【开关量】与数字引脚相连,通过对按键操作,展现为电平的高低
    • 不按的情况,K1连接R1,与VCC相连,表现为高电平
    • 按下键时,K1直接与GND相连,表现为低电平
      【嵌入式系统与入门】Day02 Arduino 按键、蜂鸣器与湿温度传感器

1.3 Arduino代码展示

//定义按键
int k1 = 8;
int k2 = 9;
int k3 = 10;
int k4 = 11;

void setup(){
	Serial.begin(9600);
	pinMode(k1, INPUT);
	pinMode(k2, INPUT);
	pinMode(k3, INPUT);
	pinMode(k4, INPUT);
}

void loop(){
	if(!digitalRead(k1))	//按下k1,digitalRead返回值为低电平【即返回为0】,取反为1,打印出“k1被按下”
		Serial.println("K1 is pressed");
	if(!digitalRead(k2))
		Serial.println("K2 is pressed");
	if(!digitalRead(k3))
		Serial.println("K3 is pressed");
	if(!digitalRead(k4))
		Serial.println("K4 is pressed");
	delay(100);
}

1.4 原理图

【嵌入式系统与入门】Day02 Arduino 按键、蜂鸣器与湿温度传感器

  • k1被按下时,看窗口监视器输出什么
    【嵌入式系统与入门】Day02 Arduino 按键、蜂鸣器与湿温度传感器
  • 一下输出3个的“K1 is pressed”的原因是程序的抖动

1.5 实现去抖【消抖动延时】

int k1 = 8, k2 = 9, k3 = 10, k4 = 11; //定义按键
int key = 0; //定义键值
int key1 = 0void setup(){
	Serial.begin(9600);
	pinMode(k1, INPUT_PULLUP);
	pinMode(k2, INPUT_PULLUP);
	pinMode(k3, INPUT_PULLUP);
	pinMode(k4, INPUT_PULLUP);
}

void read_key(){
	if(!digitalRead(k1) || !digitalRead(k2) || !digitalRead(k3) || !digitalRead(k4)){ //同时读取4个按键值,只要有一个按键被按下,则显示为低电平,取反之后为1,条件为真,执行程序
		delay(25); //消抖动延时
		if(!digitalRead(k1) || !digitalRead(k2) || !digitalRead(k3) || !digitalRead(k4)){ //再次读取键值,确认是否有按键
			if(!digitalRead(k1)) key = 1; //记录按下的键值
			if(!digitalRead(k2)) key = 2;
			if(!digitalRead(k3)) key = 3;
			if(!digitalRead(k4)) key = 4;
		}
		else key = 0;
	}
	if(key1 != key) //只要这个键一直按着不松开,则认为按一个键。屏蔽标准键盘输入的联机问题,不会认为按许多键
		key1 = key;
	else 
		key = 0;
}

void loop(){ //主函数,先查询有无按键,有按键的话在屏幕显示结果
	read_key(); //调用读取按键的函数
	if(!key){
		Serial.print("K");
		Serial.print(key);
		Serial.println(" is pressed");
		key = 0; //再初始化为0,方面下次循环
	}
}

2. 蜂鸣器控制

2.1 认识蜂鸣器

  • 蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,主要用于电子产品中作发生器件。
    【嵌入式系统与入门】Day02 Arduino 按键、蜂鸣器与湿温度传感器

2.2 分类

  • 按结构
    • 压电蜂鸣器
    • 电磁蜂鸣器
  • 按有无振荡源
    • 有源蜂鸣器
    • 无源蜂鸣器

    a为有源蜂鸣器,b为无源蜂鸣器【嵌入式系统与入门】Day02 Arduino 按键、蜂鸣器与湿温度传感器

2.3 工作原理

  1. 有源蜂鸣器
  • 有源蜂鸣器内部含有振荡电路,主要是通过供应直流电,将恒定直流电转化为一定频率的脉冲信号,从而实现磁场交变,带动钼片振动发声。
  1. 无源蜂鸣器
  • 内部不带震荡源,所以加直流电,磁路恒定,钼片不能振动发声。只有加方波的理想信号,频率不同,震荡出来声音也不同。

2.4 连线

  • 蜂鸣器共连两条线,正极连接到数字8口,负极连接到GND插口中。
    【嵌入式系统与入门】Day02 Arduino 按键、蜂鸣器与湿温度传感器
    【嵌入式系统与入门】Day02 Arduino 按键、蜂鸣器与湿温度传感器

2.5 Arduino代码展示

int buzzer = 8; //定义控制蜂鸣器的数字IO脚,另一脚连接到GND上

void setup(){
	pinMode(buzzer, OUTPUT); //设置数字IO模式,OUTPUT为输出
	//Arduino输送信号控制蜂鸣器响不响,所以定义为OUTPUT
}

void loop(){
	unsigned char i, j; //定义变量
	while(1){
		for(i = 0; i < 80; i ++){ //输出一个频率的声音
			digitalWrite(buzzer, HIGH); //发声音
			delay(1); //延迟1ms
			digitalWrite(buzzer, LOW); //不发声音
			delay(1); //延迟1ms
		}
		for(i = 0; i < 100; i ++){ //输出另一个频率的声音
			digitalWrite(buzzer, HIGH);
			delay(2); //延迟2ms
			digitalWrite(buzzer, LOW);
			delay(2);
		}
	}
}

3. PWM模拟量输出

亮度发生渐变的三色灯——“呼吸灯”,实现灯的变化
【嵌入式系统与入门】Day02 Arduino 按键、蜂鸣器与湿温度传感器【嵌入式系统与入门】Day02 Arduino 按键、蜂鸣器与湿温度传感器
【嵌入式系统与入门】Day02 Arduino 按键、蜂鸣器与湿温度传感器文章来源地址https://www.toymoban.com/news/detail-421682.html

3.2 Arduino代码展示

const int red = 3;
const int green = 4;
const int blue = 5;
//3、4、5属于PWM引脚

void setup(){
	set pins 2 through 13 as outputs:
	{
		pinMode(red, OUTPUT);
		pinMode(green, OUTPUT);
		pinMode(blue, OUTPUT);
	}
}

void loop(){
	//低--->高变化【白色形成】
	for(int brightness = 0; brightness < 255; brightness ++){ //0 ~ 255,红绿蓝同步逐渐发生变化
		analogWrite(red, brightness); 
		analogWrite(green, brightness);
		analogWrite(blue, brightness);
		delay(3);
	}
	
	//高--->低变化【白色褪色】
	for(int brightness = 255; brightness >= 0; brightness --){
		analogWrite(red, brightness); 
		analogWrite(green, brightness);
		analogWrite(blue, brightness);
		delay(3);
	}
	
	//显示红色
	for(int brightness = 255; brightness >= 0; brightness --){
		analogWrite(red, brightness); 
		//analogWrite(green, brightness);
		//analogWrite(blue, brightness);
		delay(3);
	}

	//显示绿色
	for(int brightness = 255; brightness >= 0; brightness --){
		//analogWrite(red, brightness); 
		analogWrite(green, brightness);
		//analogWrite(blue, brightness);
		delay(3);
	}

	//显示蓝色
	for(int brightness = 255; brightness >= 0; brightness --){
		//analogWrite(red, brightness); 
		//analogWrite(green, brightness);
		analogWrite(blue, brightness);
		delay(3);
	}

	//显示红绿的混色
	for(int brightness = 255; brightness >= 0; brightness --){
		analogWrite(red, brightness); 
		analogWrite(green, brightness);
		//analogWrite(blue, brightness);
		delay(3);
	}
	
	//显示红蓝混色
	for(int brightness = 255; brightness >= 0; brightness --){
		analogWrite(red, brightness); 
		//analogWrite(green, brightness);
		analogWrite(blue, brightness);
		delay(3);
	}
	
	//显示绿蓝混色
	for(int brightness = 255; brightness >= 0; brightness --){
		//analogWrite(red, brightness); 
		analogWrite(green, brightness);
		analogWrite(blue, brightness);
		delay(3);
	}
}

4. 湿温度测量

4.1 认识器件

  • 用来粗略测试现场环境的湿温度,多为DHT11湿温度传感器。温湿度是模拟信号,但模块经过处理转换成数字信号通过单总线输出。
    【嵌入式系统与入门】Day02 Arduino 按键、蜂鸣器与湿温度传感器

4.2 传感器接口

  • VCC — 电源引脚5V
  • GND — 电源引脚GND
  • DAT — 数字引脚 2
    【嵌入式系统与入门】Day02 Arduino 按键、蜂鸣器与湿温度传感器
    【嵌入式系统与入门】Day02 Arduino 按键、蜂鸣器与湿温度传感器
    【嵌入式系统与入门】Day02 Arduino 按键、蜂鸣器与湿温度传感器

4.3 Arduino代码展示【封装库】

#include "dht11.h" //封装库的头文件

dht11 DHT11; //构造函数封装实例化

#define DHT11PIN 2 //定义引脚

void setup(){
	Serial.begin(9600); //串口通信
	Serial.println("DHT11 TEST PROGRAM");
	Serial.print("LIBRARY VERSION");
	Serial.println(DHT11LIB_VERSION);
	Serial.println();
}

void loop(){
	Serial.println("\n");

	int chk = DHT11.read(DHT11PIN); //返回值为chk

	Serial.print("Read sensor: ");
	switch(chk){
		case DHTLIB_OK
			Serial.println("OK");
			break;
		case DHTLIB_ERROR_CHECKSUM
			Serial.println("Checksum error");
			break;
		case DHTBIL_ERROR_TIMEOUT
			Serial.println("Time out error");
			break;
		default:
			Serial.println("Unknown error");
			break;
	}

	Serial.print("Humidity(%): "); //打印湿度
	Serial.print((float)DHT11.humidity, 2); //显示两位小数

	Serial.print("Temperature(oC): "); //打印温度
	Serial.print((float)DHT11.temperature, 2);

	Serial.print("Temperature(oF): "); //打印温度
	Serial.print(Fahrenheit(DHT11.temperature), 2);

	Serial.print("Temperature(K): "); //打印温度
	Serial.print(Kelvin(DHT11.temperature), 2);

	Serial.print("Dew Point(oC): "); //打印
	Serial.print(dewPoint(DHT11.temperature, DHT11.humidity));

	Serial.print("Dew PointFast(oC): "); //打印
	Serial.print(dewPoint(DHT11.temperature, DHT11.humidity));

	delay(2000);

	





	}
}


到了这里,关于【嵌入式系统与入门】Day02 Arduino 按键、蜂鸣器与湿温度传感器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【毕业设计】基于Arduino的智能灌溉系统 - 嵌入式 单片机 物联网

    Hi,大家好,这里是丹成学长,今天向大家介绍一个 单片机项目,大家可用于 课程设计 或 毕业设计 基于Arduino的智能灌溉系统 单片机-嵌入式毕设选题大全及项目分享: https://blog.csdn.net/m0_71572576/article/details/125409052 rduino NANO开发板 1块 IO扩展板 1块 IO扩展模块包 1套 开发工具

    2024年02月05日
    浏览(141)
  • 嵌入式系统项目设计——基于LED、按键、蜂鸣器的打地鼠游戏(完整代码)

    内容摘自上学期嵌入式系统课程设计最终的实验报告,因为CSDN不支持上传word资料,所以我就摘录下来写进文章里了,希望可以帮助到你 1.1选题背景 打地鼠游戏是一种非常受小孩子欢迎的游戏,拥有数量极其广大的受众,所以它的市场前景非常广阔。当今社会虽然存在各种各

    2024年02月09日
    浏览(55)
  • 基于RK3588的嵌入式linux系统开发(五)——uboot优化修改(按任意按键停止autoboot)

            我们通常情况下,芯片进入uboot后,会根据设置的bootdelay时间进行倒数计数。这时候在终端按任意键,即可退出autoboot,进入uboot的命令行模式。         官方提供的uboot源码中,为了防止调试串口干扰导致不能进入系统,使用“Ctrl+c”的组合键来退出autoboot。本

    2024年02月10日
    浏览(58)
  • 嵌入式系统入门基础知识分析(一)

      目录 ​编辑 一、什么是嵌入式 二、嵌入式系统的组成 三、实时系统 四、实时系统的调度 五、嵌入式微处理器体系结构 六、逻辑电路基础 七、总线电路及信号驱动 八、电平转换电路 九、嵌入式系统中信息表示与运算基础 十、差错控制编码 十一、嵌入式系统的度量项目

    2024年02月05日
    浏览(65)
  • 100篇帮小白入门——什么是嵌入式系统?

    嵌入式系统 是指一种基于微处理器或微控制器的特定应用系统,通常在某个产品或系统中被嵌入到一个电路板或芯片中。这种系统通常用于控制和监测各种设备和系统,例如汽车、工业机器人、智能家居和医疗设备等。嵌入式系统的应用广泛,其使用范围覆盖了几乎所有的行

    2024年02月02日
    浏览(53)
  • 嵌入式51单片机04-矩阵按键系列

    一、矩阵按键基础知识 矩阵按键工作原理 : 逐行扫描 :通过高四位轮流输出低电平来对矩阵键盘进行扫描,当低四位接收到的数据不全为1的时候,说明有按键按下,然后通过判断低四位数据中哪一位为零来判断哪一个按键被按下。 逐列扫描 :通过低四位轮流输出低电平来

    2024年02月07日
    浏览(65)
  • 嵌入式机器人系统ROS入门相关知识点介绍

    本文旨在收集整理linux系统、ROS系统、树莓派、ssh软件的相关基础知识。 重点是ROS系统相关的知识,根据该实验课程的要求,最后修改的代码,都是由ROS组织起来,运行在ROS环境下的。 1、ssh软件–mobaXterm ssh:SSH通过在网络中创建安全隧道来实现SSH客户端与服务器之间的连接

    2024年02月06日
    浏览(47)
  • 分享一款嵌入式开源按键框架代码工程MultiButton

    MultiButton 是一个小巧简单易用的事件驱动型按键驱动模块。 Github地址:https://github.com/0x1abin/MultiButton 这个项目非常精简,只有两个文件: (1)可无限扩展按键; (2)按键事件的回调异步处理方式可以简化程序结构,去除冗余的按键处理硬编码,让按键业务逻辑更清晰。 通

    2024年04月15日
    浏览(68)
  • 全志V3S嵌入式驱动开发(多按键输入驱动)

    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】         前面我们说过,荔枝派的开发板上面,有4个按键本身不是通过gpio连接到soc上面的。它是通过ad的方法,连接到主芯片的。这个时候,不同的按键被按下的时候,就会生成不同的电压或

    2024年02月07日
    浏览(53)
  • 【嵌入式】使用MultiButton开源库驱动按键并控制多级界面切换

    目录 一 背景说明 二 参考资料 三 MultiButton开源库移植 四 设计实现--驱动按键 五 设计实现--界面处理         需要做一个 通过不同按键控制多级界面切换以及界面动作 的程序。         查阅相关资料,发现网上大多数的应用都比较繁琐,且对于多级界面的切换逻辑可读

    2024年02月07日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包