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;
}
}
}
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP