Вложено, если цикл переходит на секунду, даже если первый не соответствует действительности - PullRequest
0 голосов
/ 06 марта 2019

У меня есть гибкий датчик, подключенный к плате Arduino, и я пытаюсь подсчитать, сколько раз датчик изгибался назад и вперед.

Я установил вложенный цикл if, чтобы датчик был полностью согнут, а затем полностью открыт, чтобы увеличить счет, однако он постоянно увеличивает счет, если держать его открытым.

Как заставить счет увеличиваться только тогда, когда датчик был согнут сначала за руку, затем за руку, после открытия?

#include <Servo.h>
Servo myServo;

const int flexPin = A0; 
const int ledPin = 7; 
bool closed = false;
int handOpenCount = 0;
int handClosed = 150;
int handOpen = 250;

void setup() 
{ 
  Serial.begin(9600);
  pinMode(ledPin,OUTPUT);
} 

void loop() 
{ 

  int flexValue;  
  flexValue = analogRead(flexPin);
  Serial.print("sensor: ");
  Serial.println(" ");
  Serial.println(flexValue);



  // Counts number of times hand has been open
  if(flexValue<handClosed){
    closed = true;}
  if(closed=true){
    if(flexValue>handOpen){
          handOpenCount = handOpenCount + 1;
          closed = false;}
Serial.println(handOpenCount);}

1 Ответ

1 голос
/ 06 марта 2019

Вашему компаратору для вашего оператора if требуется секунда, равная (==):

if(closed == true){
    if(flexValue>handOpen){
        handOpenCount = handOpenCount + 1;
        closed = false;}
}

Ваш текущий оператор if будет закрыт как true и при этом вернется как true.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...