цифровая электроника
вычислительная техника
встраиваемые системы

 
» » » Генератор чисел на Arduino для создания лотереи своими руками

Генератор чисел на Arduino для создания лотереи своими руками

Автор: Mike(admin) от 15-10-2017, 16:45

Лотерея – такая это форма игры, которая главным образом включает в себя розыгрыш комбинации цифр. Сегодня существует большое количество различных лотерей, отличающихся нюансами и процессом проведения, но главным остается случайное распределение цифр, определяющее победителя. Можно назвать много успешных лотерей такого толка, например, лотерея ПАБГ.


Генератор чисел на Arduino для создания лотереи своими руками

Такой вид времяпрепровождения очень интересен и захватывающ. Более того, его можно организовать самостоятельно с помощью популярной в наши дни платформы для разработчиков и радиолюбителей Arduino. Реализовав генератор случайных чисел на Arduino, можно сделать некое подобие довольно интересной лотереи.


В данном материале будет описан проект под названием Randuino, то есть Arduino с имплементацией генератора случайных чисел (random number generator), который позволит вновь и вновь получать новые числа, совершенно не похожие на предыдущие цифры. Как раз именно это является залогом настоящей лотереи, поскольку генерируемые новые числа не должен знать никто. В качестве средства отображения таких чисел используется стандартный двухстроковый LCD-дисплей.


Прежде чем приступить к демонстрации кода, следует уточнить, как именно получаются такие случайные числа. Дело в том, что структура ядра микроконтроллера (как и у всех компьютеров и прочих вычислительных устройств, основанных на кремниевой технологии) является «жесткой», то есть все вычисления здесь строго детерминированы и отсутствует вообще любой элемент случайности. В связи с этим использовать само ядро микроконтроллера для генерации случайных чисел, которые будут лишь псевдослучайными, нельзя, поскольку такую лотерею можно будет запросто взломать, просто поняв последовательность, с которой генерируются новые числа.


Поэтому нужно искать источник настоящих случайностей извне. И его можно найти с помощью АЦП. Дело в том, что документация на Arduino предполагает, что аналоговые линии микроконтроллера могут обнаруживать имеющиеся вокруг нас микроволновые или радиоволновые сигналы, которые после их поступления на канал АЦП можно выразить как число от 0 до 1023, а затем использовать это число в качестве основы для генерации случайных чисел. В итоге только такой механизм позволит реализовать настоящую лотерею, подобную pubg лотереи. Код для Arduino с генератором случайных чисел для построения механизма лотереи представлен ниже.


#include <LiquidCrystal.h>

LiquidCrystal lcd(4, 5, 6, 7, 8, 9);

const int seedPin = A0;
const int button = 2;
int buttonState;
int prevButtonState;
int totalNumbersGenerated = 0;

void setup() {
    
    lcd.begin (16,2);
    
    pinMode (seedPin, INPUT);
    pinMode (button, INPUT);
    int randSeed = analogRead (seedPin);
    int generatedSeed = random (-randSeed, randSeed);
    randomSeed (generatedSeed);
    prevButtonState = digitalRead (button);
    
    PrintToLcd (
        "Rng: " + String (-randSeed) + " - " + String (randSeed),
        "Seed: " + String (generatedSeed)
        );
}

void loop() {
    buttonState = digitalRead (button);
    if (buttonState != prevButtonState && buttonState == HIGH)
    {
        totalNumbersGenerated++;
        PrintToLcd (
            "Result #" + String (totalNumbersGenerated),
            String (random (-999999999, 999999999))
            );
        delay (200);
    }
    prevButtonState = buttonState;
}

void PrintToLcd (String line1, String line2)
{
    lcd.clear ();
    lcd.print (line1);
    lcd.setCursor (0, 1);
    lcd.print (line2);
}



© digitrode.ru


Теги: Arduino




Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий