Я хочу выбрать случайный штырь PWM каждый раз, когда цикл повторяется. Штыри, которые являются PWM, способными в Arduino UNO, являются штырьками: 3,5,6,11,10,9. Я попробовал rnd(), но он дает мне линейные значения из диапазона, то же самое с TrueRandom.Random (1,9).Выберите случайный вывод pwm в Arduino
ответ
Ну, есть по крайней мере два способа сделай это.
Первый (и, вероятно, лучший) способ - загрузить эти значения в массив размером шесть, сгенерировать число в диапазоне от нуля до пяти и получить значение из этой позиции в массиве.
Другими словами, psedo-код, такой как:
values = [3, 5, 6, 9, 10, 11]
num = values[randomInclusive(0..5)]
С точки зрения фактического осуществления этого псевдо-код, я хотел бы посмотреть на что-то вроде:
int getRandomPwmPin() {
static const int candidate[] = {3, 5, 6, 9, 10, 11};
static const int count = sizeof(candidate)/sizeof(*candidate);
return candidate[TrueRandom.random(0, count)];
}
Там в также наивный способ сделать это, который должен генерировать числа в диапазоне и просто выбросить те, которые не соответствуют вашей спецификации (т. е. вернуться и получить еще один). Это на самом деле более низкий метод, поскольку при некоторых обстоятельствах может потребоваться больше времени, чтобы получить подходящее число. С технической точки зрения, если подходящие значения не отображаются, может потребоваться бесконечное время (a).
Это было бы вдоль линий (psedo-код):
num = -1 // force entry into loop
while num is not one of 3, 5, 6, 9, 10, 11:
num = randomInclusive(3..11)
который становится:
int getRandomPwmPin() {
int value;
do {
value = TrueRandom.random(3, 12);
} while ((value == 4) || (value == 7) || (value == 8));
return value;
}
Как уже говорилось, бывший решение, вероятно, является лучшим вариантом. Я включаю последний только в информационных целях.
(а) Да, я знаю. В течение достаточно долгого времени статистика в значительной степени гарантирует, что вы получите полезную ценность. Остановите быть педантом о моей гиперболе :-)
Хитрость заключается в том, чтобы сделать список выводов, а затем выбрать элемент из списка в случайном
int pins[]={3,5,6,11,10,9}
int choice = rnd() //in range 0-5
pin = pins[choice]
см Generating random integer from a range, чтобы получить число в диапазоне
- 1. Arduino PWM to Android IOIO PWM
- 2. Arduino Due PWM
- 3. Arduino Uno PWM контакты конфликт
- 4. Arduino Uno PWM - Странные результаты
- 5. Arduino PWM затухание водить с avra
- 6. Arduino RGB LED random PWM Level
- 7. Как настроить прерывание для аппаратной PWM на Arduino Due?
- 8. Почему я всегда получаю вывод Zero PWM?
- 9. Arduino Uno такая же частота на всех выводах PWM
- 10. Случайный текст как вывод
- 11. Как остановить pwm после генерации нескольких импульсов в Arduino?
- 12. ASP.NET случайный кеширующий вывод
- 13. Неожиданный вывод на Arduino
- 14. Нечеткий таймер (случайный в пределах границ) (Arduino)
- 15. Выберите случайный метод
- 16. Выберите случайный элемент в unordered_map
- 17. Выберите случайный элемент в CardView
- 18. Выберите случайный объект в Jquery
- 19. slick3: выберите случайный ряд
- 20. Выберите случайный элемент
- 21. Сделать строковый вывод в виде списка в Pwm
- 22. Arduino случайный файл на SD: rewindDirectory
- 23. Генерировать PWM с прерываниями
- 24. переменный pwm на arduino через visual basic 2010
- 25. Arduino: Использование analogRead() на фоторезисторе для чтения светодиодов с PWM
- 26. Светодиодные индикаторы Arduino PWM не исчезают или выходят
- 27. Arduino- Увеличьте диапазон рабочего цикла PWM на мега 2560?
- 28. Измените частоту цифрового pwm на Arduino Uno rev 3
- 29. PWM (широтно-импульсная модуляция) на Arduino с использованием Python
- 30. Случайный вывод с char * operator