Arduino UNO, проблема с analogRead
- Войдите на сайт для отправки комментариев
Сб, 23/01/2016 - 14:11
Купил данный набор http://ru.aliexpress.com/item/Free-shipping-UNO-R3-Starter-KIT-Microcont....
Работает вроде все кроме analogRead A0-A5. Под неработает я подразумеваю постоянное значение 1023 которое одинаково при любых обстоятельствах (подается сигнал или отсутсвует). digitalRead на этом же порту подает признаки жизни 0/1. Пробовал данный скетч http://arduino.ru/Reference/AnalogRead
Пробуйте нумерацию от 14 до 19. Должно работать.
http://arduino.ru/Tutorial/AnalogInputPins : Выводы Arduino, соответствующие аналоговым входам, имеют номера от 14 до 19.
1023 гонит и все, ничего не понимаю. :(
Под неработает я подразумеваю постоянное значение 1023 которое одинаково при любых обстоятельствах (подается сигнал или отсутсвует).
Каким именно образом подаётся сигнал? Схему покажите. Только полную.
int analogPin = 14; // номер порта к которому подключен потенциометр
int val = 0; // переменная для хранения считываемого значения
void setup()
{
Serial.begin(9600); // установка связи по serial
}
void loop()
{
val = analogRead(analogPin); // считываем значение
Serial.println(val); // выводим полученное значение
}
постоянное значение 1023
По приведенной схеме в сериал должен идти постоянный 0 и гореть светодиод.
От куда берете 3,3V? Дополнительный БП? Смысл?
Берете переменный резистор (потенциометр). Ленвый конец на +5V, правый на землю (0V), средний на A0 Ардуины. Крутите, получайте набор цифр от 0 и выше.
А опорное напряжение вы задали?
Добавил
analogReference(DEFAULT);Даже если с платы все снять, совсем. То serial все равно выводит с датчика 1023С разъема arduino 3,3
Пробовал без разницы одно и тоже 1023
Проявилось когда собирал данную схему.
http://wiki.amperka.ru/%D0%BA%D0%BE%D0%BD%D1%81%D0%BF%D0%B5%D0%BA%D1%82-...
Звук никак не менялся от освещенности.
Добавил
analogReference(DEFAULT);Даже если с платы все снять, совсем. То serial все равно выводит с датчика 1023К какому порту аналогового входа подключен датчик?
п.с. Пробуйте нумерацию порта A0-A1-итд... У меня так все работает а не 0-15
Пробовал, по ходу atmel чип глюковатый
К какому порту аналогового входа подключен датчик?
п.с. Пробуйте нумерацию порта A0-A1-итд... У меня так все работает а не 0-15
У меня иначе, при указании А0 - выдавал ошибку компиляции, работать пожелал с 0 (резистивные кнопки на аналоговом входе IDE 1.0.5).
А так?
byte led = 13, inPin = 14, i; void setup() { Serial.begin(9600); pinMode(led, OUTPUT); pinMode(inPin, INPUT_PULLUP); // принудительно даем лог 1 } void loop() { // Читаем и выводим в сериал и на PIN13 цифровой вход i = digitalRead(inPin); digitalWrite(led, i); Serial.print("digital =\t"); Serial.println(i); delay(500); // Читаем и выводим в сериал и на PIN13 аналоговый вход i = analogRead(inPin)>>2; // делим на 4, приводим к размеру Byte Serial.print("analog =\t"); Serial.println(i); if (i<100) digitalWrite(led, LOW); else digitalWrite(led, HIGH); delay(500); }Итог:
digital = 0
analog = 255
digital = 0
analog = 255
digital = 0
analog = 255
digital = 0
analog = 255
digital = 0
analog = 255
digital = 0
analog = 255
digital = 0
analog = 255
Битый чип.
bercut6, подключено по этой схеме ?
Если да, то обратите внимание на то, что пин А0 на ней напрямую подключен к земле. И наличие/отсутствие всех прочих элементов вообще никак не влияет на уровень напряжения на пине А0.
По данной
bercut6, попробуйте отключить всё от входа, и запустить это. Что выдаст в монитор?
Итог :
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
bercut6, значит точно аппаратная неисправность. Я бы осмотрел плату на предмет непропаев/соплей. Но если у вас нет опыта в подобных работах, то вряд ли что даст осмотр.
Итог :
1023
1023
1023
1023
1023
А аналоговые порты работают в режиме digital?
Я имею ввиду еденички и нули выдаются в потр?
Самое смешное что да в digital работают
Добрый день, подниму темку
столкнулся с такой проблемой, пытаюсь читать с порта - выдает непонятную чехарду. Тогда иду по обычному пути, считать порт в монитор. выдает занчения 300 или около, погуглил и наткнулся на тему.
залил скетч что выше от ank-sw
byte led = 13, inPin = 14, i; void setup() { Serial.begin(9600); pinMode(led, OUTPUT); pinMode(inPin, INPUT_PULLUP); // принудительно даем лог 1 } void loop() { // Читаем и выводим в сериал и на PIN13 цифровой вход i = digitalRead(inPin); digitalWrite(led, i); Serial.print("digital =\t"); Serial.println(i); delay(500); // Читаем и выводим в сериал и на PIN13 аналоговый вход i = analogRead(inPin)>>2; // делим на 4, приводим к размеру Byte Serial.print("analog =\t"); Serial.println(i); if (i<100) digitalWrite(led, LOW); else digitalWrite(led, HIGH); delay(500); }выдает такие значения
косяк платы? или я чего то не понимаю?
P.S.: плата Arduino Uno R3
я чего то не понимаю?
Таки да.
причем пролетает 252 или 253, как я понимаю это примерно 1.24В,
С какого перепугу? Вы ж его на 4 делите! Или Вы не понимаете. чо написано в скетче?
с пустого пина может прилетать всё,что угодно. Часто пустой пин используют для инициализации генератора псевдослучайных чисел.
Или Вы не понимаете. чо написано в скетче?
с пустого пина может прилетать всё,что угодно. Часто пустой пин используют для инициализации генератора псевдослучайных чисел.
Ну сам скетч я немного не понял
а вот то что прилетание всего что угодно для меня открытие
просто изначально я отталкивался от скетча
int analogPin = A0; // номер порта к которому подключен потенциометр int val = 0; // переменная для хранения считываемого значения void setup() { pinMode(analogPin,INPUT); Serial.begin(9600); // установка связи по serial } void loop() { val = analogRead(analogPin); // считываем значение Serial.println(val); // выводим полученное значение delay(1000); }при запуске выдал:
Строка 6 совсем не при делах. Она бы имела смысл, если бы Вы этот пин использовали как цифровой, для чтения же аналогового сигнала этого не надо.
Пустой пин ловит любые помехи. Например, прикоснитесь к нему пальцем, или даже не прикоснитесь, а просто поднесите руку поближе - сразу увидите реакцию. А ещё забавнее, поднесите к нему поближе провод от работающего утюга - в мониторе сможете разглядеть колебания с частотой 50Гц. Он просто ловит любые помехи.
спасибо что растолковали