Ви не увійшли.
Сторінки 1
Wiper, привет, я тоже новичок в ардуино!
посмотрите на свой код, он ведь реально непонятный,
а раз плохо читается то и проблему не увидите
Добрый день. Вы имеете ввиду то, как расположены операторы в коде?
Я пытался расставлять так, как предлагает программа.
Если можете покажите пример как удобно и я переделаю.
Спасибо!
выносите выключение светодиодов в таймер, по сути отдельный поток, и делайте обработку условными семафорами ( 1 - нужно включать 1 уровень, и т.д. 4 - выключать плавно, 0 - ничего не делать )
Я новичок в ардуино! Как это правильно сделать?
Проблема простая,при снижении напряжения светодиод начинает "мерцать" по тому что ему мало напряжения и это особенность полупроводником.Проэксперементируйте саме.Удачи
Чем это можно компенсировать или как переделать?
Вот сам код.
#define LED1 3 // 1 канал светодиода, подключен к 3 пину ARDUINO
#define LED2 5 // 2 канал светодиода, подключен к 5 пину ARDUINO
#define LED3 6 // 3 канал светодиода, подключен к 6 пину ARDUINO
#define LEDon 13 // Светодиодный индикатор на 13 пине, включается когда срабатывает датчик движения
#define DayNight 500 // Парог срабатывания датчика освещенности
#define timeON 3 // Скорость плавного включения светодиодов
#define timeOFF 27 // Скорость плавного выключения светодиодов
#define delayON 120000 // Время задержки на выключение, если нет сигнала с датчика движения
int Move = A0; // Датчик движения, подключен к пину A0 на ARDUINO
int Foto = A1; // Датчик освещенности, подключен к пину A1 на ARDUINO
int i = 0;
int on = 0;
int off = 1;
unsigned long timeroff;
int L = 0;
int N = 0;
void setup() {
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LEDon, OUTPUT);
pinMode(Move, INPUT);
pinMode(Foto, INPUT);
}
void loop() {
int val1=digitalRead(Move);
delay(10);
int val2=analogRead(Foto);
if (val1==1) {
digitalWrite(LEDon, HIGH);
}
else if (val1==0) {
digitalWrite(LEDon, LOW);
}
if (val1==1&&on==0&&L==1) {
for (i = i; i < 256; i++) {
analogWrite(LED1, i);
analogWrite(LED2, i);
analogWrite(LED3, i);
delay(timeON);
}
on=1;off=0;
L=0;
N=1;
}
if (val2<200 && N==0) {
analogWrite(LED1, 1);
delay(150);
}
if (val2>300 && N==0) {
analogWrite(LED1, 0);
delay(150);
}
if (val1==1&&on==0&&L==0&&val2<800) {
for (i = 0; i < 256; i++) {
analogWrite(LED1, i);
delay(timeON);
if (i==255) {
for (i = 0; i < 256; i++) {
analogWrite(LED2, i);
delay(timeON);
if (i==255) {
for (i = 0; i < 256; i++) {
analogWrite(LED3, i);
delay(timeON);}
}
}
}
}
on=1;off=0;N=1;}
else if (val1==1&&on==1) {
off=0;timeroff=0;
}
else if (val1==0&&val2<800&&timeroff==0) {
timeroff=millis();
}
else if (val1==0&&off==0&&millis()-timeroff>delayON) {
/* digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
delay(10);*/
for (i = 255; i >= 0; i--) {
analogWrite(LED1, i);
analogWrite(LED2, i);
analogWrite(LED3, i);
delay(timeOFF);
int val1=digitalRead(Move);
int val2=analogRead(Foto);
N=0;
if (val1==1) {
digitalWrite(LEDon, HIGH);
}
else if (val1==0) {
digitalWrite(LEDon, LOW);
}
if(digitalRead(Move)==HIGH && val2<800) {
L=1;
break;
}
}
off=1;on=0;timeroff=0;
}
}
Код рабочий, но не получается добиться нужного эффекта!
А именно имеется 3 канала, которые должны плавно зажигаться
друг за другом и спустя 2 минуты плавно затухать, но вместе.
Зажигаются нормально, а вот затухают почему-то с мерцанием!
В чем может быть проблема?
Я в этом деле новичек, так что сильно не ругайтесь.
Сторінки 1