цикл do while

cls
Offline
Зарегистрирован: 31.12.2016
почему происходит выход из цикла даже если val постоянно равен 0 (конечно же, в if он входит не равным нулю, но потом в течении цикла он равен 0)
int ledPin = 12; // LED connected to digital pin 13
int inPin = 13;   // pushbutton connected to digital pin 7
int val = 0;     // variable to store the read value
int f = 0;
void setup()
{
  pinMode(ledPin, OUTPUT);      // sets the digital pin 13 as output
  pinMode(inPin, INPUT);      // sets the digital pin 7 as input
}

void loop()
{
  val = digitalRead(inPin);   // read the input pin
if (val!=0) {
  
  do
   {
    
        digitalWrite(ledPin, HIGH);  // включить светодиод подав напряжение на 13 выход
    delay(1000);              // ждать 
    digitalWrite(ledPin, LOW);   // потушить светодиод убрав напряжение на 13 выходе
    delay(1000); // ждать 0,1 секунды
    digitalWrite(ledPin, HIGH);  // включить светодиод подав напряжение на 13 выход
    delay(1000);              // ждать
    digitalWrite(ledPin, LOW);   // потушить светодиод убрав напряжение на 13 выходе
    delay(1000); // ждать
    val = digitalRead(inPin);
   }
  while (val=0);
  
 }
  
}

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Потому, что в операторе whilе Вы не сравниваете val с нулём, а присваиваете ему 0. Цикл у Вас работает 1 раз и сразу же выходит.

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

while (val==0);