Использование HIGH и LOW

dbv1991
Offline
Зарегистрирован: 07.11.2016

Добрый вечер!

Написал код с использованием HIGH и LOW, но результат получается противоположный.

Когда к датчику Холла подношу магнит программа понимает это как LOW и наоборот. Без магнита считает от i до нуля бесконечно, а без него делает как должно быть-поднесли магнит, досчитали до нуля, загорелся диод и гаснет он только при удалении магнита...

В чем ошибка, помогите , пожалуйста!

#define led 7
#define Button_1    9    //тумблер
#define SensorPin1 A0 //датчик Холла

int i=0;
int a=1;

void setup() {

Serial.begin(9600);
pinMode(9, INPUT_PULLUP);
pinMode(4, OUTPUT); 
pinMode(A0, INPUT);
}

void loop() 
{
 
 i=a*5;
  
  
  digitalWrite(led, LOW);   //гасим диод
  
  
   if(digitalRead(9)==HIGH&&digitalRead(A0)==HIGH)   //при условии что включен тумблер и магнит подведен к датчику Холла
   {
  
               for (; i >= 0; i--)     //досчитали до нуля, должен загореться диод и гореть до тех пока, пока не уберут датчик Холла, то есть (digitalRead(A0)==LOW), когда снова подведут снова запускается обратный отсчет
                     {
                      Serial.println(i);
                      delay(500);
                     }
  }

     digitalWrite(led, HIGH);

   if(digitalRead(A0)==LOW)
                      {
                        digitalWrite(led, LOW);
                       }

}

 

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

Без схемы (даже от руки), трудно что то внятно посоветовать.