Как преобразовать 4 битный код Грея в двоичный в Arduino? Привет
Есть такой код, найденный на просторах интернета:boolean A, B, C, D, S0, S1, S2, S3;
void setup ()
{
pinMode(2, INPUT);
pinMode(3, INPUT);
pinMode(4, INPUT);
pinMode(5, INPUT);
Serial.begin(9600);
}
void loop()
{
A=digitalRead(2);
B=digitalRead(3);
C=digitalRead(4);
D=digitalRead(5);

S0=A;
S1=(!A&&B)||(A&&!B);
S2=(!B&&C)||(B&&!C);
S3=(!C&&D)||(C&&!D);
Serial.print("Grey:");
Serial.print(S0);
Serial.print(S1);
Serial.print(S2);
Serial.println(S3);
Serial.print("Bin:");
Serial.print(A);
Serial.print(B);
Serial.print(C);
Serial.println(D);

delay(1000);
}
Проблема в том, что он преобразует двоичный в Грея, а мне нужно наоборот
Подскажите, пожалуйста, как это сделать

21 Авг 2019 в 06:04
269 +1
1
Ответы
1

Для того чтобы преобразовать 4-битный код Грея в двоичный код в Arduino, вам нужно внести некоторые изменения в ваш код. Вместо того чтобы вычислять S0, S1, S2, S3 из A, B, C, D, вы можете сделать обратное преобразование.

Вот пример кода, который делает это:

boolean A, B, C, D, S0, S1, S2, S3;
void setup ()
{
pinMode(2, INPUT);
pinMode(3, INPUT);
pinMode(4, INPUT);
pinMode(5, INPUT);
Serial.begin(9600);
}
void loop()
{
S0 = digitalRead(2);
S1 = digitalRead(3);
S2 = digitalRead(4);
S3 = digitalRead(5);
A = S0;
B = S0 ^ S1;
C = S1 ^ S2;
D = S2 ^ S3;
Serial.print("Grey:");
Serial.print(S0);
Serial.print(S1);
Serial.print(S2);
Serial.println(S3);
Serial.print("Bin:");
Serial.print(A);
Serial.print(B);
Serial.print(C);
Serial.println(D);
delay(1000);
}

Этот код преобразует код Грея, который подается на входы 2, 3, 4, 5 в соответствующие двоичные значения A, B, C, D и выводит их на Serial Monitor.

20 Апр 2024 в 13:24
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир