当前位置: 首页 > news >正文

使用PCF8591实现一个串口控制电压表

这次测试了一下串口控制电压表的实现,电脑--Arduino--PCF8591--电压表

硬件连接方面

  • VCC 引脚连到 Arduino 的 5V 电源引脚,提供电源。
  • GND 引脚连到 Arduino 的 GND 引脚,建立共同接地。
  • SCL(时钟线)引脚连接到 Arduino 的模拟输入引脚 A5
  • SDA(数据线)引脚连到 Arduino 的模拟输入引脚 A4

#include <Adafruit_PCF8591.h>
// 引入 Adafruit_PCF8591 库,这个库可能用于控制特定的硬件设备。Adafruit_PCF8591 pcf = Adafruit_PCF8591();
// 创建一个名为 pcf 的 Adafruit_PCF8591 类型的对象,用于后续与硬件交互。// Variable to store the current DAC value
uint8_t current_dac_value = 0;
// 定义一个无符号 8 位整数变量 current_dac_value,用于存储当前的数模转换(DAC)值。void setup() {Serial.begin(115200);// 初始化串口通信,波特率为 115200。while (!Serial)delay(10);// 等待串口连接建立。Serial.println("# Adafruit PCF8591 DAC output demo (0-100% voltage control)");// 在串口监视器上打印一条信息,表明这是一个 Adafruit PCF8591 的数模转换输出演示,用于 0 - 100%的电压控制。if (!pcf.begin()) {Serial.println("# Adafruit PCF8591 not found!");// 如果无法初始化 pcf 对象,打印提示信息表示未找到 Adafruit PCF8591 设备。while (1)delay(10);// 进入无限循环,等待设备连接。}Serial.println("# Adafruit PCF8591 found");// 如果成功初始化 pcf 对象,打印提示信息表示找到了 Adafruit PCF8591 设备。pcf.enableDAC(true);// 启用设备的数模转换功能。// Initial DAC outputupdateDACOutput(current_dac_value);// 调用 updateDACOutput 函数,以初始的 current_dac_value 值更新数模转换输出。
}void loop() {// Check if serial data is availableif (Serial.available() > 0) {// 如果串口有可用数据。// Read the serial inputint input_percent = Serial.parseInt();// 读取串口输入数据,并将其解析为整数,存储在 input_percent 变量中。Serial.println(input_percent);// 在串口监视器上打印读取到的输入百分比值。// Constrain the input to be between 0 and 100input_percent = constrain(input_percent, 0, 100);// 将输入的百分比值限制在 0 到 100 之间。// Map the percentage input (0-100) to the DAC value (0-255)current_dac_value = map(input_percent, 0, 100, 0, 255);// 将输入的百分比值映射为 0 到 255 之间的数模转换值,并存储在 current_dac_value 变量中。// Update the DAC output with the new valueupdateDACOutput(current_dac_value);// 调用 updateDACOutput 函数,以新的数模转换值更新输出。}// Add a small delay to avoid flooding the serial monitordelay(100);// 添加一个小的延迟,以避免串口监视器被数据淹没。
}void updateDACOutput(uint8_t dac_value) {// Output the mapped value to the DACif(dac_value>0)pcf.analogWrite(dac_value);// 如果数模转换值大于 0,使用 pcf 对象的 analogWrite 函数输出该值到数模转换器。// Print the input percentage and corresponding voltagefloat output_voltage = (float)dac_value / 255.0 * DAC_REFERENCE_VOLTAGE;// 计算输出电压,根据数模转换值、255(最大数模转换值)和参考电压(DAC_REFERENCE_VOLTAGE)计算。Serial.print("DAC Output: ");Serial.print(dac_value);Serial.print(" / 255 -> ");Serial.print(output_voltage);Serial.println("V");// 在串口监视器上打印数模转换输出值、对应的电压值和单位伏特(V)。
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 第三期书生大模型实战营 进阶岛第3关LMDeploy 量化部署进阶实践
  • Eclipse的使用配置教程:必要设置、创建工程及可能遇到的问题(很详细,很全面,能解决90%的问题)
  • 开发小运维-jar包服务shell启动脚本
  • 提升职业竞争力,亚马逊云科技认证助你云端腾飞
  • 第1节 安装Flask
  • LeetCode.209.长度最小的子数组
  • uniapp 修复使用 uni.saveImageToPhotosAlbum 方法在部分安卓手机上保存失败
  • 生信分析:精准科研的幕后英雄,加速生物医学研究新进程
  • 其他自动重试的注解
  • 洛谷P1198.最大数
  • Voice agent connected!回顾一场 24 小时的黑客松
  • Cocos Creator通用关卡编辑器UniLevelEditor
  • AcWing-算法提高课(第一章)-下
  • 【经典算法】BFS_最短路问题
  • Linux文件属性和打包压缩详解
  • Apache的80端口被占用以及访问时报错403
  • CAP 一致性协议及应用解析
  • Java 内存分配及垃圾回收机制初探
  • JavaScript对象详解
  • Java精华积累:初学者都应该搞懂的问题
  • leetcode46 Permutation 排列组合
  • MobX
  • OSS Web直传 (文件图片)
  • python学习笔记-类对象的信息
  • Vue 重置组件到初始状态
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 从输入URL到页面加载发生了什么
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 关于List、List?、ListObject的区别
  • 好的网址,关于.net 4.0 ,vs 2010
  • 解决iview多表头动态更改列元素发生的错误
  • 日剧·日综资源集合(建议收藏)
  • 如何学习JavaEE,项目又该如何做?
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 一个完整Java Web项目背后的密码
  • Linux权限管理(week1_day5)--技术流ken
  • ​埃文科技受邀出席2024 “数据要素×”生态大会​
  • $(selector).each()和$.each()的区别
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (1)Hilt的基本概念和使用
  • (16)Reactor的测试——响应式Spring的道法术器
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (HAL库版)freeRTOS移植STMF103
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (十八)SpringBoot之发送QQ邮件
  • (文章复现)基于主从博弈的售电商多元零售套餐设计与多级市场购电策略
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (转)mysql使用Navicat 导出和导入数据库
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .htaccess配置重写url引擎
  • .naturalWidth 和naturalHeight属性,
  • .Net 8.0 新的变化
  • .NET版Word处理控件Aspose.words功能演示:在ASP.NET MVC中创建MS Word编辑器
  • .NET构架之我见