FLProg
Вход на сайт
Логин:
Пароль:
Поиск
...
Статистика
Воскресенье, 22.07.2018, 03:31
Приветствую Вас Гость | RSS
Главная | Регистрация | Вход

Поиск по сайту




Сообщения оставленные на старом форуме будут утеряны безвозвратно

С уважением Администрация flprog.ru
Форум
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 3 из 6
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • »
Модератор форума: support, Сергей, Anydy, Олег  
Форум » Основной » Железо - контроллеры, шилды, датчики и др. » Беспроводная связь » DS1990A
DS1990A
Anydy Дата: Суббота, 25.03.2017, 18:32 | Сообщение # 31
Генерал-лейтенант
Группа: Администраторы
Сообщений: 824
Награды: 17
Репутация: 12
Статус: Offline
Цитата Boroda ()
А если Time вытащите, то должно заработать.
Как раз Time и не надо вытаскивать, его вообще убрать надо...
Надо именно все остальные параметры вытащить на вход/выходы.
Почему в скетче применен тип Byte а не Bool для входа/выхода? Есть мысли?
Делаю вход saveKey(bool), соответственно в Loop меняю на:
if (saveKey) save(); // если нажали кнопку 
// сканируем шину, если нет устройств выходим из loop
Срабатывает, но перекидывает в функцию (error)....с какого перепуга?))
В функции Setup:
// если при включении нажата кнопка, сбрасываем ключи на 0 
if (saveKey) EEPROM.write(511, 0);
Это вообще не срабатывает....
Подскажите что я делаю не так?

blynk.su
 
Boroda Дата: Суббота, 25.03.2017, 18:55 | Сообщение # 32
Генерал-лейтенант
Группа: Проверенные
Сообщений: 797
Награды: 38
Репутация: 36
Статус: Offline
Доработал Ваш блок. Светодиод статуса не удалось выкинуть наружу.

Добавлено (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.9 Kb)


Сообщение отредактировал Boroda - Суббота, 25.03.2017, 18:44
 
Boroda Дата: Суббота, 25.03.2017, 19:10 | Сообщение # 33
Генерал-лейтенант
Группа: Проверенные
Сообщений: 797
Награды: 38
Репутация: 36
Статус: Offline
Удалось вытащить ногу "статус"
Прикрепления: Test_iButton1.rar(58.9 Kb)
 
Anydy Дата: Суббота, 25.03.2017, 19:30 | Сообщение # 34
Генерал-лейтенант
Группа: Администраторы
Сообщений: 824
Награды: 17
Репутация: 12
Статус: Offline
Вот молодец!
Пара вопросов:
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. Еще бы вывести считанный код с ключа!


blynk.su
 
Boroda Дата: Суббота, 25.03.2017, 22:50 | Сообщение # 35
Генерал-лейтенант
Группа: Проверенные
Сообщений: 797
Награды: 38
Репутация: 36
Статус: Offline
Запись начинается при отпускании кнопки. Память стирается при удержании кнопки более 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 Дата: Суббота, 25.03.2017, 23:13 | Сообщение # 36
Генерал-лейтенант
Группа: Проверенные
Сообщений: 797
Награды: 38
Репутация: 36
Статус: Offline
Вот новая версия.

Добавлено (25.03.2017, 23:13)
---------------------------------------------
Добавил версию только для чтения ключей.
Прикрепления: Test_iButton2.rar(100.5 Kb)


Сообщение отредактировал Boroda - Воскресенье, 26.03.2017, 11:50
 
Anydy Дата: Воскресенье, 26.03.2017, 09:57 | Сообщение # 37
Генерал-лейтенант
Группа: Администраторы
Сообщений: 824
Награды: 17
Репутация: 12
Статус: Offline
Спасибо, все работает!
Добавил блок для загрузки в блоки пользователей в той же теме.


blynk.su
 
zhulen820 Дата: Воскресенье, 26.03.2017, 16:01 | Сообщение # 38
Лейтенант
Группа: Проверенные
Сообщений: 89
Награды: 0
Репутация: 0
Статус: Offline
Спасибо за блоки, это то, чего давно не хватало. А еще подскажите???
 Используется память EEPROM с 0 по 511 ячейку. Это значит что больше в проекте я не смогу использовать запись в EEPROM  каких-либо переменных? У меня так было с RFID считывателем, но я не смог правильно сформулировать вопрос и мне так и не ответили. Я так понимаю, если я в одном проекте буду использовать Ваш блок и одновременно блок записи переменной в EEPROM, значения будут затирать друг друга. Как бы так сделать чтобы номера ячеек EEPROM в которые производится запись не пересекались?
 
Boroda Дата: Воскресенье, 26.03.2017, 16:23 | Сообщение # 39
Генерал-лейтенант
Группа: Проверенные
Сообщений: 797
Награды: 38
Репутация: 36
Статус: Offline
Цитата zhulen820 ()
Это значит что больше в проекте я не смогу использовать запись в EEPROM каких-либо переменных?

Ну типа того. Сейчас посмотрю, что там с памятью EEPROM у других Ардуин, может быть есть возможность перенести память с 512 по 1023 ячейки

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

Сообщение отредактировал Boroda - Воскресенье, 26.03.2017, 16:33
 
zhulen820 Дата: Воскресенье, 26.03.2017, 16:33 | Сообщение # 40
Лейтенант
Группа: Проверенные
Сообщений: 89
Награды: 0
Репутация: 0
Статус: Offline
Ага делать? Проблема в том, что в штатном блоке записи  переменной в  EEPROM нет выбора ячейки куда писать. Куда автор сделал запись надо смотреть в коде, я я не соображаю там. Мне бы хватило и 10-ти ключей для всех проектов, но главное чтобы не было проблем с дальнейшей записью переменных. А то приходится задействовать еще одну ардуину. Внешнюю EEPROM пока не приобрел, чего-то не могу найти таких микросхем в китае

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

 
Boroda Дата: Воскресенье, 26.03.2017, 16:37 | Сообщение # 41
Генерал-лейтенант
Группа: Проверенные
Сообщений: 797
Награды: 38
Репутация: 36
Статус: Offline
Сделал тестируйте! Используются ячейки EEPROM с 262 по 511, что оставляет 261 байт под пользовательские данные (стандартные блоки чтения/записи EEPROM).

Добавлено (26.03.2017, 16:37)
---------------------------------------------
Цитата zhulen820 ()
Проблема в том, что в штатном блоке записи переменной в EEPROM нет выбора ячейки куда писать
С нуля пишется по умолчанию.
Прикрепления: Test_iButton3.rar(101.1 Kb)


Сообщение отредактировал Boroda - Воскресенье, 26.03.2017, 17:54
 
zhulen820 Дата: Воскресенье, 26.03.2017, 18:19 | Сообщение # 42
Лейтенант
Группа: Проверенные
Сообщений: 89
Награды: 0
Репутация: 0
Статус: Offline
Ок, попробую. Спасибо!!!

Добавлено (26.03.2017, 18:19)
---------------------------------------------
Нет. Не компилируется прект если дополнительно использовать блоки записи переменной в EEprom. Какая-то ошибка. Придется все-таки использовать еще один контроллер для ключей

 
Anydy Дата: Воскресенье, 26.03.2017, 18:34 | Сообщение # 43
Генерал-лейтенант
Группа: Администраторы
Сообщений: 824
Награды: 17
Репутация: 12
Статус: Offline
Цитата zhulen820 ()
Не компилируется прект если дополнительно использовать блоки записи переменной в EEprom.
Подтверждаю, какой то конфликт.....
А вообще по идее и 31-го ключа много, 15 само то!

blynk.su
 
zhulen820 Дата: Воскресенье, 26.03.2017, 18:36 | Сообщение # 44
Лейтенант
Группа: Проверенные
Сообщений: 89
Награды: 0
Репутация: 0
Статус: Offline
Я так понимаю, что если использовать микросхему памяти будет то же самое. Память-то просто прибавляется к уже существующей. Только еще один контроллер
 
Boroda Дата: Воскресенье, 26.03.2017, 19:36 | Сообщение # 45
Генерал-лейтенант
Группа: Проверенные
Сообщений: 797
Награды: 38
Репутация: 36
Статус: Offline
Господа, господа, без паники! Применил родную библиотеку EEPROM.h FLProg (раньше было EEPROMex.h). Все работает.

Добавлено (26.03.2017, 19:34)
---------------------------------------------
Сделал 10, 20, 30, 40, 50 и 60 ключей.

Добавлено (26.03.2017, 19:36)
---------------------------------------------
Даже удалось 22 байта урвать у 60х версии.
Прикрепления: Test_iButton4.rar(105.5 Kb)


Сообщение отредактировал Boroda - Воскресенье, 26.03.2017, 19:47
 
Форум » Основной » Железо - контроллеры, шилды, датчики и др. » Беспроводная связь » DS1990A
  • Страница 3 из 6
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • »
Поиск:

FLProg © 2018
uCoz