重新启动按钮计数器
Restart a pushbutton counter
我必须用 Arduino 做两个计数器并在 LCD 上显示。但是计数器必须在达到 99 时重新启动。
我已经这样做了:
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
int boton_user = 0;
int boton_admin = 1;
int user_actual = 0;
int user_antes = 1;
int admin_actual = 0;
int admin_antes = 1;
int num_actual = 0;
int num_ultimo = 0;
void setup() {
lcd.begin(16, 2);
pinMode(boton_user, INPUT);
pinMode(boton_admin, INPUT);
}
void loop() {
user_actual = digitalRead(boton_user);
if(user_actual != user_antes) {
if(user_actual == HIGH) {
if(num_ultimo == 99) {
num_ultimo = 1;
}else{
num_ultimo = num_ultimo + 1;
}
}
user_antes = user_actual;
}
admin_actual = digitalRead(boton_admin);
if(admin_actual != admin_antes) {
if(admin_actual == HIGH && num_actual < num_ultimo) {
if(num_actual == 99) {
num_actual = 1;
}else{
num_actual = num_actual + 1;
}
}
admin_antes = admin_actual;
}
lcd.setCursor(0, 0);
lcd.print("Siguiente: ");
lcd.print(num_actual);
lcd.setCursor(0, 1);
lcd.print("Ultimo: ");
lcd.print(num_ultimo);
}
但是当任何数字达到99时,它只会改变前9个(97、98、99、19、29、39、49、59、69、79、89、99 ...)和第二个当它达到 99 时,它将变为 10 并重新开始 (...10, 11, 12...97, 98, 99, 19, 29...)。
我不确定我做错了什么。
你用 Siguiente: 1
覆盖 Siguiente: 99
得到 Siguiente: 19
,因为保留了最后一个字符。
在更新 LCD 之前调用 lcd.clear()
。
我必须用 Arduino 做两个计数器并在 LCD 上显示。但是计数器必须在达到 99 时重新启动。
我已经这样做了:
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
int boton_user = 0;
int boton_admin = 1;
int user_actual = 0;
int user_antes = 1;
int admin_actual = 0;
int admin_antes = 1;
int num_actual = 0;
int num_ultimo = 0;
void setup() {
lcd.begin(16, 2);
pinMode(boton_user, INPUT);
pinMode(boton_admin, INPUT);
}
void loop() {
user_actual = digitalRead(boton_user);
if(user_actual != user_antes) {
if(user_actual == HIGH) {
if(num_ultimo == 99) {
num_ultimo = 1;
}else{
num_ultimo = num_ultimo + 1;
}
}
user_antes = user_actual;
}
admin_actual = digitalRead(boton_admin);
if(admin_actual != admin_antes) {
if(admin_actual == HIGH && num_actual < num_ultimo) {
if(num_actual == 99) {
num_actual = 1;
}else{
num_actual = num_actual + 1;
}
}
admin_antes = admin_actual;
}
lcd.setCursor(0, 0);
lcd.print("Siguiente: ");
lcd.print(num_actual);
lcd.setCursor(0, 1);
lcd.print("Ultimo: ");
lcd.print(num_ultimo);
}
但是当任何数字达到99时,它只会改变前9个(97、98、99、19、29、39、49、59、69、79、89、99 ...)和第二个当它达到 99 时,它将变为 10 并重新开始 (...10, 11, 12...97, 98, 99, 19, 29...)。
我不确定我做错了什么。
你用 Siguiente: 1
覆盖 Siguiente: 99
得到 Siguiente: 19
,因为保留了最后一个字符。
在更新 LCD 之前调用 lcd.clear()
。