21.04.2018, 20:25 | #26 |
Новичок
Регистрация: 22.07.2017
Адрес: Россия
Сообщений: 35
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 11
Поблагодарили 5 раз(а) в 4 сообщениях
:
0 за это сообщение 0 Всего Репутация: пока неопределено (5)
|
|
|
21.04.2018, 20:53 | #27 |
Местный
Регистрация: 29.06.2010
Адрес: Москва
Сообщений: 2,842
Сказал(а) 'не согласен(а)'!: 6
Сказали 'не согласен'! 2 раз(а) в 2 сообщениях
Сказал(а) спасибо: 974
Поблагодарили 2,656 раз(а) в 1,572 сообщениях
:
0 за это сообщение 3 Всего Репутация: репутация неоспорима (2702)
|
Arduino код:
|
|
Пользователь сказал cпасибо: |
21.04.2018, 22:52 | #28 |
Новичок
Регистрация: 22.07.2017
Адрес: Россия
Сообщений: 35
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 11
Поблагодарили 5 раз(а) в 4 сообщениях
:
0 за это сообщение 0 Всего Репутация: пока неопределено (5)
|
Скетч для кнопочного пульта управления стрелок и семафоров на макете.
---------- Сообщение добавлено в 01:52 ---------- Предыдущие сообщение было в 01:44 ---------- Помогите пожалуйста заменить матричную клавиатуру на обычные кнопки. Проблема в большом количестве кнопок (более 30). Далее кнопки останутся на мастере, еще останутся 6 реле. Остальные реле будут подключаться на слейвах. Arduino код:
|
|
21.04.2018, 22:58 | #29 |
Местный
Регистрация: 29.06.2010
Адрес: Москва
Сообщений: 2,842
Сказал(а) 'не согласен(а)'!: 6
Сказали 'не согласен'! 2 раз(а) в 2 сообщениях
Сказал(а) спасибо: 974
Поблагодарили 2,656 раз(а) в 1,572 сообщениях
:
0 за это сообщение 3 Всего Репутация: репутация неоспорима (2702)
|
Ну это-то я помню. Для мастера или для слейва?
А лучше добавляйте архив со скетчем. Вы хотите что-бы я за вас 30 раз copy-paste сделал. В 18 сообщении шаблон есть. |
|
21.04.2018, 23:14 | #30 |
Новичок
Регистрация: 22.07.2017
Адрес: Россия
Сообщений: 35
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 11
Поблагодарили 5 раз(а) в 4 сообщениях
:
0 за это сообщение 0 Всего Репутация: пока неопределено (5)
|
|
|
21.04.2018, 23:16 | #31 | ||
Новичок
Регистрация: 22.07.2017
Адрес: Россия
Сообщений: 35
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 11
Поблагодарили 5 раз(а) в 4 сообщениях
:
0 за это сообщение 0 Всего Репутация: пока неопределено (5)
|
Сам скетч.
|
||
|
22.04.2018, 00:05 | #32 |
Местный
Регистрация: 08.07.2015
Адрес: МО
Сообщений: 2,866
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 3 раз(а) в 2 сообщениях
Сказал(а) спасибо: 4,667
Поблагодарили 3,281 раз(а) в 1,177 сообщениях
:
0 за это сообщение 1 Всего Репутация: репутация неоспорима (3292)
|
Могу ошибаться, но судя по скетчу и библиотеке keypad - в итоге опрашивается только первая кнопка.
Код:
// Returns a single key only. Retained for backwards compatibility. char Keypad::getKey() { single_key = true; if (getKeys() && key[0].stateChanged && (key[0].kstate==PRESSED)) return key[0].kchar; single_key = false; return NO_KEY; } Посмотрите пример из библиотеки, которую использует скетч. Он называется MultiKey. Дело в том, что нажать можно несколько кнопок сразу и это надо тоже учитывать. Для решения узкой задачи - реакции на нажатие, как вариант, кусок кода из примера: Код:
switch (kpd.key[i].kstate) { // Report active key state : IDLE, PRESSED, HOLD, or RELEASED case PRESSED: msg = " PRESSED."; break; case HOLD: msg = " HOLD."; break; case RELEASED: msg = " RELEASED."; break; case IDLE: msg = " IDLE."; } Код:
if (kpd.key[i].kstate == PRESSED) switch (kpd.key[i].kchar) { case '1': lcd.print("1"); // выводим -- на LCD дисплей digitalWrite(22, HIGH); // "включаем" реле delay(500) ; // ждем 500 mс digitalWrite(22, LOW); // "выключаем" реле break; case '2': lcd.print("2"); // выводим -- на LCD дисплей digitalWrite(23, HIGH); // "включаем" реле delay(500) ; // ждем 500 mс digitalWrite(23, LOW); // "выключаем" реле break; /* и т.д. все остальные кнопки */ } |
|
22.04.2018, 00:29 | #33 |
Местный
Регистрация: 29.06.2010
Адрес: Москва
Сообщений: 2,842
Сказал(а) 'не согласен(а)'!: 6
Сказали 'не согласен'! 2 раз(а) в 2 сообщениях
Сказал(а) спасибо: 974
Поблагодарили 2,656 раз(а) в 1,572 сообщениях
:
0 за это сообщение 3 Всего Репутация: репутация неоспорима (2702)
|
Как-то так.
Stancia_4x5_LCD_Mega_3str_2.zip |
|
24.04.2018, 17:51 | #34 | ||||
Новичок
Регистрация: 22.07.2017
Адрес: Россия
Сообщений: 35
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 11
Поблагодарили 5 раз(а) в 4 сообщениях
:
0 за это сообщение 0 Всего Репутация: пока неопределено (5)
|
Помогите пожалуйста с передачей команд с мастера на слейв1. Мастер работает нормально. Слейв не исполняет команды.
В мониторе порта слейва вижу кнопки которые нажимаю на мастере. Подскажите что не так написано в коде. Код мастера: Arduino код:
Arduino код:
|
||||
|
24.04.2018, 18:19 | #35 |
Местный
Регистрация: 06.03.2009
Адрес: Питер
Сообщений: 3,693
Сказал(а) 'не согласен(а)'!: 10
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 6,942
Поблагодарили 4,844 раз(а) в 1,822 сообщениях
:
0 за это сообщение 1 Всего Репутация: репутация неоспорима (5137)
|
А вот эта строчка разве не в Loop должна быть?
char key = (char)Serial1.read(); Вот у меня так работает: Код:
void loop() { int i = 0; if (Serial1.available()) { i = Serial1.read(); if (i==0) { Serial.println("Reset port"); } else {Serial.print("Activate port: "); Serial.println(i,DEC);} switch (i){ case 0: digitalWrite(2, HIGH); digitalWrite(statusLED, LOW); break; case 1: digitalWrite(2, LOW); digitalWrite(statusLED, HIGH); break; } } }
__________________
HO, цифра, OpenDCC, S-88N, OpenCar, BiDiB С приветом из подземки!!! |
|
24.04.2018, 19:05 | #36 |
Местный
Регистрация: 29.06.2010
Адрес: Москва
Сообщений: 2,842
Сказал(а) 'не согласен(а)'!: 6
Сказали 'не согласен'! 2 раз(а) в 2 сообщениях
Сказал(а) спасибо: 974
Поблагодарили 2,656 раз(а) в 1,572 сообщениях
:
0 за это сообщение 3 Всего Репутация: репутация неоспорима (2702)
|
Тем более она там почти есть, достаточно раскомментировать и добавить 1.
Arduino код:
|
|
Пользователь сказал cпасибо: |
24.04.2018, 19:22 | #37 |
Новичок
Регистрация: 22.07.2017
Адрес: Россия
Сообщений: 35
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 11
Поблагодарили 5 раз(а) в 4 сообщениях
:
0 за это сообщение 0 Всего Репутация: пока неопределено (5)
|
|
|
24.04.2018, 21:40 | #38 |
Местный
Регистрация: 06.03.2009
Адрес: Питер
Сообщений: 3,693
Сказал(а) 'не согласен(а)'!: 10
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 6,942
Поблагодарили 4,844 раз(а) в 1,822 сообщениях
:
0 за это сообщение 1 Всего Репутация: репутация неоспорима (5137)
|
ИМХОЕсли Вы не собираетесь использовать матричную клавиатуру, то зачем Вам посылать данные в формате символов(ASCII), определяемые библиотекой для клавы? Отправляйте просто какое-то числовое значение, а слейв, получив определённое число, активирует тот или иной порт.
Или Вы всё-таки решили делать с клавиатурой? ИМХОВы по-моему и себя и других уже запутали.
__________________
HO, цифра, OpenDCC, S-88N, OpenCar, BiDiB С приветом из подземки!!! |
|
24.04.2018, 23:16 | #39 |
Местный
Регистрация: 29.06.2010
Адрес: Москва
Сообщений: 2,842
Сказал(а) 'не согласен(а)'!: 6
Сказали 'не согласен'! 2 раз(а) в 2 сообщениях
Сказал(а) спасибо: 974
Поблагодарили 2,656 раз(а) в 1,572 сообщениях
:
0 за это сообщение 3 Всего Репутация: репутация неоспорима (2702)
|
Arduino код:
А уже потом можно и на протокол какой-то перейти. А одно число пересылать это не дело. |
|
25.04.2018, 05:44 | #40 |
Новичок
Регистрация: 22.07.2017
Адрес: Россия
Сообщений: 35
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 11
Поблагодарили 5 раз(а) в 4 сообщениях
:
0 за это сообщение 0 Всего Репутация: пока неопределено (5)
|
Буду использовать матричную клавиатуру, меньше входов - больше кнопок.
---------- Сообщение добавлено в 08:44 ---------- Предыдущие сообщение было в 08:40 ---------- Единственная проблема: цыфровые выходы при включении принимают значение "0", а мне желательно нужна "1". Это связано с подключением релейных модулей, при "0" на входе реле включается и будет висеть под напряжением, а это лишния нагрузка на бп. |
|
25.04.2018, 10:09 | #41 | |
Местный
Регистрация: 06.03.2009
Адрес: Питер
Сообщений: 3,693
Сказал(а) 'не согласен(а)'!: 10
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 6,942
Поблагодарили 4,844 раз(а) в 1,822 сообщениях
:
0 за это сообщение 1 Всего Репутация: репутация неоспорима (5137)
|
Цитата:
В setup переводите все выходы в состояние HIGH, а в loop меняете строчки активации порта местами.
__________________
HO, цифра, OpenDCC, S-88N, OpenCar, BiDiB С приветом из подземки!!! |
|
|
25.04.2018, 11:09 | #42 |
Местный
Регистрация: 08.07.2015
Адрес: МО
Сообщений: 2,866
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 3 раз(а) в 2 сообщениях
Сказал(а) спасибо: 4,667
Поблагодарили 3,281 раз(а) в 1,177 сообщениях
:
0 за это сообщение 1 Всего Репутация: репутация неоспорима (3292)
|
|
|
25.04.2018, 12:05 | #43 | |
Клуб Modellbahn.RU
Регистрация: 02.01.2008
Адрес: Москва
Сообщений: 1,539
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 17 раз(а) в 13 сообщениях
Сказал(а) спасибо: 957
Поблагодарили 2,781 раз(а) в 770 сообщениях
:
0 за это сообщение 0 Всего Репутация: репутация неоспорима (2817)
|
Цитата:
Или у Вас уже есть конкретное "железо" и подстраиваетесь именно под него? |
|
|
25.04.2018, 13:20 | #44 |
Местный
Регистрация: 06.03.2009
Адрес: Питер
Сообщений: 3,693
Сказал(а) 'не согласен(а)'!: 10
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 6,942
Поблагодарили 4,844 раз(а) в 1,822 сообщениях
:
0 за это сообщение 1 Всего Репутация: репутация неоспорима (5137)
|
ИМХОЯ думаю, что у товарища есть готовые релейные модули для Arduino, они как раз управляются низким уровнем сигнала.
__________________
HO, цифра, OpenDCC, S-88N, OpenCar, BiDiB С приветом из подземки!!! |
|
25.04.2018, 14:46 | #45 |
Новичок
Регистрация: 22.07.2017
Адрес: Россия
Сообщений: 35
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 11
Поблагодарили 5 раз(а) в 4 сообщениях
:
0 за это сообщение 0 Всего Репутация: пока неопределено (5)
|
У меня как раз релейные модули для Arduino, они как раз управляются низким уровнем сигнала.
---------- Сообщение добавлено в 17:46 ---------- Предыдущие сообщение было в 17:45 ---------- Может кто подсказать как сделать инверсию на выходах. |
|
25.04.2018, 14:52 | #46 |
Местный
Регистрация: 08.07.2015
Адрес: МО
Сообщений: 2,866
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 3 раз(а) в 2 сообщениях
Сказал(а) спасибо: 4,667
Поблагодарили 3,281 раз(а) в 1,177 сообщениях
:
0 за это сообщение 1 Всего Репутация: репутация неоспорима (3292)
|
...
digitalWrite(13, LOW); // "включаем" реле 1-1 путь delay(500) ; // ждем 500 mс digitalWrite(13, HIGH); // "выключаем" реле ... |
|
Пользователь сказал cпасибо: |
25.04.2018, 15:07 | #47 | |
Новичок
Регистрация: 22.07.2017
Адрес: Россия
Сообщений: 35
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 11
Поблагодарили 5 раз(а) в 4 сообщениях
:
0 за это сообщение 0 Всего Репутация: пока неопределено (5)
|
Цитата:
---------- Сообщение добавлено в 18:07 ---------- Предыдущие сообщение было в 18:06 ---------- Нужно чтобы при включении питании ардуино на выходах был высокий уровень, реле будет выключено |
|
|
25.04.2018, 15:16 | #48 |
Местный
Регистрация: 08.07.2015
Адрес: МО
Сообщений: 2,866
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 3 раз(а) в 2 сообщениях
Сказал(а) спасибо: 4,667
Поблагодарили 3,281 раз(а) в 1,177 сообщениях
:
0 за это сообщение 1 Всего Репутация: репутация неоспорима (3292)
|
Вроде написал выше - подтянуть вывод к +5В через резистор, например 10кОм.
|
|
25.04.2018, 15:36 | #49 | ||
Местный
Регистрация: 06.03.2009
Адрес: Питер
Сообщений: 3,693
Сказал(а) 'не согласен(а)'!: 10
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 6,942
Поблагодарили 4,844 раз(а) в 1,822 сообщениях
:
0 за это сообщение 1 Всего Репутация: репутация неоспорима (5137)
|
Цитата:
Как это сделать читайте в описании цифровых портов ввода/вывода для Arduino. Там правда написано для портов настроенных, как INPUT, но что Вам мешает ещё в setup все выходы сделать с уровнем HIGH? По-моему ничего...... ---------- Сообщение добавлено в 15:36 ---------- Предыдущие сообщение было в 15:29 ---------- Цитата:
__________________
HO, цифра, OpenDCC, S-88N, OpenCar, BiDiB С приветом из подземки!!! |
||
|
25.04.2018, 15:37 | #50 |
Местный
Регистрация: 29.06.2010
Адрес: Москва
Сообщений: 2,842
Сказал(а) 'не согласен(а)'!: 6
Сказали 'не согласен'! 2 раз(а) в 2 сообщениях
Сказал(а) спасибо: 974
Поблагодарили 2,656 раз(а) в 1,572 сообщениях
:
0 за это сообщение 3 Всего Репутация: репутация неоспорима (2702)
|
|
|
Пользователь сказал cпасибо: |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Аксессуарный пульт | Alexmit | Arduino | 55 | 18.05.2021 00:04 |
Новый пульт от Lenz | Saddam | Электрика и DCC | 0 | 17.11.2016 14:36 |
FB1-как стрелочный пульт. Возможно? | lohmach | Цифровая аппаратура Modelldepo | 1 | 10.11.2010 13:49 |
Стрелочный пульт к DCC Roco ? | Yuriy | Электрика и DCC | 57 | 18.09.2010 16:24 |
Пульт управления макетом. | Doctor_MB | Электрика и DCC | 39 | 06.03.2010 22:38 |