Не читаются порты Arduino

delphist007
Offline
Зарегистрирован: 21.03.2013

Всем привет!

У меня возникла проблема с чтением портов (pin), на моём Arduino. Ни один цифровой (и аналоговый) порт почему-то не читается, и стабильно выдаёт мне 0. На запись все цифровые порты работают (проверял программой для мелькания светодиодом), но на чтение никак. Вооружившись статьёй о работе с кнопкой на этом форуме и логикой собрал первую схему из статьи, только вместо выключателя просто замкнул провода (по идее это тоже самое, что и нажать на выключатель), только провод который идёт на считывающий порт подключил не к A0, а к цифровому порту №1.

Программу взял из стандартных примеров:

/*
  DigitalReadSerial
 Reads a digital input on pin 2, prints the result to the serial monitor 
 
 This example code is in the public domain.
 */

// digital pin 2 has a pushbutton attached to it. Give it a name:
int pushButton = 2;

// the setup routine runs once when you press reset:
void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
  // make the pushbutton's pin an input:
  pinMode(pushButton, INPUT);
}

// the loop routine runs over and over again forever:
void loop() {
  // read the input pin:
  int buttonState = digitalRead(pushButton);
  // print out the state of the button:
  Serial.println(buttonState);
  delay(1);        // delay in between reads for stability
}

По идее, в Монитор Порта он мне должен постоянно писать "1", но этого не происходит, а пишет мне всё время "0".

Подскажите, пожалуйста в чём может быть дело. На запись порты вроде же работают.

Спасибо!

tsostik
Offline
Зарегистрирован: 28.02.2013

Давайте по порядку.

Куда идет провод из пина 2? На землю или на питание? Через резистор или напрямую?

delphist007
Offline
Зарегистрирован: 21.03.2013

Плюсовой провод, провод ко второму пину и резистор (на 10 кОм),  соединяются в одной точке, другим концом резистор подключён к земле. Вот и вся схема.

medossa
Offline
Зарегистрирован: 10.07.2012

Добавьте в setup()

digitalWrite(pushButton, HIGH);

и перемычкой на землю потыкайте (замкнули - 0, разомкнули - 1)

medossa
Offline
Зарегистрирован: 10.07.2012

вот схема подключения для вашего примера

delphist007
Offline
Зарегистрирован: 21.03.2013

Всем спасибо, всё заработало! Проблема оказалась в проводе идущего от "+" питания - он не работал под определённым углом.

Для меня остаётся загадкой, почему когда я проверял порты на запись - он работал, а когда проверял для чтения он переставал работать. Видимо трагическое стечение обстоятельств.

leshak
Offline
Зарегистрирован: 29.09.2011

>а к цифровому порту №1.

А еще проблема может быть в том, что D0 и D1 используются для заливки скетчей и Serial. Поэтмоу их не желательно использовать для других нужд (без четкого понимание во что это выльется).

При этом в коде вы используете D2, а не "цифровому порту №1". Могло быть еще и поэтому. Банально не тот пин пытались мучать.

leshak
Offline
Зарегистрирован: 29.09.2011

medossa пишет:

вот схема подключения для вашего примера

 

Вау!!! Теплые аналоговые иллюстрации ;)

delphist007
Offline
Зарегистрирован: 21.03.2013

leshak пишет:

>а к цифровому порту №1.

А еще проблема может быть в том, что D0 и D1 используются для заливки скетчей и Serial. Поэтмоу их не желательно использовать для других нужд (без четкого понимание во что это выльется).

При этом в коде вы используете D2, а не "цифровому порту №1". Могло быть еще и поэтому. Банально не тот пин пытались мучать.

Прошу прощения, я опечатался, подключён я был к порту №2

delphist007
Offline
Зарегистрирован: 21.03.2013

medossa пишет:

вот схема подключения для вашего примера

Только в своей собранной схеме, я замкнул ножки выключателя. Сделал это для проверки работоспособности портов.