利用arduino nano开发板配合oled、温度传感器、光照传感器、湿度传感器设计一个花盆
利用arduino nano开发板配合oled、温度传感器、光照传感器、湿度传感器设计一个花盆
完整项目地址:
https://github.com/linxinloningg/arduino_chip_core.git
前言:
本示例采用的开发板:arduino nano;
oled:0.96英寸oled(iic接口);
温度传感器:ds18b20;
湿度传感器:
光照传感器:
示例将不分析代码的如何编写,只分析编写思路,因为我也只是才学了一天arduino就写这个程序,很多代码都是沿用之前51单片机中的代码,只不过51单片机采用的是位带操作,换到arduino就要采用相关语句才能操作其中的io口。
iic配置:
由于oled是采用iic接口通信的,万年不变定律,iic相关操作函数贴上:
起始信号:void I2cStart(void);
终止信号:void I2cStop(void);
发送字节数据函数:unsigned char I2cSendByte(unsigned char dat);
oled配置:
有了iic操作函数,接着根据oled命令表封装相关操作函数,不知道oled操作命令的可以翻我之前的文章,在oled配置那里有详细介绍,搬过来用即可
oled写命令函数:void oled_Write_cmd(unsigned char cmd);
oled写数据函数:void oled_Write_data(unsigned char dat);
oled清屏函数:void oled_clear(void);
oled初始化函数:void oled_initial(void);
oled显示函数,这个函数是确定将要显示的位置,以及数据采样的格式:void oled_put_char_16x16(unsigned char x,unsigned char y,unsigned char t);
//设置显示坐标函数,t为0时,字符为8x16t为1时,字符为16x16然后通过oled_Write_data(),将采样到的字符数据写入即可显示。
ds18b20配置(在之前文章也有讲过ds18b20如何驱动及运用):
根据ds18b20操作手册:
检测是否有ds18b20:unsigned char DS18B20_Check(void);
ds18b20初始化:void DS18B20_Init(void);
复位信号:void Rest_sign(void);
读一位数据:unsigned char DS18B20_Read_Bit(void);
读一字节数据:unsigned char DS18B20_Read_Byte(void);
写一字节数据:void DS18B20_Write_Byte(unsigned char dat);
开始信号:void DS18B20_Start(void);
获取温度函数:void get_Temperature(void);
光照、土壤湿度传感器配置:
光照和土壤湿度传感器类似,都有DO和AO;
DO是当测量值高于设定的阈值时会输出高电平,可以通过nano的模拟输入引脚或者数字输入输出引脚捕获,设定的阈值是通过旋转传感器上的电位计设定的,顺时针旋转会变大,反之变小。
AO是通过测量值的大小转而输出不同的电压,nano模拟输入(ADC)的采样精度是01024,所以当我们采样AO上的电压时将会显示01024之间某个值value,通过用value/1024*100,即可得到光照和土壤湿润的程度,我只能说是程度,而不是真正的光照强度和土壤湿度,因为光照强度和土壤湿度的计算相对复杂,我并不知道只有一个电压值怎样才能换算出。
DO判断,看是否超过阈值:void scan_DO(void);
获取光照程度:void get_Light_level(void);值存放在全局变量Light_level,调用即可。
获取湿润程度:void get_Humidity_level(void);值存放在全局Humidity_level,调用即可。
setup()和loop():
最后附上效果图,和源码地址:
利用arduino nano开发板配合oled、温度传感器、光照传感器、湿度传感器设计一个花盆相关推荐
- Arduino nano开发板选购
介绍两块Arduino nano开发板,串口芯片都是ch340g,黑色的采用Atmega168p,粉色的采用Atmega328p.板子挺厚的而且都是type c接口,有黑色和粉色可选. 除了主控芯片不 ...
- 利用Arduino Nano 对于另外的Arduino控制板下载Bootloader
简 介: 测试了利用Nano板对于基于MEGA328的Arduino的Bootloader下载,在此基础之上,利用了FT232TL的USB-TTL UART模块对测试MEGA328下载执行程序. 关键 ...
- Arduino IDE安装UNO和NANO开发板驱动教程(CH341SER.EXE)
Arduino IDE安装UNO和NANO开发板驱动教程(CH341SER.EXE) win10系统最方便的地方之一就是可以自动安装驱动,这个功能对于使用Arduino进行硬件编程的人而言可谓无比欢乐 ...
- STM32F103RB 实作笔记(六)- HC-05 蓝牙模组与手机 APP(正点原子 STM32F103 nano开发板)程式解析
这一篇文章是为后面的实验做的一个准备工作 我们在做开发板扩展时,最不喜欢遇到的就是"不知道发生了什么事"!所以, 会用一些输出显示装备来告诉我们,现在已经在哪里了. 譬如,前一个实 ...
- 【媒体控制器】开源项目学习笔记(基于Arduino Micro开发板)
☑️ 首先说明:本项目基于Arduino Micro 开发板开发的,外设只用到了EC11E1534408无定位旋转编码器. 项目来源:[DIY]自制PC外设-媒体控制器,在英国_哔哩哔哩_bilibi ...
- 基于Arduino Uno开发板制作音乐播放器
基于Arduino Uno开发板制作音乐播放器 本文将基于Arduino开发板实现一个音乐播放器. 利用Arduino Uno读取sd卡模块中内存卡的音乐,传输信号到扬声器进行播放. 一.项目软硬件简 ...
- Arduino UNO开发板开箱体验
Arduino UNO开发板开箱体验 1.Arduino简述 1.1什么是Arduino Arduino是一个开源的电子设计平台,包括软件和硬件.其中硬件部分就是一块开发板了,软件部分就是对这块板子 ...
- micropython stm32f429_[MicroPython]STM32F407开发板驱动OLED液晶屏
1.实验目的 1.学习在PC机系统中扩展简单I/O 接口的方法. 2.进一步学习编制数据输出程序的设计方法. 3.学习 F407 Micropython开发板控制OLED显示字符. 2.所需元器件 F ...
- micropython 驱动oled0.91_[MicroPython]STM32F407开发板驱动OLED液晶屏
1.实验目的 1.学习在PC机系统中扩展简单I/O 接口的方法. 2.进一步学习编制数据输出程序的设计方法. 3.学习 F407 Micropython开发板控制OLED显示字符. 2.所需元器件 F ...
最新文章
- WebLogic集群案例分析
- [认证授权] 1.OAuth2授权
- 【深度学习】重新思考BatchNorm中的 “Batch”
- 常见问题_数组索引越界异常
- 9.数据库中的子查询
- codeforce No to Palindromes!(枚举)
- JVM 的三色标记算法详解
- mongodb指南(翻译)(十六) - developer zone - 何时使用GridFS
- Linux下Python3对Docker进行基本的管理(包含显示端口,显示IP,一键启动,一键关闭)
- 浅谈SSD应用和发展趋势
- jsp定义java方法_jsp教程上:jsp的定义和使用方法
- python详细教程#2下载python
- 【2021最新】各大公司招聘官网链接汇总(持续更新中)
- P2905 [USACO08OPEN]农场危机Crisis on the Farm
- 苹果手机怎么备份所有数据_ORICO手机备份宝,数据备份更轻松
- K8S中使用显卡GPU(N卡) —— 筑梦之路
- 【资源】重磅!清华大学网上课程面向全国免费开放!无需登录、注册!在家上清华!...
- SpringBoot2+Netty+WebSocket(netty实现websocket,支持URL参数)
- (转)使用Vernam(维尔南/弗纳姆)算法实现文件加密解密[C#]
- STM32普中F103抢答器与抢答器的延时控制