Генератор включен/выключен

Тед
Чт 09 августа 2018 г. 8:36 утра
Привет
Эта программа имеет генератор и мигающий светодиод.
Как изменить его, чтобы получить сигнал PWM на PB0, когда светодиод включен, и нет сигнала, когда светодиод выключен ?
Пока что у меня есть эта ошибка.

C: \ users \ hover \ appdata \ local \ temp \ arduino_modified_sketch_892346 \ blink.Ино: В функции 'void loop ()':

Blink: 34: Ошибка: LVALUE требуется в качестве левого операнда назначения

if (pb1 = 1)

^

Статус выхода 1
LVALUE требуется в качестве левого операнда назначения

HardwareTimer pwmtimer3(3); void setup() { // pinMode(PA7, PWM); pinMode(PB0, PWM); pwmtimer3.pause(); pwmtimer3.setPrescaleFactor(400); // Timer input clock Prescaler = 1 (= 72MHz input ?) pwmtimer3.setOverflow(100-1); // PWM Period width for 720kHz ? pwmtimer3.setCompare(TIMER_CH3, 50); // PWM High Pulse width is 50% duty (1:1) pwmtimer3.refresh(); pwmtimer3.resume(); // initialize digital pin PB1 as an output. pinMode(PB1, OUTPUT); } // the loop function runs over and over again forever void loop() { digitalWrite(PB1, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(PB1, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second if(PB1=HIGH) //error from this line { digitalWrite(PB0,PWM); //LED = 1; } else { digitalWrite(PB0, LOW); // LED = 0; } }

Zoomx
Чт 09 августа 2018 г., 9:29
if (PB1 == HIGH)

Тед
Четверг 09 августа 2018 г., 9:56 утра
Спасибо
Нет ошибок, но включение/выключение не работает

Zoomx
Четверг 09 августа 2018 13:10
Я не уверен, потому что у меня нет оборудования, но, возможно, void loop() { digitalWrite(PB1, HIGH); // turn the LED on (HIGH is the voltage level) pinMode(PB0, PWM); delay(1000); // wait for a second digitalWrite(PB1, LOW); // turn the LED off by making the voltage LOW digitalWrite(PB0, LOW); delay(1000); // wait for a second }

Тед
Чт 09 августа 2018 г., 16:52
ВКЛ/выключение не работает

Дэнниф
Четверг 09 августа 2018 г., 20:21
ВКЛ/выключение не работает Это предложение имеет огромное количество информации, чтобы помочь другим вам помочь.

Тед
Пт 10 августа 2018 12:10
= Предлагаемое выше решение не работает = не включает PB1 включенным и не выключает PB1

Рик Кимбалл
Пт 10 августа 2018 г. 12:50
... Как вы думаете, что это будет делать?

DigitalWrite (PB0, PWM);

Тед
Пт 10 августа 2018 г. 1:10
Это было мое предположение, я не знаю правильной команды для этого., Следует отправить PWM на этот PIN -код, однако это делается в строке № 4, поэтому я постоянно на PB0 у меня есть PWM.
Я ищу функцию переключения для PIN.

Рик Кимбалл
Пт 10 августа 2018 г. 1:17
Существует конкретный пример Maple Mini, который показывает, как использовать PWM и PWMWrite (), он называется Fadingonboard

Есть посты, которые вы можете найти здесь, которые говорят об этом:
https: // www.STM32duino.com/viewtopic.PHP?t = 634

Есть докды Maple Leaflabs:
http: // docs.Leaflabs.com/static.Leaflab ... писать.HTML

Тед
Пт 10 августа 2018 г., 2:38
Спасибо, Рик
Речь идет о частоте и рабочих циклах, а не о включении/выключении вывода вывода.

Рик Кимбалл
Пт 10 августа 2018 г., 3:16
// PB0 - using pwm + timer // PC13 - so i can see it toggling HardwareTimer pwmtimer3(3); void setup() { pinMode(PB0, PWM); pwmtimer3.pause(); pwmtimer3.setPrescaleFactor(72); // Timer input clock Prescaler = 1MHz 72MHz pwmtimer3.setOverflow(1000 - 1); // PWM Period width for 1kHz pwmtimer3.setCompare(TIMER_CH3, 500); // PWM High Pulse width is 50% duty (1:1) pwmtimer3.refresh(); pwmtimer3.resume(); // initialize led as output pinMode(PC13, OUTPUT); } int state=0; void loop() { state ^= 1; // toggle state digitalWrite(PC13, (state ? HIGH : LOW)); // toggle bluepill led if ( state ) { pwmtimer3.resume(); } else { pwmtimer3.pause(); } delay(100); // let the pwm run or stop for 100 ms }

Рик Кимбалл
Пт 10 августа 2018 г., 3:26 утра
Или вы можете использовать PwmWrite. Этот пример имитирует IR -сигнал 36 кГц, включаемый и выключен // PB0 - using pwm + timer // PC13 - so i can see it toggling HardwareTimer pwmtimer3(3); void setup() { pinMode(PB0, PWM); pwmtimer3.pause(); pwmtimer3.setPrescaleFactor(1000); // Timer input clock Prescaler = 72kHz pwmtimer3.setOverflow(2 - 1); // PWM Period width for /2 = 36kHz pwmtimer3.setCompare(TIMER_CH3,1); // PWM High Pulse width is 50% duty (0->1) pwmtimer3.refresh(); pwmtimer3.resume(); // initialize led PC13 as an output. pinMode(PC13, OUTPUT); } int state=0; void loop() { state ^= 1; // toggle state digitalWrite(PC13, (state ? HIGH : LOW)); // toggle bluepill led if ( state ) { pwmWrite(PB0,1); } else { pwmWrite(PB0,0); } delay(100); // let the pwm run or stop for 100 ms }

Тед
Пт 10 августа 2018 г. 3:39
Спасибо, Рик
Он работает, я использовал мигающий светодиод, чтобы продемонстрировать проблему простым способом, но мое приложение, светодиод включен, когда нажата кнопка, прикрепленная к другому выводу (PC13).
Извините, я должен начать с этого.

Тед
Пт 10 августа 2018 г., 3:51
Я пытаюсь использовать digitalRead(PC13 ); // toggle bluepill

Тед
Пт 10 августа 2018 г., 4:54
Спасибо, Рик
Проблема решена

// PB0 - using pwm + timer // PC13 - so i can see it toggling const int pushBtn=PC13; HardwareTimer pwmtimer3(3); void setup() { pinMode(PB0, PWM); pwmtimer3.pause(); pwmtimer3.setPrescaleFactor(72); // Timer input clock Prescaler = 1MHz 72MHz pwmtimer3.setOverflow(1000 - 1); // PWM Period width for 1kHz pwmtimer3.setCompare(TIMER_CH3, 500); // PWM High Pulse width is 50% duty (1:1) pwmtimer3.refresh(); pwmtimer3.resume(); // initialize led as output //pinMode(PC13, OUTPUT); // pinMode(PC13,INPUT); pinMode(pushBtn,INPUT); } int state=0; void loop() { // state ^= 1; // toggle state //digitalWrite(PC13, (state ? HIGH : LOW)); // toggle bluepill led //digitalRead(PC13, (state ? HIGH : LOW)); // digitalRead(PC13, state ); digitalRead(PC13); //if ( state ) //if(PC13==HIGH) /////////////////////////////// int btnValue=digitalRead(pushBtn); // Read the Button State Pressed or not if(btnValue==1) //////////////////////////////// { pwmtimer3.resume(); } else { pwmtimer3.pause(); } delay(100); // let the pwm run or stop for 100 ms }