Arduino Mega и шина SPI

Теоретически шина SPI на Arduino  позволяет подключать к ней одновременно несколько устройств. Причем активным устройством на текущий момент, для работы скетча будет считаться то устройство, у которого низкий уровень сигнала на пине Cabel Select.

Например, подключаем два устройства к ардуине :  SD картридер и сетевой интерфейс на микросхеме enc28j60, по следующей схеме:

Arduino Mega enc28j60 SD
49 (SS, nCS, CS, CSB, CSN, nSS, STE) CS
50 (SCLK, SCK, CLK) SO SPI_CLK
51 (MOSI, SDI, DI, SI) SI SPI_MOSI
52 (MISO, SDO, DO, SO) SCK SPI_MISO
53 (SS, nCS, CS, CSB, CSN, nSS, STE) SD_CS
GND GND GND
5V VCC 5V

Или может быть понятнее рисунок:

 

 

схема подключения по шине spi двух устройств: enc28j60 и sd реадер

схема подключения по шине spi двух устройств: enc28j60 и sd реадер

Т.е. как мы видим, часть пинов используется совместно, но пины 49 и 53 выделены для управления, для того чтобы скетч и «железка» знали, какое именно устройство в данный момент может передавать данные по общим пинам. Если на управляющем пине низкий уровень напряжения, то скетч и железка считает, что может передавать данные именно та железка, которая подведена к данному пину. Например по моей схеме: если на 49 пине низкий уровень, а на 53 высокий, то работает сетевая карта. И наоборот.

На деле как оказалось конечному пользователю не нужно заморачиватся выставлением уровней на управляющих пинах…если конечно драйвера железок написаны правильно…

Например мой скетч по работе одновременно и с SD и с сетевой картой заработал с полпинка..

Пример скетча: » Читать далее

Arduino Mega подключение ENC28J60. История боли..

Два дня убил на подключение к Arduino Mega контроллера ENC28J60. Как всегда «дьявол кроется в деталях». Перепробовал кучу библиотек — не работает. Кто-то в интернетиках ляпнул, что библиотеки etherShield и ETHER_28J60 не работают с IDE 1.6.5. Сделал даунгрейд с IDE 1.6.5 на 1.0.5 — не работает. Переобжал кабель — не работает. Полез заказывать уже новый Ethernet shield… Но на по следок «дай думаю посажу его не на 3.3 вольта, как указано НА ВСЕХ схемах по подключению а на 5 вольт». Бьюсь головой об стену и глупо хихикаю.. Работает!

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

arduino-connect-enc28j60

 

 

Оказывается у Arduino Mega/Uno нет нормальной многопоточности…

ArduinoUno_r2_front450pxДумал в выходные про будущую реализацию «Умного дома».. Делал некоторые наброски и т.п.. Стало шоком, что оказывается в Arduino не реализована «железячная» многопоточность т.е. выполнение нескольких подпрограмм одновременно. Реализовать некое подобие можно при помощи костылей «выполнение по таймеру» и прерываний.. Но всё не то.. Так-же есть несколько скетчей, написаных на ассемблере, которые расширяют стандартный вход main в программе, и делают «некий программный аналог» многопоточности. Ну ближе к делу посмотрим… Знать бы конечно сразу, так возможно бы остановился на Raspberry Pi..но цена там конечно более кусачая.

Подключение дисплея 1602a к Arduino

Схема подключения:


collegamenti-lcdРаспиновка по контактам:

Контакт дисплея   Контакт Arduino   Значение

  1                                     GND                                 Vss

  2                                     5V                                    Vdd

  3                                     GND                                 Vo (контрастность)

  4                                     digital 12                        RS

  5                                     digital 11                        R/W

  6                                     digital 10                        ENABLE

  11                                   digital 5                          DB4

  12                                   digital 4                          DB5

  13                                   digital 3                          DB6

  14                                   digital 2                          DB7

  15                                   5V                                    LED+

  16                                   GND                                 LED-

Пример программы:

Тренируюсь на котиках..

Ну вот уже 2 дня как arduino uno у меня. Помигал светодиодиком. Помигал двумя светодиодиками. Исполнил на пьезоэлементе «марио» и «звездные войны»..Научился измерять датчиком влажности..влажность. Теперь коплю денег и ищу электрический запор воды для реализации дальнейшей схемы работы «полива теплицы».

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

» Читать далее

1 2 3 4