arduino入门

您所在的位置:网站首页 arduino测量电压用LCD160显示编码 arduino入门

arduino入门

2023-07-14 14:32| 来源: 网络整理| 查看: 265

arduino入门-用arduino uno制作基于蓝牙的数据监控系统 一、前言一、准备工作二、接线图三、数据监控系统代码四、系统调试

一、前言

本文章所制作装置是一个以arduino uno为核心的、基于蓝牙的数据监控系统,其中涵盖包含(1)对舵机的控制(2)读取电位器电压信号(3)蓝牙串口通讯(4)oled显示 四部分内容,仅供教学以及实验使用,不深入探究实用价值。 上文所提及四部分内容单独链接: (1)对舵机的控制 arduino控制舵机缓慢旋转90° (2)读取电位器电压信号 arduino读取电压相对值(模拟读取传感器数值) (3)蓝牙串口通讯 arduino完成两个HC-05蓝牙模块间的配对,实现简单的无线串口通讯 (4)oled显示 arduino控制.96寸oled显示图案、中英文文字、以及变量

一、准备工作

需要准备的材料有:arduino uno、电位器一个、HC-05蓝牙模块两个、舵机一个、0.969寸oled显示屏一个、面包板一个、usb转ttl串口模块一个、杜邦线若干 需要准备的软件:串口调试助手 在这里插入图片描述

二、接线图

总接线图如下图所示: 在这里插入图片描述 接线图略显复杂,但是其实大部分都是正负极的接线,若把正负极去掉,既可以简单明了的看出接线的规则:

传感器接口单片机接口蓝牙 RXarduino TX蓝牙 TXarduino RX电位器信号口arduno A1引脚舵机信号口arduino 9号引脚oled SCLarduino A5引脚oled SDAarduino A4引脚

即: 在这里插入图片描述

三、数据监控系统代码

代码为前言提到的四个部分代码的组合,可以阅读其四个部分的文章了解详情。 代码如下:

#include //u8g2库 #include //舵机库 Servo myservo; //定义舵机命名其为myservo U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0,SCL,SDA); //配置构造函数 int a=10; //定义变量a代表传感器数值 void setup() { u8g2.begin(); //启动u8g2驱动程序 myservo.attach(9); //设置舵机控制引脚为9号 rotation(5); //舵机旋转至5° face(); //显示logo delay(1000); //显示logo持续一秒钟 Serial.begin(9600); //打开串口,设置波特率9600 } void loop() { a=analogRead(A1); //读取电位器数值,模拟传感器数据,将其值赋给变量b Serial.println(a); //将b在串口中打印,(从而通过蓝牙传输到电脑中) if(a>900) //如果传感器数值大于阈值900,则舵机旋转115°(模拟警报动作) { rotation(120); //舵机旋转至120° } else { rotation(5); //小于阈值,则舵机旋转至5° } letter(a); //显示变量数值 } void face() { u8g2.clearBuffer(); //清空显示屏缓存 u8g2.drawCircle(56,40,8,U8G2_DRAW_LOWER_LEFT); //画四分之一圆,圆心坐标(56,44),半径8 u8g2.drawCircle(56,40,8,U8G2_DRAW_LOWER_RIGHT); //画四分之一圆 u8g2.drawCircle(72,40,8,U8G2_DRAW_LOWER_LEFT); //画四分之一圆 u8g2.drawCircle(72,40,8,U8G2_DRAW_LOWER_RIGHT); //画四分之一圆 u8g2.drawCircle(56,41,8,U8G2_DRAW_LOWER_LEFT); //加粗画四分之一圆 u8g2.drawCircle(56,41,8,U8G2_DRAW_LOWER_RIGHT); //加粗画四分之一圆 u8g2.drawCircle(72,41,8,U8G2_DRAW_LOWER_LEFT); //加粗画四分之一圆 u8g2.drawCircle(72,41,8,U8G2_DRAW_LOWER_RIGHT); //加粗画四分之一圆 u8g2.drawLine(40,18,20,30); //画斜线,两端点坐标分别是(40,18)(20,30) u8g2.drawLine(88,18,108,30); //画斜线 u8g2.drawLine(40,17,20,29); //加粗画斜线 u8g2.drawLine(88,17,108,29); //加粗画斜线 u8g2.sendBuffer(); //加载以上内容 } void letter(int a) { u8g2.clearBuffer(); //清空显示屏缓存 //int8_t a=u8g2.getMaxCharHeight(); //获取最大高度 //int8_t b=u8g2.getMaxCharWidth(); //获取最大宽度 u8g2.setFont(u8g2_font_unifont_t_chinese2); //设置字体 u8g2.drawUTF8(20,17,"智能检测系统"); //显示文字,左下角位置坐标为(20,17) u8g2.drawUTF8(50,34,":"); //显示:,左下角坐标为(50,34) u8g2.drawUTF8(0,34,"位移为:"); u8g2.setCursor(64,34); //设置将要打印变量的左下角坐标 u8g2.drawUTF8(0,34,"位移为:"); u8g2.print(a); //打印变量a u8g2.sendBuffer(); // 加载以上内容 } void rotation(int angle) //舵机旋转函数,输入目标角度angle { int anglex=myservo.read(); //读取舵机实际角度,将其值赋给anglex if(angle>anglex) //如果实际角度小于目标角度,则逐渐增大角度至目标角度为止 { for(int i=anglex;i for(int i=anglex;i>angle;i--) { myservo.write(i); delay(15); } } } 四、系统调试

**常见问题 (1)设置完毕蓝牙扔无法配对: 解决方法: 首先确保蓝牙配置正确,即量蓝牙密码相同、地址已设置、波特率一致 若配置正确,则假设使用到的蓝牙分别为A和B,先对A进行断电重启,等待数秒,查看是否配对成功;若不成功则对B进行断电重启,等待数秒直至配对成功。 (2)arduino上传出错 先拔掉蓝牙两根数据线再进行上传即可 (3)oled不亮 arduino断电重启等待数秒

调试完毕后可以实现如下功能: (1)开机显示logo图案一秒钟 (2)旋转电位器,可以看到oled上的数值动态变化 (3)数值大于900,则舵机转到120°位置 (4)数值小于900,舵机自动旋转回5°原点位置 (5)打开串口通讯助手,可以看到数值同步通过蓝牙传输到电脑当中(可以编写电脑程序来对传输来的数据进行监控、分析以及处理) 调试完毕后效果如下: 启动效果: 在这里插入图片描述

启动完毕: 在这里插入图片描述

旋转电位器: 在这里插入图片描述

蓝牙通讯: 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3