Клон Arduino Iboard Ethernet и его цифровые входы-выходы

АлександрБ
Offline
Зарегистрирован: 25.01.2018

Доброго времени суток !

Уважаемые господа специалисты, подскажите новичку, пожалуйста.

Приобрел Arduino совместимый контроллер, который обычно называют Arduino Iboard Ethernet от производителя ITEAD : https://www.itead.cc/ru/development-platform/arduino/arduino-compatible-mainboard/iboard.html

официально именуемый "Плата Arduino ATMega328 Для Платформы IBoard С Портом Ethernet WIZnet POE"

соблазнившись принципом все в одном и микроконтроллер и Ethernet разьем с функцией питания от него, интерфейс для подключения Wi-Fi и другие полезные интерфейсы.

Однако сталь пользовать и столкнулся с тем что его входы-выходы числом 8 (от A0 до А7) не совсем то что ожидалось с позиций банальной логики.

Мне нужны в основном цифровые входы выходы, методом научного тыка и запуска тестирующих скетчей выяснилось что входы от А0 до А5 - работают как цифровые входы выходы от 14 до соответственно 19 причем нормально - управляют светодиодами, принимают сигналы от датчика движения. Входы A6 и А7 вообще никак как цифровые себя не проявляют (пробовал номера от 0 до 30). Пробовал простейшей программой - светодиод на каждый из входов - и на каком он загорится такой и номер:

void setup() {

  // Open serial communications and wait for port to open:
  Serial.begin(9600);
 }

void loop() {

  // задержка чтобы успеть посмотреть последовательный порт
  delay (6000);
  
  for (int i=0; i <= 30; i++) {
   Serial.println(i);
   
   // попытка зажечь светодиод с выхода с очередным номером
   pinMode(i, OUTPUT);
    digitalWrite(i, HIGH);
   delay(2000);
    digitalWrite(i, LOW);
  }  
}

И потом их эксплуатировал под этими номерами - датчик движения и т.д. - все работало хотя в голове и не укладывалось.

ПОЭТОМУ ВОПРОС ПЕРВЫЙ - Что это за странность с нумерацией цифровых выходов.

Далее мне понадобилось использовать внешние прерывания, а они как правило "прикручены" ко второму и третьему входу-выходу - а у меня ж их на контроллере нет ! :(

На всякий случай запустил тест - какие прерывния на каком входе:
 

void setup() {

  // Open serial communications and wait for port to open:
  Serial.begin(9600);
 }

void loop() {

  // задержка чтобы успеть посмотреть последовательный порт
  delay (2000);
  
  for (int i=1; i <= 30; i++) {
   Serial.print(i); Serial.print(" : "); Serial.println(digitalPinToInterrupt(i));
    
 }  
}

и точно 2 и 3 

ПОЭТОМУ ВОПРОС ВТОРОЙ - это что карта без управления по внешним прерываниям ? очень странно.

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

sadman41
Offline
Зарегистрирован: 19.10.2016

АлександрБ пишет:

ПОЭТОМУ ВОПРОС ПЕРВЫЙ - Что это за странность с нумерацией цифровых выходов.

ПОЭТОМУ ВОПРОС ВТОРОЙ - это что карта без управления по внешним прерываниям ? очень странно.

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

1) Это нормально. A6 и A7 на каком-нить Mini Pro тоже только аналоговые.

2a) Перевесьте прерывания на доступные пины. Например через https://playground.arduino.cc/Main/PinChangeInterrupt На пины A* тоже можно ловить прерывания, но это не так удобно, как с D2/D3.

2b) Найдите, где наружу выходят ваши D2/D3: https://www.itead.cc/wiki/images/5/50/SCH_IM120410001_iBoard.pdf

3) У всех бывают факапы. На то оно и хобби - чтобы ошибаться, исправлять ошибки и радоваться этому.

 

АлександрБ
Offline
Зарегистрирован: 25.01.2018

Благодарю, что бысто отреагировали, информация ценная ! 

"2b) Найдите, где наружу выходят ваши D2/D3: https://www.itead.cc/wiki/images/5/50/SCH_IM120410001_iBoard.pdf"

По ответу 2b наводящий вопрос - И что мне это даст, как мне через скетчи использовать эти знания - то есть как принимать внешние прерывания от них ?

sadman41
Offline
Зарегистрирован: 19.10.2016

Точно так же как и на других ардуинах - через attachInterrupt()

АлександрБ
Offline
Зарегистрирован: 25.01.2018

"Вай спасибо Сулейману - он помог советом мне ! " 

если знаете цитата из знаменитого в прошлом фильма-музкомедии "Аршин-Малалан"

в данном случае sadman'у

Кто бы мог подумать что 2 и 3 цифровые входы-выходы китайцы засунут в интерфейс nRF24L01

Я новичок в этих делах и когда нашел по схеме, вставил туда светодиод и протестировал - испытал немалое удивление. 

Буду теперь пробовать как будет ловить прерывания от датчика движения, еще раз sadman41- огромная благодарность ! 

sadman41
Offline
Зарегистрирован: 19.10.2016

АлександрБ пишет:

Кто бы мог подумать что 2 и 3 цифровые входы-выходы китайцы засунут в интерфейс nRF24L01

Все вполне логично - на D2 заведен WL_IRQ с RF-ки. Если используете RF-ку, то не надо мучаться с перекидыванием проводков, переназначением прерываний - радиомодуль будет дергать МК за нужный пин, когда заловит входящий байт. 

Это специфический продукт и он готов к использованию. Просто разработчики предполагали его несколько иным, чем вы.

АлександрБ
Offline
Зарегистрирован: 25.01.2018

Ага, ну говорю же что я новичок )
то есть этот микроконтроллер "заточен" на широкое разнообразие способов передачи данных, в том числе и Wi-Fi

поэтому в нем больше интерфейсов и меньше стандартных входов выходов 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Точнее, часть стандартных входов-выходов уже использована для взаимодействия с дополнительными интерфейсами.

 

PS. А вообще, АлександрБ, новичку гораздо логичнее было бы приобретать не экзотический модуль, а, напротив, - самый распространенный, каковым является Arduino Uno. И вопросов было бы гораздо меньше.