Почему 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.
С начала внимательно читаем тут . 
boolean button = digitalRead(A1);

Подсказка:
Если "> 0" принимает значение истинно (= 1)
Если "= 0" принимает значение ложно (= 0)
А вход аналоговый смотрим сюда .
После этого будет понятно почему всегда "1" на выходе.
Похожие вопросы