#include <Arduino.h>
#include <string>
#define LED_PIN_1 2
#define LED_PIN_2 39
#define BUTTON_PIN_1 16
#define BUTTON_PIN_2 18
// буффер для приема сообщений
std::string message = "";
// индикатор включения светодиода
bool light_on = false;
// Получаем значение мощности из серийного порта
int getPower();
/*
* @brief управляем светодиодом
* @param power: Яркость светодиода
* @param ledPin: Нога, к которой подключен светодиод
* @param buttonPin: Нога, к которой подключена кнопка
*/
void ledControl(int power, int ledPin, int buttonPin);
void setup() {
pinMode(LED_PIN_1, OUTPUT);
pinMode(LED_PIN_2, OUTPUT);
Serial.begin(115200);
}
void loop() {
ledControl(getPower(), LED_PIN_1, BUTTON_PIN_1);
ledControl(getPower(), LED_PIN_2, BUTTON_PIN_2);
}
// Получаем значение мощности из серийного порта
int getPower()
{
static int power = 0;
// читаем данные из серийного порта
if (Serial.available() > 0)
{
message = "";
while(Serial.available() > 0)
{
message += std::string(1, char(Serial.read()));
delay(500);
}
power = std::stoi(message);
Serial.print("Recieved: power = ");
Serial.println(power);
}
return power;
}
// управляем светодиодом
void ledControl(int power, int ledPin, int buttonPin)
{
if(digitalRead(buttonPin) == HIGH)
{
light_on = true;
}
if(light_on == true)
{
light_on = false;
analogWrite(ledPin, power);
delay(1000);
}
else{
analogWrite(ledPin, 0);
}
}