Тед
Чт 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 требуется в качестве левого операнда назначения
Эта программа имеет генератор и мигающий светодиод.
Как изменить его, чтобы получить сигнал 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);
DigitalWrite (PB0, PWM);
Тед
Пт 10 августа 2018 г. 1:10
Это было мое предположение, я не знаю правильной команды для этого., Следует отправить PWM на этот PIN -код, однако это делается в строке № 4, поэтому я постоянно на PB0 у меня есть PWM.
Я ищу функцию переключения для PIN.
Я ищу функцию переключения для 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
Есть посты, которые вы можете найти здесь, которые говорят об этом:
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).
Извините, я должен начать с этого.
Он работает, я использовал мигающий светодиод, чтобы продемонстрировать проблему простым способом, но мое приложение, светодиод включен, когда нажата кнопка, прикрепленная к другому выводу (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
}