Помощь, совет в подключении модулей
- Войдите на сайт для отправки комментариев
Вс, 01/03/2015 - 09:54
Здравствуйте товарищи ардуинцы!
Собираю и изучаю не спеша arduino Leonardo, постепенно расширяя. Встал вопрос, как лучше сделать.
Вот что имею:
1) Arduino Leonardo
2) HC-05
3) Enc28j60
4) Clock DS1302
5) mp3 - wtv020m01
6) microSD
7) relay 8ch
а также :
9) SN75hc595n
10) SN74hc165n
Подскажите как лучше все это подключить? По искал в интернетеи на шел что Enc28j60 можно подключить через ICSP. А будет ли корректно работать microSD и Clock DS1302, и wtv020m01 через регистры??
С Уважением, ардуиновец Sonic!
МР3 по какому протоколу работает? Точно знаю,что ENC по SPI ,а часы DS1302 по i2c,так что они друг другу мешать не будут.
Здравствуйте товарищи ардуинцы!
...
Подскажите как лучше все это подключить? ...
Поясните вопрос.
Чем не устраивает обычный способ подключения - проводами?
Здравствуйте товарищи ардуинцы!
...
Подскажите как лучше все это подключить? ...
Поясните вопрос.
Чем не устраивает обычный способ подключения - проводами?
Суть такова, подключить устройство так чтоб корректно работал модуль часы , модуль карта, модуль сетевая,модуль мп3. У блютуза свои два пина. И надо расширить входы выходы.
Начните с того, что разберитесь какое устройство по какому протоколу работает (SPI, IIC, 1ware, UART ..... или свой какой нибудь).
Посмотрите какой протокол какие пины использует, какие протоколы привязаны к ногам МК а какие можно менять.
Например UART как правило на D0 и D1 (а у меги их может быть несколько).
А дальше все в Ваших руках, проводочками все подключаете. Сначала подключайте по одному устройству.... ну и так далееее
А что уже не заработает - рассказывайте как включили и Вам посоветывают как бороться......
Удачи
День добрый!
появилась проблема( не могу найти (понять) как написать скейтч для управлению по SPI 74hc595 (4 шт.) кто подскажет?
подключение брал для 2-х регистров с сайта http://robocraft.ru/blog/arduino/519.html , а как 4 так и не понял((
также как и двумя. просто не два байта передавать а 4
Тыкни пожалуйста меня носом))) как передать 4
По моему надо передать один байт четыре раза. Или есть другие варианты ? ;)
Я не уверен, но вроде бы при таком pinMode(ss_pin, OUTPUT) выход какое-то мизерное время- до старта лупа,
будет сидеть в нуле так как при старте в регистре порта прописаны нули.
Я бы для страховки от этого и для полного контроля над процессом сделал:
void setup(){
SPI.begin();
digitalWrite(ss_pin, HIGH); //что включило бы резистор привязки, ну и ладно, не мешает...
pinMode(ss_pin, OUTPUT); //а потом вот это
}
jeka_tm, trembo - Спасибо.
Почитал в инете и понял что просто так не отделаться((( ,как я понял что управлять 74hc595 не так уж и просто, управления led, это одно а управление реле это другое!
гуглил и не нагуглил(( - как можно сделать с запоминанием, например управлять 8 реле, в теории понимаю что как то можно, но не могу сообразить(
Можно ли как то прочитать какая нога регистра задействона и прибавить еще ?
ну чтобы понятнее было
обратить внимание на
представление в двоичной системе. каждой еденичке соответствует высокий уровень на выходе 74HC595, 0 низкий.
ну чтобы понятнее было
обратить внимание на
представление в двоичной системе. каждой еденичке соответствует высокий уровень на выходе 74HC595, 0 низкий.
это мне хорошо понятно. я догнать не могу управлять 4 регистрами в каскадном режиме(((
на пример:
byte byte_1=B11000000; byte byte_2=B00000000; byte byte_3=B00000000; byte byte_4=B00000000; как проверить что уже byte byte_1=B11000000 и добавить byte byte_1=B11000110
Другими словами влючил реле 1 и 2, а потом нужно включить реле 6 и 7
например так
например так
ммм не понял(((
покумекал и подумал, в теории можно обрабатывать массив:
Выдает ошибку((((.
Еслиб не было ошибки, то можно в памяти держать какой массив был изменен с 0 на 1
что не так??
вот ты намудрил. почитай про сдвиг
Просто массив очень много места займёт. И времени на обработку. Вам же всё равно не надо " третье состояние", а для работы с двумя достаточно одного БИТА.
И в одном байте уложатся сразу 8 штук. Да и команды (макросы) для работы с битами не такая проблемма чтобы их не использовать.
Товарищи я в тупике((((((((((
Ваши 4 байта вам уже известны. Вы их сами "сделали". Меняете нужные биты как вам надо.
Но заливать в регистр нужно ВСЕ ваши 4 байта, снова. И так каждый раз. Поверьте это не так сложно.
Ваши 4 байта вам уже известны. Вы их сами "сделали". Меняете нужные биты как вам надо.
Но заливать в регистр нужно ВСЕ ваши 4 байта, снова. И так каждый раз. Поверьте это не так сложно.
что заливать все 4 байта нужно это я знаю, я не могу догнать как включать тот или оное устройсто. может я не так говорю((
например:
2 регистра , 1 регистр отвечает за 8 реле , 2-ой регистр отвечает за включение выключение светодиотов.
вот я понять не могу когда я отправляю 00000000 и 00000000 , то все выкл, когда я хочу включить реле 1, то я отправляю 10000000 и 00000000, потом мне нужно включить 3 реле, по идеи я должен послать 00100000 и 00000000, но тогда отключится 1 реле, вот и вопрос как мне оставь включеным 1 реле и включить и выключать 3 реле.
Спасибо!
видно не читал
byte_1= b00000000
byte_1= 1<<6
включили 7. стало
b01000000
byte_1= 1<<3
включили 4. стало
b01001000
byte_1= 0<<3
выключили 4. стало
b01000000
jeka_tm - можешь ругать!!!
Читал но не втыкнул((((( хоть у бей!!!!!
ЗЫ . в долгу не останусь!!! отблагодарю!
ну я хз как еще объяснить. например у тебя все выключены
byte_1= b00000000
хотим включить реле на Q4
byte_1= 1<<4;
включили. теперь выключим на Q4
byte_1= 0<<4;
0 это что передать, 4 это насколько сдвинуть
при этом если какой то выставляем, остальные остаются как есть
в итоге можно управлять нужными пинами
Это я уже понял! теперь тока вечером смогу пробывать(((
на работе не ту ардуинки(
а что тогда объяснять? проверь и все
,
у тенбя есть icq или viber ?
не дам
не дам
))))
jeka_tm, подскажи из за чего у меня когда 0 вкл, а когда 1 выкл?
из-за relay 8ch - один производитель делает включение по HIGH, второй - по LOW ( ваш вариант модуля реле - второй )
SU-27-16, а когда на прямую подключаю к ардуино то все нормально.
расшифруйте.... что нормально, что ненормально ?
))))
byte_1= 1<<3 // включили 4. стало b01001000
byte_1= 0<<3 // выключили 4. стало b01000000
В самом верху поставьте и забудьте обо всём:
#define relay1_ON byte_1= 1<<3
#define relay1_OFF byte_1= 0<<3
Надо поменять ON на OFF - в одном месте меняете.
Товарищи, прошу прощение, и прям реле на оборот))))))))))))))))
тестором проверил и прям себя так видет)))))))
это разовые команды... а как помнить какие вкл/выкл ?
всё-таки лучше массив состояний реле и светодиодов.... нет ?
byte_1= 1<<3 // включили 4. стало b01001000
byte_1= 0<<3 // выключили 4. стало b01000000
В самом верху поставьте и забудьте обо всём:
#define relay1_ON byte_1= 1<<3
#define relay1_OFF byte_1= 0<<3
Надо поменять ON на OFF - в одном месте меняете.
можно. кому как удобнее
а чем байт не массив из 8 бит?
Товарищи, прошу прощение, и прям реле на оборот))))))))))))))))
тестором проверил и прям себя так видет)))))))
не наоборот ! прямая и обратная логика - обе равноправны....
пиво - есть ?
отсутствия пива - нет ?
....это одно и тоже :)
байт = массив битов, да - только коды будут разные.... как запоминать текущее состояние реле и СД - дело ТС
1. Наша задача- выпихнуть 4 байта в SPI.
2. Если создать массив, то чтобы создать эти 4 байта нужно считать первый элемент массива, сравнить он "0" или "1" и запихнуть 0 или единицу в первый бит первого байта. Потом следующий элемент массива.
Запихнув в цикле 8 байт в 8 бит перейти ко второму байту и всё по новой. И так 4 раза. Вы этого хотели?
Два вложенных цикла, один 0-7, другой 0-3. И это надо делать каждый раз перед сливом в SPI
И от работы с битами в байте вы всё равно не избавились, только работать стали через заднее место.
А вы в этом массиве разберётесь на каком месте и что лежит ? А если один выход это ЛЕД требующий единицу, а следуюшей- реле и ему надо ноль? А с другого даём питание на ультрасоник и с ещё одного ноль для NRF24L01.
Ню-ню.........
А вы в этом массиве разберётесь на каком месте и что лежит ?
это дело ТС :)
моя про то что невозможно узнать - что там на какой ноге регистра ( но можно ), проще хранить это в переменной ( как ? - дело ТС )
И от работы с битами в байте вы всё равно не избавились, только работать стали через заднее место.
с битами всё равно придётся работать.... через переднее или через заднее - смотря как организовать...
Два вложенных цикла, один 0-7, другой 0-3. И это надо делать каждый раз перед сливом в SPI
ну, да.... не преобразуешь - не передашь.... :) правильно не передашь....
...всё об одном и том же :)
... что там на какой ноге регистра...... проще хранить это в переменной
Хранить то, что никогда не меняется в переменной ????????
Ню-ню.......
состояние 8-ми реле и 8-ми СД - никогда не меняются ? зачем тогда эти два регистра ?
ню-ню... это из CPP ? или я где-то просмотрел #define ? вы их классно применяете :) , завидую даже :)
Это единственное что я умею делать- применять по-человечески названные дэфайны.
В связи с плохой памятью на то где и какой бит из тридцати двух в четырёх байтах располагается- как раз всегда и применяю.
#define relay1_ON byte_1= 1<<3
#define relay1_OFF byte_1= 0<<3
и так далее.....
У меня есть знакомый, так вот он при мне простой драйвер для ДОСа на ассэмблере писал в ХЕКС редакторе.
Говорит: дольше набирать add( ) - это 5 нажатий, а в ХЕКСе только 2......
не пойму почему продолжается спор. вроде уже все выяснили
Товарищи!
Подскажите что не так, что упустил, посылаю через монитор "2" включается реле, посылаю "5" отключается реле 2 и включается реле 5.
Что не так делаю?(((