2016-11-20 3 views
2

Я новичок в кодировании в C, используя Arduino Uno. Я хотел бы сделать следующее:Как установить двоичный int?

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

Arduino не является C! И все данные являются двоичными в ** двоичном ** цифровом компьютере. – Olaf

ответ

1

в Arduino вы можете использовать функцию 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); 
} 
+0

Я думаю, что это излишне запутанно, ** Serial.print ** уже предоставляет необязательный аргумент * format *, который позволяет вам выбирать формат напечатанного номера. –

0

Если вы уверены, что это будет всегда 0 лет 15 вы можете написать переключатель случая блок, который обрабатывает 16 разную вероятность. Это работает быстрее, чем bitread (x, n) для каждого бита.

0

Просто для собственной справки, documentation из Serial.print говорит:

Serial.print (78, BIN) дает "1001110"

Serial.print (78, октябрь) дает "116"

Serial.print (78, декабрь) дает "78"

Serial.print (78, HEX) дает "4Е"

То есть, если вы хотите, чтобы напечатать что-нибудь в бинарного, то вам нужно только написать

Serial.print(randomNumber, BIN); 
or 
Serial.println(randomNumber, BIN); 

Это просто, как это.

Смежные вопросы