DS1990A

zhulen820
Сержант
Сообщения: 193
Зарегистрирован: 29.08.2016{, 22:44}
Репутация: 6
Откуда: Серпухов
Имя: Александр

DS1990A

#21

Сообщение zhulen820 » 22.03.2017{, 16:35}

У меня было три места установки. Металлическая стена и две деревянные. Делал в распаечная коробке.

Sibiryak22rus
Рядовой
Сообщения: 15
Зарегистрирован: 22.03.2017{, 09:01}
Репутация: 0

DS1990A

#22

Сообщение Sibiryak22rus » 23.03.2017{, 04:10}

Anydy писал(а):Если интересно, то могу состряпать блок пользователя из проекта (кодил не я)....
очень интересно, вместо кнопочки для добавления ключей мастер ключ? у меня опыта программирования совсем нету, вот по понемножку осваиваю flprog, вот из проекта sser взял блок считывания ключа и блоки сравнения, вбил железно свой ключ (думаю что можно так же железно ещё ключей добавить) обвязал элементами и получилась сигнализация

Anydy

DS1990A

#23

Сообщение Anydy » 24.03.2017{, 09:45}

Сделал! Работает!
Домофон

Аватара пользователя
slavas
Лейтенант
Сообщения: 595
Зарегистрирован: 14.09.2015{, 22:29}
Репутация: 1
Откуда: Санкт-Петербург

DS1990A

#24

Сообщение slavas » 24.03.2017{, 10:05}

Anydy, молодец только пара вопросов.
не лучше было бы сделать вход для считывателя и выходы для замка и светика чтобы программа могла эти пины зарезервировать за блоком. И "delay(5000);" предпоследняя строчка остановит выполнение программы на пять секунд, может просто импульс на выходе.

Anydy

DS1990A

#25

Сообщение Anydy » 24.03.2017{, 10:13}

да, верно, завтра сделаю!

Аватара пользователя
slavas
Лейтенант
Сообщения: 595
Зарегистрирован: 14.09.2015{, 22:29}
Репутация: 1
Откуда: Санкт-Петербург

DS1990A

#26

Сообщение slavas » 24.03.2017{, 10:21}

а исходники дадите?

Anydy

DS1990A

#27

Сообщение Anydy » 24.03.2017{, 10:37}

пожалуйста смотрите!

Аватара пользователя
slavas
Лейтенант
Сообщения: 595
Зарегистрирован: 14.09.2015{, 22:29}
Репутация: 1
Откуда: Санкт-Петербург

DS1990A

#28

Сообщение slavas » 24.03.2017{, 11:29}

Anydy, оки спс.

Anydy

DS1990A

#29

Сообщение Anydy » 25.03.2017{, 14:44}

Пол дня провозился, как только добавляю вход или выход - все скетч перестает работать. Видимо ФЛпрог не умеет корректно создавать скетчи из блоков пользователя.
Может конечно я тупой....если есть программисты - покажите как сделать входы и выходы (исходник по ссылке есть)
По мне проще и быстрее написать код чем тыкать эти кнопки в программе, которая  через раз то закроется то IDE не открывается....сорри просто задолбался ...
Так работает:
byte saveKey = 3; // вход для кнопки обнуления
А так нет:
bool saveKey = 3; // вход для кнопки обнуления
Почему если в параметрах пользователя задать параметр, то все нормально, а если сделать вход для блока то нифига не работает?
Последний раз редактировалось Anydy 25.03.2017{, 14:50}, всего редактировалось 1 раз.

Аватара пользователя
Boroda
Капитан
Сообщения: 836
Зарегистрирован: 01.05.2016{, 01:04}
Репутация: 38
Откуда: Коломна
Имя: Станислав
Контактная информация:

DS1990A

#30

Сообщение Boroda » 25.03.2017{, 15:16}

Anydy писал(а):Почему если в параметрах пользователя задать параметр, то все нормально, а если сделать вход для блока то нифига не работает?
Ну смотря какой параметр. Если In, doorPin, statusLed, saveKey, то не будет работать, потому как pinMode выполняется только в секции Setup, а OneWire ds(In) в Declare. А если Time вытащите, то должно заработать.
Последний раз редактировалось Boroda 25.03.2017{, 15:21}, всего редактировалось 1 раз.

Anydy

DS1990A

#31

Сообщение Anydy » 25.03.2017{, 18:32}

Boroda писал(а):А если Time вытащите, то должно заработать.
Как раз Time и не надо вытаскивать, его вообще убрать надо...
Надо именно все остальные параметры вытащить на вход/выходы.
Почему в скетче применен тип Byte а не Bool для входа/выхода? Есть мысли?
Делаю вход saveKey(bool), соответственно в Loop меняю на:
if (saveKey) save(); // если нажали кнопку 
// сканируем шину, если нет устройств выходим из loop
Срабатывает, но перекидывает в функцию (error)....с какого перепуга?))
В функции Setup:
// если при включении нажата кнопка, сбрасываем ключи на 0 
if (saveKey) EEPROM.write(511, 0);
Это вообще не срабатывает....
Подскажите что я делаю не так?

Аватара пользователя
Boroda
Капитан
Сообщения: 836
Зарегистрирован: 01.05.2016{, 01:04}
Репутация: 38
Откуда: Коломна
Имя: Станислав
Контактная информация:

DS1990A

#32

Сообщение Boroda » 25.03.2017{, 18:55}

Доработал Ваш блок. Светодиод статуса не удалось выкинуть наружу.

Добавлено (25.03.2017, 18:37)
---------------------------------------------
Теперь блок не зависает программу в error(), нет delay(), ожидание ключей при программировании 20 секунд, потом выход в обычный режим.

Добавлено (25.03.2017, 18:37)
---------------------------------------------
Стирание можно производить в любое время.

Добавлено (25.03.2017, 18:39)
---------------------------------------------
Anydy писал(а):if (saveKey) EEPROM.write(511, 0);
Это не работает потому как это Setup и до цикла Loop(), где читается внешняя кнопка, мы еще не дошли.

Добавлено (25.03.2017, 18:50)
---------------------------------------------
Anydy писал(а):Почему в скетче применен тип Byte а не Bool для входа/выхода? Есть мысли?
потому как это номер пина в командах pinMode(), digitalWrite(), digitalRead().

Добавлено (25.03.2017, 18:55)
---------------------------------------------
Anydy писал(а):Срабатывает, но перекидывает в функцию (error)....с какого перепуга?))
выход из loop() происходит командой return, куда она приведет - не знаю.

Вообще исходный скетч, из которого Вы делали блок, написан ужасно. Зависания, задержки... черти что.
Вложения
Test_iButton.rar
(56.92 КБ) 92 скачивания
Последний раз редактировалось Boroda 25.03.2017{, 18:44}, всего редактировалось 1 раз.

Аватара пользователя
Boroda
Капитан
Сообщения: 836
Зарегистрирован: 01.05.2016{, 01:04}
Репутация: 38
Откуда: Коломна
Имя: Станислав
Контактная информация:

DS1990A

#33

Сообщение Boroda » 25.03.2017{, 19:10}

Удалось вытащить ногу "статус"
Вложения
Test_iButton1.rar
(58.92 КБ) 88 скачиваний

Anydy

DS1990A

#34

Сообщение Anydy » 25.03.2017{, 19:30}

Вот молодец!
Пара вопросов:
1. включил защиту от дребезга(глючило)
2. память не очищается(при нажатии кнопки и ресет...это очень важно)
3. EEPROM.write(511, 0);
EEPROM.write(0, 255);
EEPROM.write(1, 255);
EEPROM.write(2, 255);
EEPROM.write(3, 255);
Это только 4 ключа или я не верно понимаю?
4. Еще бы вывести считанный код с ключа!

Аватара пользователя
Boroda
Капитан
Сообщения: 836
Зарегистрирован: 01.05.2016{, 01:04}
Репутация: 38
Откуда: Коломна
Имя: Станислав
Контактная информация:

DS1990A

#35

Сообщение Boroda » 25.03.2017{, 22:50}

Запись начинается при отпускании кнопки. Память стирается при удержании кнопки более 2 секунд и при отпускании начинается запись (это применительно к той плате, что я скинул).
Anydy писал(а):память не очищается
достаточно затереть количество ключей EEPROM.write(511, 0), при новой записи ключей эти данные заменятся.
Anydy писал(а):EEPROM.write(0, 255);EEPROM.write(1, 255);
EEPROM.write(2, 255);
EEPROM.write(3, 255);
это 4 первых байта ключа №1. Забыл убрать пока отлаживал.

Аватара пользователя
Boroda
Капитан
Сообщения: 836
Зарегистрирован: 01.05.2016{, 01:04}
Репутация: 38
Откуда: Коломна
Имя: Станислав
Контактная информация:

DS1990A

#36

Сообщение Boroda » 25.03.2017{, 23:13}

Вот новая версия.

Добавлено (25.03.2017, 23:13)
---------------------------------------------
Добавил версию только для чтения ключей.
Вложения
Test_iButton2.rar
(100.49 КБ) 111 скачиваний
Последний раз редактировалось Boroda 26.03.2017{, 11:50}, всего редактировалось 1 раз.

Anydy

DS1990A

#37

Сообщение Anydy » 26.03.2017{, 09:57}

Спасибо, все работает!
Добавил блок для загрузки в блоки пользователей в той же теме.

zhulen820
Сержант
Сообщения: 193
Зарегистрирован: 29.08.2016{, 22:44}
Репутация: 6
Откуда: Серпухов
Имя: Александр

DS1990A

#38

Сообщение zhulen820 » 26.03.2017{, 16:01}

Спасибо за блоки, это то, чего давно не хватало. А еще подскажите???
 Используется память EEPROM с 0 по 511 ячейку. Это значит что больше в проекте я не смогу использовать запись в EEPROM  каких-либо переменных? У меня так было с RFID считывателем, но я не смог правильно сформулировать вопрос и мне так и не ответили. Я так понимаю, если я в одном проекте буду использовать Ваш блок и одновременно блок записи переменной в EEPROM, значения будут затирать друг друга. Как бы так сделать чтобы номера ячеек EEPROM в которые производится запись не пересекались?

Аватара пользователя
Boroda
Капитан
Сообщения: 836
Зарегистрирован: 01.05.2016{, 01:04}
Репутация: 38
Откуда: Коломна
Имя: Станислав
Контактная информация:

DS1990A

#39

Сообщение Boroda » 26.03.2017{, 16:23}

zhulen820 писал(а):Это значит что больше в проекте я не смогу использовать запись в EEPROM каких-либо переменных?
Ну типа того. Сейчас посмотрю, что там с памятью EEPROM у других Ардуин, может быть есть возможность перенести память с 512 по 1023 ячейки

Добавлено (26.03.2017, 16:23)
---------------------------------------------
У ATmega168 всего 512 байт EEPROM, можно оставить 31 ключ и использовать ячейки с 262 по 511. И у Вас в распоряжении 261 байт EEPROM. Делать?
Последний раз редактировалось Boroda 26.03.2017{, 16:33}, всего редактировалось 1 раз.

zhulen820
Сержант
Сообщения: 193
Зарегистрирован: 29.08.2016{, 22:44}
Репутация: 6
Откуда: Серпухов
Имя: Александр

DS1990A

#40

Сообщение zhulen820 » 26.03.2017{, 16:33}

Ага делать? Проблема в том, что в штатном блоке записи  переменной в  EEPROM нет выбора ячейки куда писать. Куда автор сделал запись надо смотреть в коде, я я не соображаю там. Мне бы хватило и 10-ти ключей для всех проектов, но главное чтобы не было проблем с дальнейшей записью переменных. А то приходится задействовать еще одну ардуину. Внешнюю EEPROM пока не приобрел, чего-то не могу найти таких микросхем в китае

Добавлено (26.03.2017, 16:33)
---------------------------------------------
Ага, делать..... (вопросительный знак не нужен)

Ответить

Вернуться в «iButton»