#include <Adafruit_RGBLCDShield.h>
#include <utility/Adafruit_MCP23017.h>
Adafruit_RGBLCDShield lcd = Adafruit_RGBLCDShield();
void setup() {
lcd.begin(16, 2);
lcd.setCursor(0,0);
}
void loop() {
uint8_t buttons = lcd.readButtons();
int a;
if (buttons) {
lcd.clear();
lcd.setCursor(0,0);
if (buttons & BUTTON_UP) {
a+= 1;
lcd.setCursor(0,0);
lcd.print(a);
}
}
Încerc să fac un contor care se incrementează de fiecare dată când este apăsat butonul UP. În prezent, tot ce face este să tipărească 1 de fiecare dată când butonul este apăsat. Orice ajutor ar fi binevenit! Mulțumesc!
Codul tău, simplificat, este:
void loop()
int a;
a += 1;
}
Problema aici este că, punând declarația variabilei contor în interiorul variabilei loop()
ați făcut-o locală pentru acea funcție. De fiecare dată când loop()
este apelată, o nouă variabilă a
este creată, inițializată la zero și apoi incrementată.
Doriți să mutați declarația în afara funcției loop()
creând o variabilă globală care va continua să existe și își va menține valoarea după ce loop()
astfel încât valoarea să fie încă prezentă atunci când loop()
este apelată din nou:
int a = 0;
void loop() {
a += 1;
}
(Acest lucru ar putea fi realizat și cu o variabilă statică, dar probabil că depășește scopul acestei întrebări).
tot ceea ce face este să tipărească 1 de fiecare dată când butonul este apăsat.
faceți ca variabila să fie statică sau globală.
- Cineva care pune o astfel de întrebare probabil că nu știe ce este o variabilă „statică” sau „globală”; explicarea acestui lucru și oferirea unui exemplu este probabil ceea ce are nevoie. – > .
int a;
. Nu există un „punct de pornire” a ceea cea
este. – user23244