我是使用Arduino Uno在C编码的新手。我想做以下事情:
int randomNumber;
int randomNumberBinairy = 0;
void setup() {
Serial.begin(9600);
randomSeed(analogRead(A0));
}
void loop() {
randomNumber = random(1, 16);
randomNumberBinairy = ((randomNumber, BIN));
Serial.println(randomNumberBinairy);
delay(5000);
}
打印出来:
2
2
2
2
etc..
但是我想用二进制打印出随机数(1到16之间)。所以看起来应该是这样的:
101
1100
110
10
etc..
对此有任何帮助吗?
答案 0 :(得分:1)
bitRead(x, n)
int randomNumber;
void setup() {
Serial.begin(9600);
randomSeed(analogRead(A0));
}
void loop() {
randomNumber = random(1, 16);
Serial.print(bitRead(randomNumber, 0));
Serial.print(bitRead(randomNumber, 1));
Serial.print(bitRead(randomNumber, 2));
Serial.println(bitRead(randomNumber, 3));
delay(5000);
}
答案 1 :(得分:0)
如果您确定它将始终为0,那么您可以编写一个处理16种不同概率的开关盒。对于每个位,它比bitread(x,n)工作得更快。
答案 2 :(得分:0)
仅供您自己参考, Serial.print 的documentation说:
Serial.print(78,BIN)给出“1001110”
Serial.print(78,OCT)给出“116”
Serial.print(78,DEC)给出“78”
Serial.print(78,HEX)给出“4E”
也就是说,如果你想用二进制打印一些内容,那么你只需要 写
Serial.print(randomNumber, BIN);
or
Serial.println(randomNumber, BIN);
就这么简单。