我想在每次循環重複時選擇一個隨機的PWM引腳。 Arduino UNO中具有PWM功能的引腳是引腳:3,5,6,11,10,9。我試過rnd(),但它給了我一個範圍的線性值,和TrueRandom.Random(1,9)一樣。在Arduino中隨機選擇一個pwm引腳
0
A
回答
3
那麼,有至少兩種方式做到這一點。
第一種(也許是最好的)方式是將這些值加載到大小爲6的數組中,生成一個從零到五的數字,並從數組中的該位置獲取值。
換句話說,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)];
}
有也是一種天真的做法,即在一定範圍內生成數字,並簡單地丟棄那些不符合規範的數字(即返回並獲得另一個數字)。這實際上是一種較差的方法,因爲在某些情況下可能需要更長時間才能獲得合適的號碼。從技術上講,如果沒有出現合適的值,它甚至可能會長時間地無限制地運行。
這將是沿(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;
}
如上所述,前一溶液可能是最好的一個。我僅包含後者僅供參考。
(一)是的,我知道。在足夠長的時間範圍內,統計數據幾乎可以確保您獲得有用的價值。不要成爲一個關於我的誇張的學者:-)
2
訣竅就是讓腳的列表,然後從列表中挑選隨機
入口int pins[]={3,5,6,11,10,9}
int choice = rnd() //in range 0-5
pin = pins[choice]
相關問題
- 1. Arduino RGB LED隨機PWM電平
- 2. 如何隨機選擇Arduino引腳輸出?
- 3. 隨機選擇輸入引腳
- 4. 如何選擇一個隨機數組,然後在THAT數組中選擇一個隨機索引?
- 5. Arduino PWM到Android IOIO PWM
- 6. 選擇一個隨機數
- 7. Arduino由於PWM
- 8. 隨機選擇矩陣索引一次
- 9. 從NSArray中選擇一個隨機對象索引
- 10. 將PWM從引腳3移動到11(Arduino Nano)
- 11. 在Arduino上使用最少數量的PWM引腳時連接多個RGB LED?
- 12. 從Python中的前一個選擇中隨機選擇
- 13. 如何隨機選擇一個數組,然後在javaScript中隨機選擇一個元素?
- 14. 在一個系列中選擇一個隨機數(python)
- 15. 如何從SQL查詢選擇中選擇一個隨機行?
- 16. 選擇隨機
- 17. 隨機選擇
- 18. 隨機選擇
- 19. 隨機選擇
- 20. 從表中選擇一個隨機值,基於另一個隨機值
- 21. 隨機選擇一個超鏈接
- 22. 雄辯 - 隨機選擇一個記錄
- 23. 隨機選擇一個函數
- 24. 隨機選擇一個文件
- 25. 選擇一個隨機日期| Watir
- 26. 選擇一個隨機函數
- 27. Freebase;選擇一個隨機記錄?
- 28. 如何隨機選擇一個SKSpriteNode?
- 29. 選擇一個隨機的障礙
- 30. 選擇一個隨機值T-SQL