Настройка миганием светодиода

Vasit

✩✩✩✩✩✩✩
24 Янв 2019
1
0
Здравствуйте, нужна помощь по проекту . Устройство: одноканальный генератор. Использовал библиотеку Timerone. Управление сидит на одной кнопке(один клик-вкл, второй клик-выкл). Для управления использовал библиотеку Алекса Гайвера. Загвоздка в том, что каждые пол сек, сигнал снимаемый с ноги частоты, должен вкл/выкл. Я немогу управлять вкл/отключением сигнала. Только начал работу с ардуиной, так что за код извиняюсь. В коде осуществлено мигание светодиода на millis(). Оно работает постоянно, а мне нужно что бы только по нажатию кпопки

#define PIN 3
#define MODE_AM 2
#include "GyverButton.h"
#include <TimerOne.h>
GButton butt1(PIN);
byte mode = 0;
int led=13;
int ledState = HIGH;
long previousMillis = 0;
long interval=400;
void setup() {
Timer1.initialize(100);
Timer1.pwm(9, 51);
Serial.begin(9600);
pinMode(led, OUTPUT);
Timer1.stop();
}
void loop() {

butt1.tick();
if (butt1.isPress()) {
if (++mode >= MODE_AM) mode = 0;
switch (mode) {
case 0: task_0();
break;
case 1: task_1();
break;
}
}





//---------------------------------------------------------------------------------
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval)
{

previousMillis = currentMillis;


if (ledState == LOW)

ledState = HIGH;
else
ledState = LOW;


digitalWrite(led, ledState);
}

//-----------------------------------------------------------------------------------------

}
void task_0() {
Timer1.stop();
Serial.println("OFF");
digitalWrite(led, LOW);
long interval = 3000;
}
void task_1() {


long interval = 400;
Timer1.start();
Serial.println("ON");
}
 

Вложения

SergeySAS

★✩✩✩✩✩✩
20 Дек 2018
42
10
Москва
sustavov.org
а мигает 13 или 9?
И код после свича работает всегда, поэтому и моргает. А интервал не меняется т.к. нет понимания локальных/глобальных переменных. Уберите для начала в ваших тасках тип от переменной интервал - тогда она станет глобальной.
А дальше посмотрим