Приветствую всех! Ещё раз с Новым Годом. А теперь к делу: мне нужно что-то вроде электронных костей, но только чтоб они работали без постороннего вмешательства(во всех схемах, что я видел имелась кнопка, нажимая на которую счётчик прекращал работу). Устройство должно быть сделано на одном МК. И зажигать через каждые две секунды один из шести светодиодов (при этом вероятность того, что кто-то сможет угадать, какой светодиод загорится, должна составлять 1 к 6). Я не прошу делать всё за меня! Дайте, пожалуйста, идею как осуществить это программно. ЗЫ: Охотно принимаются ссылки на готовыё устройства!
самый простейший с точки зрения напряжения мозга способ: всю свободную память МК заполняешь случайными числами, которые сгенерировал, например, в Экселе в виде таблички (или вручную, кидая реальную кость ). по моим прикидкам там поместится никак не меньше 4000 чисел. В основной программе просто каждые 2 секунды берешь из этого "массива" очередное число и выводишь его вряд ли кто сумеет предугадать последовательность из 4000 чисел.
А вот реализовать математически формулу, генерирующую псевдослучайную последовательнсоть чисел, будет посложнее, т.к. придется вспоминать математику и, может быть, даже высшую
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Реализуется на всём, чём угодно. К155ЛА3, например. И не МК нужен, и не о случайных числах речь в данном случае идёт.
Смотрите такову науку: "Численные методы" называется. Алгоритмы генерации псевдослучайных чисел. Почему "псевдо"? Да потому, что мы сможем генерировать эти числа с определенным периодом и заданным распределением из-за того, что численные методы используются.
_________________ Питаюсь копытными. Как исчезающий вид занесён в Красную книгу МСОП. Почему до сих пор не занесены в Красную книгу инженеры и учёные РФ?
Последний раз редактировалось ИРБИС Чт янв 03, 2008 21:10:56, всего редактировалось 1 раз.
_________________ Питаюсь копытными. Как исчезающий вид занесён в Красную книгу МСОП. Почему до сих пор не занесены в Красную книгу инженеры и учёные РФ?
А вот вам и на К155ЛА3 — в школьных кружках раньше собирали. Нажмёшь кнопку — число фиксируется.
Разве схема только на ЛА3? А ИЕ2 и ИА1 так, посивные элементы. И я же русским языком писал, что видал я такие схемы(с кнопкой), а мне без кнопки нужно.
Разве схема только на ЛА3? А ИЕ2 и ИА1 так, посивные элементы. И я же русским языком писал, что видал я такие схемы(с кнопкой), а мне без кнопки нужно.
Да. Сама схема именно на ЛА3, остальное — это индикация. И микросхема там ИД1, а не ИА1. Плохо напечатано, понимаешь? Вместо кнопки можно транзисторный ключ поставить. Управлять им можно от таймера, вам через 2 с индикацию нужно? 555 (КР1006ВИ1) или 7555 (КР1441ВИ1) прекрасно справятся с этой задачей! Индикацию, как я уже говорил, какую хочешь, ту и делай.
Удачи!
_________________ Питаюсь копытными. Как исчезающий вид занесён в Красную книгу МСОП. Почему до сих пор не занесены в Красную книгу инженеры и учёные РФ?
Если я поставлю таймер, то он будет останавливать генерацию через равные промежутки времени, и каждый раз будет выводиться одно и то же число. Человек не может с такой точностью нажимать на кнопку, поэтому кажется, что числа выдаваемые устройством - случайны.
Спасибо всем, кто участвовал в теме! Проблема с генератором случайных чисел разрешилась.
Сделал всё по совету ARV, а именно сам кидал кубик и записывал все варианты в микроконтроллер, пока набрал около сотни чисел, но результат - превосходный, думаю, что 4 тысячи чисел писать не буду, трёхсот вполне хватит.
Ещё раз спасибо!
Я писал(а):
Первый вариант мне очень понравился, но писать такую программу - рука отвалится...
Не отвалилась.
Последний раз редактировалось regenerator Чт янв 03, 2008 14:36:35, всего редактировалось 1 раз.
Если я поставлю таймер, то он будет останавливать генерацию через равные промежутки времени, и каждый раз будет выводиться одно и то же число.
Частота генератора довольно большая, таймер аналоговый, так что достаточно случайно получаться должно. В целом замечание верное.
Есть хорошая книга, её "Библией для программистов" называли: Д.Кнут "Искусство программирования для ЭВМ". Советую прочитать. Её недавно в очередной раз переиздали, но стоит конечно... Но здесь: http://www.radiokot.ru/forum/viewtopic.php?t=466 вроде бы мелькала, хотя три тома весят...
_________________ Питаюсь копытными. Как исчезающий вид занесён в Красную книгу МСОП. Почему до сих пор не занесены в Красную книгу инженеры и учёные РФ?
Зарегистрирован: Сб янв 20, 2007 20:44:33 Сообщений: 163 Откуда: Из закаулков вашей души
Рейтинг сообщения:0
regenerator да вы терпеливый человек
Ну хоть и поздно может кому пригодится.
Одним из простых способов как можно сгенерировать ряд псевдо случайных числел следующий:
Берем ряд чисел Фибоначчи(следующее число получается сложением двух пpедыдущих) :
13, 21, 34, 55, 89, 144, 233...
И далее берем допустим только второй знак числа и получаем ряд псевдо случайных чисел:
3,1,4,5,9,4,3...
буквально недавно мне пришлось самому последовать своему совету - срочно и быстро надо было сделать псевдослучайную последовательность... хотя с формулой у меня проблем нет - решил все-таки табличный способ, т.к. дополнительно было необходимо всю память, не занятую программой, заполнить "мусором". так вот, решение задачи, как говорится, в пять шагов:
1. Открываем эксель
2. вводим в рядом стоящие клетки по горизонтали следующее (квадратными скобками я обозначил клетки):
[.db] [=СЛЧИС()*255] 3. форматируем вторую клетку, чтобы в ней число было округлено до целых
4. выделяем пару этих клеток, цепляем мышкой за правый нижний угол выделения и растягиваем выделение вниз на сколько надо клеток (мне было надо на 512). получаем таблицу случайных чисел.
5. выделяем эту таблицу, копируем в буфер обмена, переключаемся в редактор программы для МК и делаем "вставить" - вуаля! таблица из 512 случайных чисел (для ассемблера) готова!!! и руки не отваливаются абсолютно!!!
для пишущих на Си алгоритм точно такой же, только сначала вводим =СЛЧИС()*255 а затем в клетку рядом - запятую. после копирования надо будет лишь перед таблицей добавить char random[] = { и после таблицы поставить закрывающую фигурную скобку. Кстати, если умножать на 65535 - можно получить случайные числа unsigned int
в общем, дешево и сердито. для экономии места в программе оформить таблицу можно в виде include-файла
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Вообщето, норманьные генераторы случайных чисел (не псевдо) делаются так. Берётся шумящий элемент -резистор, транзистор, стабилитрон. Сигнал усиливается и подается на компаратор.
Дальше, в течении некоторго большого интервала времени, считают количество импульсов и если количество четное - полагают что получен бит-0, а если нечётное - полагают что получен бит-1.
Получается настоящая случайная битовая последовательность, которую можно нарезать на числа, по n-бит
Можно сигнал с шумящего стабилитрона усилить и подать на АЦП, откинуть старшие разряды, а мадшие будут представлять из себя неплохой цифровой шум!
Здравствуйте. Может кому пригодится в случае, когда нужно экономить память программ. Собственно генератор псевдослучайной последовательности находится в обработчике прерывания TIM0.
akl, вы бы хоть пояснили, в каких регистрах у вас само число получается... я вот взял и протестировал в студии - нифига не псевдослучаное там получается... ессли вначале все регистры обнулены - вообще так они и остаются, а если в ZL не ноль - что-то получается в ZH:ZL, но на случайное похоже мало... во всяком случае при начальном значении ZL=2 получается последовательность чисел больше 255 однозначно - т.е. явно не очень случайное распределение...
и вообще, алгоритм какой-то странный у вас...
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
akl, вы бы хоть пояснили, в каких регистрах у вас само число получается... я вот взял и протестировал в студии - нифига не псевдослучаное там получается... ессли вначале все регистры обнулены - вообще так они и остаются, а если в ZL не ноль - что-то получается в ZH:ZL, но на случайное похоже мало... во всяком случае при начальном значении ZL=2 получается последовательность чисел больше 255 однозначно - т.е. явно не очень случайное распределение...
и вообще, алгоритм какой-то странный у вас...
ARV Вторая строчка сверху
"; Регистры ZH ZL генератор псевдослучайной последовательности"
Спасибо за тестирование программы!
Каюсь, при убирании ненужного в этой программе стер начальную установку пары ZH:ZL в любое, отличное от 0xFFFF, значение, которое является запрещенным. Значение 0 входило в область необходимых, поэтому и был выбран этот алгоритм, но откуда он был взят??? не помню.
Последовательность чисел, получаемая после прерывания TIM0 в паре ZH:ZL 0x0002,0x0005,0x000B,0x0017,0x002F,0x005F,0x00BE,0x017D,0x02FB,0x05F6,0x0BED,0x17DA,0x2FB5,0x5F6B,....
Последовательность чисел, получаемая после прерывания TIM0 в паре ZH:ZL 0x0000,0x0001,0x0003,0x007,0x000F,0x001F,0x003F,0x007F,0x00FE,0x01FC,0x03F9,0x7F3,0x0FE7,0x1FCE,0x3F9C,....
Проверял AVR STUDIO 3.2.
Исправленный вариант, в который включены команды проверки. По умолчанию проверяется отсутствие в последовательности кода 0xFFFF.
Сейчас этот форум просматривают: Dllyur и гости: 25
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения