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

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


Внимание всем пользователям программы FLProg! В течении ближайших двух дней будет осуществляться переход на новую платформу
Чтобы продолжить общение на форуме вы можете перейти сюда
Сообщения оставленные на старом форуме будут утеряны безвозвратно
Приятного Вам Нового года и до встречи в новом 2018 году
С уважением Администрация 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Яндекс.Метрика