Итак, я работал над проектом Arduino, который должен эмулировать лазерный триплет. Лазер попадает на фоторезистор, и каждый раз, когда напряжение на плате увеличивается из-за отсутствия света, на плате должна отображаться переменная counter
для семисегментного дисплея.
Но по какой-то причине , как только резистор активируется, он выполняет строку counter = counter + 1
бесконечное число раз. Я только хочу, чтобы счетчик увеличивался один раз за активацию , в отличие от активации , в то время как фоторезистор имеет повышенное напряжение.
Кто-нибудь здесь, кто может помочь?
#include "SevSeg.h"
SevSeg sevseg;
const int pResistor = A0;
//the photoresistor is connected to analog input pin A0
int count; //number of times voltage is increased
int value; //voltage reading of A0
void setup() {
pinMode(pResistor, INPUT);
byte numDigits = 1;
byte digitPins[]={};
byte segmentPins[]={6, 5, 2, 3, 4, 7, 8, 9};
bool resistorsOnSegments = true;
byte hardwareConfig = COMMON_CATHODE;
sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments);
sevseg.setBrightness(90);
}
void loop() {
value=analogRead(pResistor);
//here's where my problem starts
while (count < 9){
if (value>1022){
//it should be noted that the photoresistor is preceded by a 100k Ω resistor, which
//explains the large value
sevseg.setNumber(count);
}
else{
count = count + 1;
sevseg.setNumber(count);
}
}
//here's where my problem ends
sevseg.refreshDisplay();
}