В общем, решил сделать аппаратный генератор случайных чисел на Ардуино ( только 2 числа: 1 - True, 0 - False). Именно аппаратный генератор (не путать с ГПСЧ). Решил сделать так: считываем значение с аналогового пина, к которому ничего не подключено (считываются случайные помехи). Дополнительно, на другой аналоговый пин поставил потенциометр, чтобы можно было вручную подрегулировать вероятность появление True или False. Но дело в том, что по какой-то причине последовательность сгенерированных чисел постоянно повторяется. Как-будто считываются не помехи, а какой-то реальный сигнал. В чем проблема? Методика такая: считаем разность двух подряд идущих чисел. Если разность пренадлежит определенному интервалу, то выводим True, если не пренадлежит - выводим False. Интервал задается с помощью потенциометра. По какой-то непонятной мне причине он выводит числа примерно так: 99 101 254 51 83 114 99 101 254 51 83 114 99 101 254 51 83 114 99 102 254 50 83 99 101....., Соответственно, последовательность True и False не случайна, а она всё время повторяется. Как с этим бороться? Почему так происходит? Код: Код (C++): int summ, pred, set; boolean result; void setup() { Serial.begin(9600); } void loop() { pred = summ; summ = analogRead(A5); set = map(analogRead(A0), 0, 1023, 15, 150); if (summ - pred > set or pred - summ > set){ result = true; }else{ result = false; } Serial.print(summ); Serial.print(" --- "); Serial.print(pred); Serial.print(" --- "); Serial.println(result); } A5 - аналоговый пин, к которому ничего не подключено. По идее, при считывании с него каких-либо данных эти данные должны быть абсолютно случайны (просто помехи) A0 - пин с потенциометром.
Смех смехом, а сделано это для того, чтобы не подбирать интервал вручную. Я же не знаю заранее, в каком диапазоне прыгают помехи на пине, а мне нужно получить т.н. Нормальное распределение. То есть, последовательность не должна повторяться, но количество true и false во всей последовательности должно быть примерно одинаковым. Даже если убрать потенциометр и задать интервал прямо в прошивке, то это ничего не поменяет. Всё равно будет идти повторяющаяяся последовательность. С чем это связано?
тервер? Как раз таки на пин наводится шум Нормальный) наводится он как в + так и в - относительно нуля. Ацп преобразует только то, что больше нуля. Величина шума, не думаю, что больше 100 мВ. 100мВ это 20 единиц ацп. Я бы собирал число (допустим от 0 до 7) по первым битам оцифрованного напряжения (равномерное распределение) и вычислял бы как в настолках броски кубиков - менял форму распределения. Надо гуглить что-то про дайсы (dice). Вот нашел
это не так. Там будут не случайные помехи, а очень сильно коррелированные с выполняющейся программой. Истинно белый ШУМ снять можно с радиоприемника с хорошей развязкой от МК.