Как я могу увеличить отображаемое значение до семисегментного дисплея с шагом в зависимости от того, сколько раз изменяется значение фотоэлемента? - PullRequest
0 голосов
/ 05 марта 2020

Итак, я работал над проектом 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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...