Подключение девайсов к Arduino UNO через модуль расширения

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

вместо этого вы посылаете I2C команды в плату-расширитель, которая , соответственно, подключает нужные пины к пинам ардуины.

попробуйте вынескти ваше устройство, которое работает через библиотеку на физические пины, а остальную мелочевку - через экстендер.

тогда вам не нужно ничего менять в библиотеке.

второй вариант (сложнее) состоит в том, чтобы переписать digitalRead и digitalWrite, научив эти две функции работать с пинами через экстендер.

третий вариант состоит в том, чтобы исправить библиотеку: найти в ней все вызовы digitalRead и digitalWrite и исправить код так, чтобы вместо прямой записи\чтения вызывались ваши digitalReadEx() и digitalWriteEx(). Обе эти функции вам придется написать: код в них простой - если обращение к физическому пину, то просто вызываем digitalRead/digitalWrite. Если пин “виртуальный“ (за платой-расширителем), тогда отсылаем I2C команды нужные.

Если бы это делал я, то я бы использовал второй вариант, заменив системные digitalRead и digitalWrite на свои, которые умеют работать через экстендер: это автоматически сделает ваши “внешние“ пины доступными всем библиотекам. Добавил бы пины, скажем #100, 101, 102, 103…. И внутри digitalRead()/digitalWrite() смотрел бы к какому пину обращаются. Если <100, то по-старинке, а если больше 99, то через экстендер.

@Andrey_dv, я тут посмотрел Ваше “досье”. Вы на форуме три года. За это время написали 28 сообщений. Из них ни одного по тематике форума – все 28 это “воспитание старожилов”. Вы не задали ни одного вопроса, никому ни на один вопрос не ответили, не привели описание своей разработки, не обсудили разработки других – Вы только воспитываете старожилов! Вы по жизни воспитатель? Или что Вы здесь делаете? Пытаетесь улучшить мир за счёт воспитания нас – грешных?

2 лайка

Есть ещё и нулевой вариант - взять мегу2560 :neutral_face: Потому как “а теперь со всей этой фигней мы попытаемся взлететь” выяснится, что не хватает памяти.

1 лайк

Смешно.

Оскорбились в лучших чувствах.
Весь форум знает, что Вы тут главный, и вдруг - ещё один воспитатель. Пришлось даже досье на него открыть!

Я разве к Вам домой пришёл?
С чего вы взяли, что я должен перед Вами отчитываться?
Разносы устраивайте своим подчинённым.

Оно открылось на вас автоматически в момент вашей регистрации на форуме

А вот это прямое нарушение первого же правила этого форума

Сритификат надо ему выправить, с казённой печатью.

А с чего Вы взяли, что я требую отчёта?

Я задал Вам вопрос «Что Вы здесь делаете?» и надеялся услышать такой ответ, которому Вы учили всех нас:

Но, вместо этого, получил открытое хамство. Ну, видать, «такой Вы Сухов», и такова цена всему Вашему морализаторству. В общем, я снимаю свой вопрос. Ответ мне больше не нужен. Мне всё равно, чем Вы тут занимаетесь.

1 лайк

Я теряюсь.
Где ещё можно найти форум, в котором без тени сомнения спрашивают: “Что Вы здесь делаете?”
Тот, кто желает получить на это ответ (а не быть посланным), должен сначала представиться. Тем более, что ваш аватар может ввести собеседника в искушение.
Представляются так: “С вами говорит лейтенант полиции нравов Иванов”. Или - “Я старший по подъезду Петров. Что вы здесь делаете?”.
Попробуйте, у вас может получиться.
И тогда состоится содержательная беседа.

Я так понимаю, вы себя ощущаете чем-то средним между этими вариантами?:slight_smile:

честно говоря вы не похожи на хищника)))
и в вашем случае наверное делать все возможное, что бы вас не съели))))

это не только для форума, но вообще, для реала в том числе, но может мне кажется…
в любом случае не принимайте слова близко, на заборе тоже много чего пишут)))

Большое спасибо vvb333007 за ответы по существу.

Иногда бывает необходимо, чтобы тебе указали на очевидные вещи, чтобы ты задумался и начал понимать:

Именно такой вариант я в итоге и применил после серии различных экспериментов:

Всегда приятно самоутвердиться за счет более неопытных :slight_smile:

Благодарю ВСЕХ за участие :slight_smile:

1 лайк

Какой? Переписали ВСЕ аппаратные вызовы в библиотеке для СИМ800? - Реализовали УАРТ через расширитель? Интересно было бы посмотреть…

По-моему, из советов @vvb333007 самый разумный этот:

Поправка: использовал комбинацию советов - этого:

и этого:

Конкретно - SIM800 - подключен к пинам МК, а в экстендере из библиотечных остался только DHT11, вот эту библиотеку и поправил. Правда я сделал канонически дурное решение: передал в библиотеку объект расширителя и все вызовы dR/dW вызывал на этом объекте. Знаю, что это нарушение парадигмы, но поджимало время, поэтому пришлось сделать “костыли”.