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

Vasit
Offline
Зарегистрирован: 24.01.2019

Здравствуйте, нужна помощь по проекту на ардуино. Устройство: одноканальный генератор. Использовал библиотеку 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");
}

 

ЕвгенийП
ЕвгенийП аватар
Онлайн
Зарегистрирован: 25.05.2015

Vasit пишет:
использовал библиотеку Алекса Гайвера
Обратитесь на профильный форум - https://community.alexgyver.ru/  Там Вам скорее помогут.

gena321
Offline
Зарегистрирован: 19.01.2019
EXAMPLE 03: TURN ON LED WITH BUTTON AND KEEP IT ON
Nothing special but this time the led stays on until the button is pressed again.

//Example 03:  Turn on LED with button and keep it on

const int LED = 13;
const int BUTTON = 7;

int val = 0;
int old_val = 0;
int state = 0;

void setup () {

pinMode(LED,OUTPUT);
pinMode(BUTTON, INPUT);
}

void loop (){

val = digitalRead(BUTTON);

if( val == HIGH && old_val == LOW) {
state = 1-state;
delay (10);
}

old_val = val;

if ( state == 1)
digitalWrite(LED,HIGH);
else
digitalWrite(LED, LOW);
}

https://www.youtube.com/watch?v=7qAQ7qRaQ88

Vasit
Offline
Зарегистрирован: 24.01.2019

Это у меня получалось. Мне именно нужно, что бы при включении он еще и мигал

 

gena321
Offline
Зарегистрирован: 19.01.2019

Это вместо строки #31

 


  digitalWrite(PC13, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);              // wait for a second
  digitalWrite(PC13, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);  

очень хорошие уроки 

https://www.youtube.com/watch?v=8mbyebZwHFc

 

Marik86
Offline
Зарегистрирован: 26.01.2019

я смотрел эти уроки, ну в целом понятнее если литературу прочесть, тут просто кому как