Почему Arduino uno возвращает только единицы при чтении данных с порта?

Как можно исправить мой код для проверки работы порта arduino uno на функцию принятия значений? В данный момент у меня возникает проблема, из-за которой выводятся только единицы. Вот мой текущий код:

```c
void setup(){
  pinMode(A1, INPUT);
  Serial.begin(9600);
}

void loop(){
  boolean button = digitalRead(A1);
  Serial.println(button);
}
```
  • 19 декабря 2023 г. 15:37
Ответы на вопрос 2
В вашем коде возникает проблема из-за типа переменной, которую вы используете для чтения значения с порта A1. Функция `digitalRead()` возвращает либо значение HIGH, либо значение LOW, которые являются константами типа `int`. Вы же используете переменную типа `boolean` для сохранения значения, поэтому выводит только единицы, потому что переменная `button` может быть только 0 или 1.

Чтобы исправить это, вы можете изменить тип переменной `button` на `int`, чтобы она могла хранить значения HIGH и LOW. Вот исправленный код:

```c
void setup(){
  pinMode(A1, INPUT);
  Serial.begin(9600);
}

void loop(){
  int button = digitalRead(A1);
  Serial.println(button);
}
```

Теперь код будет выводить значения HIGH (1) и LOW (0) в зависимости от состояния сигнала на порту A1.
С начала внимательно читаем <a href="https://doc.arduino.ua/ru/prog/BooleanVariables" rel="nofollow">тут</a> . <br/> <blockquote>boolean button = digitalRead(A1);</blockquote> <br/> Подсказка: <br/> Если "> 0" принимает значение истинно (= 1) <br/> Если "= 0" принимает значение ложно    (= 0) <br/> А вход аналоговый смотрим <a href="https://doc.arduino.ua/ru/prog/AnalogRead" rel="nofollow"> сюда</a> . <br/> После этого будет понятно почему всегда "1" на выходе.
Похожие вопросы