Я сделал схему, включающую 3 строки светодиодов. Предполагается, что изначально они должны светиться с низкой интенсивностью.Светодиодные струны, прикрепленные к Arduino, запрограммированные на более яркий свет один за другим, перестают работать после 4 циклов.
Теперь, когда штырь 2 на Arduino переходит на HIGH на мгновение, светодиодные струны светятся один за другим, а затем останавливаются. И, если контакт 2 поддерживается HIGH, переход должен продолжаться до тех пор, пока контакт 2 HIGH.
Проблема в том, что если я делаю вывод 2 HIGH постоянно с помощью кнопки, переход происходит 4 раза, а затем останавливается. После этого переход не происходит, даже если я снова сделаю вывод 2 HIGH через некоторое время.
код приведен ниже:
const int pin1 = 9;
const int pin2 = 10;
const int pin3 = 11;
const int button = 2;
int val = 0;
//int brightness = 0;
void setup(){
Serial.begin(9600);
pinMode(pin1, OUTPUT);
pinMode(pin2, OUTPUT);
pinMode(pin3, OUTPUT);
pinMode(button, INPUT);
}
void loop(){
while(true)
{
val = digitalRead(button);
if(val == HIGH)
{
if(Serial.available())
{
long int brightness = Serial.read();
analogWrite(pin1, 255);
delay(1000);
analogWrite(pin2, 255);
delay(1000);
analogWrite(pin3, 255);
delay(1000);
analogWrite(pin1, brightness);
analogWrite(pin2, brightness);
analogWrite(pin3, brightness);
delay(1000);
}
}
}
}
Я не уверен, я полностью понимаю, что вы пытаетесь сделать, но я могу сказать вам, что 'в то время (правда)' петли полностью бесполезен, поскольку функция цикла уже является такой петлей. Также Serial.read возвращает int, а не long int. Я бы предположил, что ваша проблема заключается в последовательном общении. Можете ли вы описать, что вы подразумеваете под «а затем остановитесь» и «переход должен продолжаться» (значение яркости перехода низкой яркости перехода завершено, а затем?). Может быть, в последовательном буфере недостаточно или слишком много данных? – Thomas
См. ... Что мне нужно сделать, это сделать 3 концентрических круга светодиодных струн. Существует кнопка. Первоначально все светодиоды должны светиться с интенсивностью 50%. Когда нажата кнопка, самый внутренний круг светодиодов должен светиться со 100% интенсивностью, затем второй круг должен делать то же самое, а затем самый внешний круг и, наконец, все светодиоды должны снова ослабевать до 50% интенсивности. Кроме того, если кнопка удерживается нажатой, переход, который является радиально наружным увеличением интенсивности светодиодов, должен повторяться до тех пор, пока кнопка не будет нажата. – CordlessBrain
Проблема, с которой я сталкиваюсь, заключается в том, что если я нажимаю кнопку, происходит переход. Это работает ровно 4 раза, и после этого интенсивность светодиодов уменьшается примерно до 25%, и дальнейшее переключение кнопки не влияет. – CordlessBrain