Последовательное построение ШИМ
Я пытаюсь построить график значения ШИМ, которое увеличивается (каждые 2 секунды), а затем уменьшается, чтобы сравнить его со значением энкодера. Я ожидал продолжения значения (например, шага) в течение 2 секунд, но вместо этого у меня появился сигнал треугольника. Вот мой код
const int pwmG = 2;
const int DirG = 8 ;
int a =0;
#define encoder1_CHA 18 //Левый кодер
#define pin_channelB_left 6
int b =0;
void setup() {
Serial.begin(9600);
pinMode(pwmG,OUTPUT) ;
pinMode(DirG,OUTPUT) ;
attachInterrupt(digitalPinToInterrupt(encoder1_CHA),interruptUp,RISING);
}
void interruptUp(){
b = !b;
}
void loop() {
Serial.println(b);
//Serial.print(" ");
pwm();
//Serial.println(а);
//Serial.println(b);
}
void pwm(){
for (int i =0; i< 10; i++){
a = a +5;
analogWrite(pwmG, a);
Serial.println(a);
delay(200);
}
//Serial.println(b);
for (int i =0; i< 10; i++){
a = a -5;
analogWrite(pwmG, a);
Serial.println(a);
delay(200);
}
}
Что у меня есть:
То, что я ожидал (пример найден в Интернете:
1 ответ
Во-первых, последовательный плоттер будет отображать значения во времени, соединяя их прямой линией. Именно так он представляет данные на графике (только для специальной визуализации, а не для детального построения графиков и анализа данных).
Второй момент заключается в том, что для каждого шага вы отправляете только одно значение через последовательный интерфейс, то есть только одну точку данных на шаг. Затем последовательный плоттер отображает эту точку данных в зависимости от времени и соединяет ее с точками для других шагов прямой линией. Таким образом, вы получаете наклонные линии/треугольники в последовательном плоттере.
Изображение, которое вы ожидали, похоже на осциллограф. Это будет иметь гораздо больше точек данных вдоль оси X, а не только одну на шаг. Таким образом, вы действительно можете увидеть шаги. Если вы хотите воспроизвести изображение с помощью своего кода, вы можете отправлять текущее значение a
чаще на каждой итерации цикла for (например, 20-кратный цикл отправки значения и задержка около 10 мс). .
- Как разделить входящую строку?
- Управление скоростью вентилятора с помощью библиотеки Arduino PID
- Какова максимальная длина провода для последовательной связи между двумя Arduino?
- Последовательная связь между двумя Arduino (запрос и получение)
- Не нашел датчик отпечатков пальцев :( Arduino Mega 2560 Adafruit Fingerprint Sensor
- Реализация Dshot на Arduino (протокол ESC)
- Модуль SIM808: команда определения местоположения GSM (AT+CIPGSMLOC=1,1) дает неверное значение после выполнения команды отправки сообщения (AT+CMGS=+91xxxxxxxx)
- Как правильно получить MIDI с Arduino, с 6n138?
Посмотрите на результат вашего скетча на последовательном мониторе, а не на плоттере. Должно сразу стать ясно, что происходит., @Edgar Bonet