[Решено] Управление кнопками ШИМ

Тед
Ср 13 июня 2018 г., 21:35
Привет
Я пытаюсь управлять обязанностью PWM по кнопкам, но у меня нет импульсов на PA3, если эта линия не отключена и не содержит цикла.
Timer2.attachInterrupt(0, Tim2_ISR);

Стивестронг
Чт 14 июня 2018 г., 7:35 утра
Не смешивайте pwmtimer2 с Timer2, используйте только один из них.
Как я уже говорил, нет необходимости в экземпляре pwmtimer2.

Эдогальдо
Чт 14 июня 2018 г. 8:00 утра
В контексте ШИМ Timer2.setCompare(TIMER_CH4, i);

Тед
Чт 14 июня 2018 г. 10:08
Спасибо Эдогальдо.
Одна кнопка работает «PB5», PB3 не.

Эдогальдо
Чт 14 июня 2018 г. 10:26
Как проводятся кнопки?
Это одинаково для обеих кнопок?

Тед
Чт 14 июня 2018 г., 10:47
Отдельные две кнопки, я вижу, что напряжение на штифте падает до 0 В, когда я нажимал кнопку, но ничего не происходит с шириной импульсов

Эдогальдо
Чт 14 июня 2018 г. 11:10
Являются ли кнопки, подключенные между штифтом и GND или между PIN и VCC?
В первом случае вы должны изменить свой код настройка режима PINS на input_pullup (по умолчанию высокий..

Тед
Чт 14 июня 2018 г., 11:49
Между PIN и VCC

Тед
Чт 14 июня 2018 12:16
Я перешел на PB6 и работает. Теперь мне нужно добавить серийный начинающий 9600 и печатать Ln "I"

Тед
Чт 14 июня 2018 12:32
Серийный монитор работает, но ширина меняется на быстрое, поэтому трудно настроить указанное число.
Может быть уменьшен в 10 раз ?

Другой вопрос.
В первом коде есть 2 канала, как получить второй канал (не регулируемый) в вашей версии ?

Тед
Чт 14 июня 2018 12:45
Может быть, "задержка (100);" где-то ?
volatile int i = 128; //initializing a integer for incrementing and decrementing duty ratio. void setup() { pinMode(PB6, INPUT_PULLDOWN);// sets the pin0 as output pinMode(PB5, INPUT_PULLDOWN);// sets the pin1 as output pinMode(PA3, PWM); analogWrite(PA3, i); Serial.begin(9600); } // Serial.begin(9600); //Serial.println(i); void loop() { if (digitalRead(PB6) == HIGH) { if (i < 255) { i++;//if pin PB3 is pressed and the duty ratio value is less than 255 analogWrite(PA3, i); // analogWrite values from 0 to 255 delay(30); } } if (digitalRead(PB5) == HIGH) { if (i > 0) { i--;// if pin PB5 is pressed and the duty ratio value is greater than 0 analogWrite(PA3, i); // analogWrite values from 0 to 255 delay(30); } } Serial.println(i); }

Эдогальдо
Чт 14 июня 2018 13:28
Как насчет печати только тогда, когда ты изменишь я?!

Тед
Чт 14 июня 2018 г. 14:10
Спасибо за ваш вклад.
Это будет в порядке, я больше беспокоюсь о втором канале.

Тед
Чт 14 июня 2018 г. 18:35
Спасибо Эдогальдо
Я сделал это, все работает так, как мне нужно, кроме скорости, мне нужно уменьшить его, потому что при нажатии кнопок трудно регулировать ширину с точностью одного импульса.

fpistm
Чт 14 июня 2018 г., 19:43
Может быть.

Тед
Чт 14 июня 2018 11:20
Выход - это что -то новое для меня, Google мало что говорит об этом, можете ли вы дать мне больше информации ?
Я думал использовать другой таймер с более низкой частотой 10 раза для управления регуляцией. Мне нужно контролировать около +/_ 10% от ширины

Тед
Пт 15 июня 2018 г., 2:39
Я сделал это, задержка (300); Вместо этого задержка (30);
Спасибо, ребята, за помощь.

Тед
Пт 15 июня 2018 г., 7:50 утра
Некоторые улучшения.
Как переключиться с задержки с 300 на 30, когда кнопка нажимается дольше, чем 2 секунды ?