Модулятор.
- Войдите на сайт для отправки комментариев
Пт, 21/08/2020 - 06:00
Здравствуйте
Есть красный и зеленый PB7, PA8 , как получить голубой на PB6 ?

HardwareTimer pwmtimer1(1);
HardwareTimer pwmtimer4(4);
int out1 = PB7; //T4CH2
int out2 = PA8; //T1CH1
int out3 = PB6;
void setup()
{
pinMode(out1, PWM); //T4CH2, 20 kHz
pinMode(out2, PWM); //T1CH1, 2kHz
pinMode(out3, PWM);
pwmtimer1.pause();
pwmtimer1.setPrescaleFactor(10);
pwmtimer1.setOverflow(3600);
pwmtimer1.setCompare(TIMER_CH1, 1800);
pwmtimer1.refresh();
pwmtimer1.resume();
pwmtimer4.pause();
pwmtimer4.setPrescaleFactor(1);
pwmtimer4.setOverflow(3600); // 20kHz
pwmtimer4.setCompare(TIMER_CH2, 1800);
pwmtimer4.refresh();
pwmtimer4.resume();
}
void loop() {
}
ловишь фронты на PB7 и отключаешь выход PA8 по заднему фронту, а по переднему - включаешь
Один транзистор и один элемент "&".
Ну и вопрос: а точно на PB6 есть ЦАП ?
void loop() { if ((digitalRead(PB7) == HIGH) && (digitalRead(PA8) == HIGH)) { //digitalWrite(PB6, 1); digitalWrite(out3, 1); } else { //digitalWrite(PB6, 0); digitalWrite(out3, 0); } }для точности процесса ловить лучше прерыванием видимо или один элемент &
void loop() { if ((digitalRead(PB7) == HIGH) && (digitalRead(PA8) == HIGH)) { //digitalWrite(PB6, 1); digitalWrite(out3, 1); } else { //digitalWrite(PB6, 0); digitalWrite(out3, 0); } }это щляпа полная, для реальной работы непригодно
как уже сказали выше - используйте прерывания. На первом таймере заведите два обработчика - по переполнению и по совпадению, в одном разрешайте второй таймер, в другом запрещайте
Так проще, возникнуть птьоблемы буду пробовать как подсказывают - сложнее