DS1990A

zhulen820
Сержант
Сообщения: 194
Зарегистрирован: 29 авг 2016, 22:44
Откуда: Серпухов
Имя: Александр

DS1990A

Сообщение zhulen820 »

У меня было три места установки. Металлическая стена и две деревянные. Делал в распаечная коробке.
Sibiryak22rus
Рядовой
Сообщения: 16
Зарегистрирован: 22 мар 2017, 09:01

DS1990A

Сообщение Sibiryak22rus »

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

DS1990A

Сообщение Anydy »

Сделал! Работает!
Домофон
Аватара пользователя
slavas
Лейтенант
Сообщения: 596
Зарегистрирован: 14 сен 2015, 22:29
Откуда: Санкт-Петербург

DS1990A

Сообщение slavas »

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

DS1990A

Сообщение Anydy »

да, верно, завтра сделаю!
Аватара пользователя
slavas
Лейтенант
Сообщения: 596
Зарегистрирован: 14 сен 2015, 22:29
Откуда: Санкт-Петербург

DS1990A

Сообщение slavas »

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

DS1990A

Сообщение Anydy »

пожалуйста смотрите!
Аватара пользователя
slavas
Лейтенант
Сообщения: 596
Зарегистрирован: 14 сен 2015, 22:29
Откуда: Санкт-Петербург

DS1990A

Сообщение slavas »

Anydy, оки спс.
Anydy

DS1990A

Сообщение Anydy »

Пол дня провозился, как только добавляю вход или выход - все скетч перестает работать. Видимо ФЛпрог не умеет корректно создавать скетчи из блоков пользователя.
Может конечно я тупой....если есть программисты - покажите как сделать входы и выходы (исходник по ссылке есть)
По мне проще и быстрее написать код чем тыкать эти кнопки в программе, которая  через раз то закроется то IDE не открывается....сорри просто задолбался ...
Так работает:
byte saveKey = 3; // вход для кнопки обнуления
А так нет:
bool saveKey = 3; // вход для кнопки обнуления
Почему если в параметрах пользователя задать параметр, то все нормально, а если сделать вход для блока то нифига не работает?
Последний раз редактировалось Anydy 25 мар 2017, 14:50, всего редактировалось 1 раз.
Аватара пользователя
Boroda
Капитан
Сообщения: 836
Зарегистрирован: 01 май 2016, 01:04
Откуда: Коломна
Имя: Станислав
Контактная информация:

DS1990A

Сообщение Boroda »

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

DS1990A

Сообщение Anydy »

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

DS1990A

Сообщение Boroda »

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

Добавлено (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, куда она приведет - не знаю.

Вообще исходный скетч, из которого Вы делали блок, написан ужасно. Зависания, задержки... черти что.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Boroda 25 мар 2017, 18:44, всего редактировалось 1 раз.
Аватара пользователя
Boroda
Капитан
Сообщения: 836
Зарегистрирован: 01 май 2016, 01:04
Откуда: Коломна
Имя: Станислав
Контактная информация:

DS1990A

Сообщение Boroda »

Удалось вытащить ногу "статус"
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Anydy

DS1990A

Сообщение Anydy »

Вот молодец!
Пара вопросов:
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 май 2016, 01:04
Откуда: Коломна
Имя: Станислав
Контактная информация:

DS1990A

Сообщение Boroda »

Запись начинается при отпускании кнопки. Память стирается при удержании кнопки более 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 май 2016, 01:04
Откуда: Коломна
Имя: Станислав
Контактная информация:

DS1990A

Сообщение Boroda »

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

Добавлено (25.03.2017, 23:13)
---------------------------------------------
Добавил версию только для чтения ключей.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Boroda 26 мар 2017, 11:50, всего редактировалось 1 раз.
Anydy

DS1990A

Сообщение Anydy »

Спасибо, все работает!
Добавил блок для загрузки в блоки пользователей в той же теме.
zhulen820
Сержант
Сообщения: 194
Зарегистрирован: 29 авг 2016, 22:44
Откуда: Серпухов
Имя: Александр

DS1990A

Сообщение zhulen820 »

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

DS1990A

Сообщение Boroda »

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

Добавлено (26.03.2017, 16:23)
---------------------------------------------
У ATmega168 всего 512 байт EEPROM, можно оставить 31 ключ и использовать ячейки с 262 по 511. И у Вас в распоряжении 261 байт EEPROM. Делать?
Последний раз редактировалось Boroda 26 мар 2017, 16:33, всего редактировалось 1 раз.
zhulen820
Сержант
Сообщения: 194
Зарегистрирован: 29 авг 2016, 22:44
Откуда: Серпухов
Имя: Александр

DS1990A

Сообщение zhulen820 »

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

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

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

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость