TransWikia.com

Сформировать сигнал из массива бит

Stack Overflow на русском Asked on December 29, 2020

введите сюда описание изображенияМне нужно воспроизвести при помощи цифрового пина ардуино вот такой ключик в виде последовательности 1 и 0, где единица занимает 2 мс высокого уровня и 2 мс низкого уровня,
а ноль занимает 1 мс высокого и 1 мс низкого уровня.

Реализовать последовательность 1 и 0 в виде амплитудной модуляции

Если известно, как выглядит логические единица и ноль, то можно ли составить их из задержек, но только один раз, где-то в начале. А затем, написать так:
key= 0b101100001111

Затем поставить цикл, и проходиться по каждому биту, и если бит равен 1, чтобы алгоритм сам выбрал последовательность задержек, свойственных единице, то есть 2 мс высокий уровень, 2 низкий.
Я думаю, что это можно сделать при помощи оператора выбора "switch case".

Выкладываю то, что смог сделать, но скетч не работает. Подскажите как сделать правильно! Спасибо!

void setup() {
pinMode(13, OUTPUT);
byte key = 0b101100001111;
}
 
void loop() {
for (byte n = 0; n < 12; n++) {
  
switch (bitRead(key, n)) {
  case 0:// выполнить, если значение бита == 0
     digitalWrite(13, HIGH);
     delayMicroseconds(1000);
     digitalWrite(13, LOW);
     delayMicroseconds(1000);
    break;
  case 1:  // выполнить, если значение бита == 1
      digitalWrite(13, HIGH);
     delayMicroseconds(2000);
     digitalWrite(13, LOW);
     delayMicroseconds(2000);
    break;
}
}
}

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP