Задание: реализовать чтение с последовательного порта значений частоты,яркости светодиода и управления им. Как выполнить? Вот код: int val; int value = 0; int ledpin = 6; int x = 0; int T = 2550; void setup() { Serial.begin(9600); pinMode (LED_BUILTIN, OUTPUT); Serial.print(" Hello world!"); } void loop() { for (value = 0 ; value <= 2550; value += 10) { digitalWrite(LED_BUILTIN, HIGH); delayMicroseconds(value); digitalWrite(LED_BUILTIN, LOW); delayMicroseconds(T - value); } for (value = 2550; value >= 0; value -= 10) { digitalWrite(LED_BUILTIN, HIGH); delayMicroseconds(value); digitalWrite(LED_BUILTIN, LOW); delayMicroseconds(T - value); } }
Очевидно, добавить чтение из порта на предмет входящих параметров и пр. - и применять их, когда таковые параметры там есть. Подробности - в описании к Serial, там есть ВСЁ.
Что писать? Код? Если вы про код - то код пишется в исходный файл. Параметры, поступающие из Serial, разбираются, и складываются в переменные, вы потом манипулируете этими переменными с помощью кода, чтобы получить требуемое поведение. Вот смотрите - я приведу простой пример в ПСЕВДОКОДЕ (компилироваться он не будет, а призван лишь продемонстрировать логику работы, для того, чтобы вы поняли, как оно всё должно шевелиться): Код (C++): bool canWork = false; // можем ли работать? int hertz = 50; // частота мерцания светодиода void setup() { Serial.begin(9600); } void loop() { if(Serial.hasCommand('HERTZ')) { // есть команда на установку частоты из порта hertz = Serial.parseInt(); } if(Serial.hasCommand('RUN')) { // есть команда на начало работы canWork = true; } if(Serial.hasCommand('STOP')) { // есть команда на конец работы canWork = false; } if(canWork) { // тут мигаем светодиодом с нужной частотой hertz } else { // тут гасим светодиод } }
Считывать с сериалпорта? Должен быть некий протокол, который понимает передающее и принимающее устройство. Один пересылает команды, другой принимает и выполняет. Для перфекционистов еще и подтверждает выполнение.
Например, передающая сторона плюёт в порт строчку "HERTZ=100", принимающая её разбирает, и понимает, что запросили установку частоты в 100 Герц. Далее - по аналогии.