使用 Arduino 进行 LCD 编程
LCD Programming with Arduino
我希望我的LCD显示"电压=(sensorValue)",但现在我可以让程序在转动电位计时识别该值的唯一方法是将其放在一个循环中。但是当我把它放在一个循环中时,整个屏幕都会充满 1、2、3、4 或 5,具体取决于电位计的设置位置。
如果我没有在循环中,那么无论电位计打开什么设置,都会在屏幕上弹出,如果电位计转动也不会改变。
如何将循环的结果放在循环之外,以便获得"(电压=传感器值)"?
这是我的程序:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
void setup()
{
lcd.init();
lcd.backlight();
int sensorPin = A0;
int sensorValue = 0;
sensorValue = 0.004882812 * analogRead(sensorPin) + 1;
lcd.print("Voltage=");
}
void loop()
{
int sensorPin = A0;
int sensorValue = 0;
sensorValue = 0.004882812 * analogRead(sensorPin) + 1;
lcd.print(sensorValue);
}
你要求它打印读数,它正在做 - 它正在打印每个读数!
我怀疑您要么希望它仅在值更改时才打印
int sensorValue = 0;
int prevValue = 0;
void loop()
{
sensorValue = 0.004882812 * analogRead(sensorPin) + 1;
if (sensorValue != prevValue) {
lcd.print(sensorValue);
prevValue == sensorValue;
}
}
或者,您可以打印"n"退格键,以便将新值打印在旧值的顶部,如果您的显示器 lcd.print 支持该值
听起来print()
每次调用时都会清除屏幕上的先前数据(尽管此处和此处可用的相关文档和库代码尚不清楚)。
如果是这种情况,您需要在循环中打印Voltage=
字符串以及传感器值。尝试将代码更改为:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
int sensorPin = A0;
void setup()
{
lcd.init();
lcd.backlight();
}
void loop()
{
int sensorValue = 0.004882812 * analogRead(sensorPin) + 1;
String display = "Voltage=";
display += sensorValue;
lcd.print(display);
}
相关文章:
- 有一个打印语句的函数是一种糟糕的编程实践吗
- 我是C++编程的新手,这些代码之间有什么区别,我应该使用哪一个
- 模板元编程:如何将参数包组合成新的参数包
- Qt Q串行端口未编程设备未关闭
- 模板元编程 - 尝试实现维度分析
- 我是编程新手
- C++编程从外部文本文件定义数组大小
- 了解算法的性能差异(如果以不同的编程语言实现)
- 使用 Gtkmm 以编程方式选择 Gtk::TextView 中的文本
- 如何将可变参数模板转换为多个单个模板?(C++竞争编程调试模板)
- 使用命名空间正确编程
- C++编程:运算符重载中的引用如何工作?
- Arduino 模块化编程与全局和设置
- C++ 运算符修改/元编程策略,用于不那么冗长的语法
- 在没有管理员权限的情况下,在 c++ 中以编程方式将程序添加到启动
- 如何以编程方式将音频从任何录制设备路由到任何播放设备
- 试图修复一个错误,该错误不会让我开始编程其余部分
- C++模板编程设计问题 - 根据输入文件返回不同的类型
- Frank Luna 在他的书"使用 DirectX12 进行 3D 游戏编程"的介绍中盒子示例的问题
- 使用 Arduino 进行 LCD 编程