Как сконфигурировать аналоговый вход в цифровой
- Войдите на сайт для отправки комментариев
Вроде везде всё везде написано, что можно. Но никак не получается считать значение с аналогового входа функцией digitalRead. На порт 20 повесил кнопку, при замыкании которой подаётся Vcc на порт А7.
Делаю так:
void setup() {
pinMode(20, INPUT); digitalWrite(20, HIGH);
}
void loop() {
Serial.println(digitalRead(20)) ;
}
Хоть ты тресни - вижу одни нули в мониторе COM порта. Но если сделать так:
void loop() {
Serial.println(analogRead(20)) ;
}
То мне прри нажатии на кнопку бодро возвращается 1024.
Так что подразумевается тогда под фразой "Аналоговые входы (analog pins) могут быть использованы как цифровые вход/выходы (digital pins)". Если я конфигурирую порт на выход и подключаю к нему светодиод, то запись digitalWrite(20, HIGH) воспринимается адекватно и светодиод загорается. Но если я конфигурирую порт на вход, то читать надо всё равно что ли функцией analogRead?
а как ты кнопку подключил ?
резистора нет ?
приотпущенной кнопке пин А7 в воздухе болтается ?
arduinich, входы А6 и А7 не имееют "цифрового" доступа. Т.е. это только аналог.
arduinich, входы А6 и А7 не имееют "цифрового" доступа. Т.е. это только аналог.
dimax , это на какой плате так ?
Это аппаратно так, на контроллере atmega328 :)
SU-27-16, нееее, притянул к земле внешним резистором)
dimax, тогда вопрос исчерпан! Ну ёмнип такой сякой ))) Я знал что эти два порта можно только на вход сконфигурировать. Но не ожидал такой подставы, что этот вход может быть только аналоговым.
Ну ёмнип такой сякой )))
....где бы это в ДШ найти ?
Пятая страница даташита гласит: "1.1.9 ADC7:6 (TQFP and QFN/MLF Package Only) In the TQFP and QFN/MLF package, ADC7:6 serve as analog inputs to the A/D converter. These pins are powered from the analog supply and serve as 10-bit ADC channels".
спасибо :)
Если я конфигурирую порт на выход и подключаю к нему светодиод, то запись digitalWrite(20, HIGH) воспринимается адекватно и светодиод загорается. Но если я конфигурирую порт на вход, то читать надо всё равно что ли функцией analogRead?
Вы не путаете? Мне казалось что A6 , A7 вообще не имееют привязки к портам ввода-вывода, и доступны только из мультиплексора. Соответсно записать в них невозможно. Нужно будет проверить при случае..
При проверке вывода я писал в A0 потому что туда светодиод воткнул. Написал неправильно (скопипастил же), должно быть: digitalWrite(14, HIGH).
Читайте первоисточники: The analog input pins can be used as digital pins, referred to as A0, A1, etc.
Поэтому
pinMode(A0, OUTPUT);
digitalWrite(A0, LOW);
digitalWrite(A0, HIGH);