Обработка аппаратных ошибок на Arduino IDE

Tofer
Offline
Зарегистрирован: 01.12.2017

Привет!

Такой вопрос. Когда пишешь приложение на Swift или на Object C, всегда при подключении любого модуля устройства - гироскопа или GPS - всегда в начале проверяешь, доступен ли модуль. Если модуль доступен, то программа выполняет дальнейшее условия, если нет, то выдает ошибку. Можно ли на Ардуино перед выполнением куска кода программно проверить, подключен ли, например, потенциометер к A1 и подключен сервомотор к D9? Ардуино понимает вообще, подключено ли что-то к ее пинам или нет? 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Нет.  Судить о том, подключено ли шото, можно только по косвенным признакам.  На I2C шине, например, это можно сделать точно, запустив пустой цикл чтения и получив ответ/неответ устройства по определенному адресу.  А узнать подключен ли патанцометр или сервомотор в общем случае невозможно. 

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

Элементарно, Ватсон! Тот же резистор должен работать - ну, хотя бы, по уже упомянутому протоколу I2C.

Другими словами, возможность или невозможность определения, подключена та или иная периферия, зависит не от управляющего устройства, а от свойств самой периферии. Т.е. вопрос некорректен изначально: нужно спрашивать не "может ли Ардуино", а "может ли модуль".

Хотя, во многих случаях что-то можно сделать и програмно-аппаратными средствами Ардуино, например, подключить верхнрий вывод потенциометра не напрямую к 5 Вольтам, а к выходу Ардуино.

 

Ну, правильным, пожалуй будет такой ответ: возможность проверки - это дополнительная функция (за которую в том или ином виде надо платить), поэтому будет ли данная функция в конкретном устройстве (скажем, собранном на Ардуино), зависит от разработчика этого устройства. Ардуино - достаточно универсальный элемент, поэтому может служить основой для разного типа устройств: как с проверкой подключения, так и без.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

andriano пишет:
нужно спрашивать не "может ли Ардуино", а "может ли модуль".

Более правильный вопрос "может ли разработчик?".

Tofer
Offline
Зарегистрирован: 01.12.2017

Хм, на английском форуме пишут, что можно, например, подключить pull-down резистор и смотреть на показания аналогового входа. Если напряжение там равно нулю, то значит подключени нет, а если больше нуля, то есть. Там даже схемы есть. Поэксперементирую, отпишусь. А вопрос был правильно задан. Я спросил конкретно про потенциометер и сервомашинку. Если потенциометер при максимальном сопротивлении дает хоть какое-то напряжение на входе, то работать будет. 

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Tofer пишет:

Хм, на английском форуме пишут, что можно, например, подключить pull-down резистор и смотреть на показания аналогового входа. Если напряжение там равно нулю, то значит подключени нет, а если больше нуля, то есть. 

Ага, особенно если предполагается работа с инвертированными значениями на каком-нибудь PH-датчике, где наличие 0В подразумевает под собой овердохера pH. И как ты определишь, есть подключение или нет, в этом случае? Подтянешь к питанию? Ну вот и ладушки - выяснили, что универсального рецепта не существует, да и неуниверсального - тоже. Всё зависит сугубо от конкретики.

Tofer
Offline
Зарегистрирован: 01.12.2017

Я написал конкретику же))) 

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

Ну, подключили вы резистор. А провод оторвался после него. Что делать с такой диагностикой?

Tofer
Offline
Зарегистрирован: 01.12.2017

У  Ардуины есть встроенный резистор) 

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Tofer пишет:

У  Ардуины есть встроенный резистор) 

Который слабенький и pull-up, а ты писал про pull-down. Где логика, брат? Ты не запутался уже?

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

И что, серву тоже можно так определить? А ея модель?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

sadman41 пишет:

И что, серву тоже можно так определить? А ея модель?

А Вы жмотьтесь - покупайте plug-and-play стерву! Вот и определится!

Tofer
Offline
Зарегистрирован: 01.12.2017

Не знаете, в общем))

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Tofer пишет:

Не знаете, в общем))

Клапауций 555
Offline
Зарегистрирован: 10.03.2018

сволочи! - от ещё одного, обезображенного печатью интеллекта, скрываете знания. О_О

Tofer
Offline
Зарегистрирован: 01.12.2017

Не скрываете, а дёшево выпендриваетесь. Вот, что я нашёл: https://arduino.stackexchange.com/questions/14647/how-can-i-detect-a-disconnected-pin

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Tofer пишет:

Не скрываете, а дёшево выпендриваетесь. Вот, что я нашёл: https://arduino.stackexchange.com/questions/14647/how-can-i-detect-a-disconnected-pin

Ты попробуй, попробуй. Когда не получится таким образом гарантированно определить - отпишись, плз. Всё, что там написано - не даёт 100%-ной гарантии, всего лишь. Почему - можешь подумать сам, на досуге.