Тема: Что не так
Купил фридуину. Сижу изучаю.
Опыт программирования никакой. Но очень охота научиться.
Написал вот такой скетч
// переменные и порты
int led10 = 10;
int led11 = 11;
int pot = 0;
int button = 2;
int v;// время мигания - регулирутся переменником
int b;// состояние кнопки
int s;
// установки
void setup()
{
pinMode(led10, OUTPUT);
pinMode(led11, OUTPUT);
pinMode(pot, INPUT);
pinMode(button, INPUT);
}
// работаем
void loop()
{
digitalWrite(led10, LOW); //тушим светодиоды
digitalWrite(led11, LOW); //тушим светодиоды
b = digitalRead(button);// читаем состояние кнопки
if (b == HIGH) // если кнопка не нажата
{
for(int shim = 0; shim <=255; shim +=5)
{
analogWrite(led11, shim);
delay(30);
}
for(int shim = 255; shim >=0; shim -=5)
{
analogWrite(led11, shim);
delay(30);
}
for(int shim10 = 0; shim10 <=255; shim10 +=5)
{
analogWrite(led10, shim10);
delay(30);
}
for(int shim10 = 255; shim10 >=0; shim10 -=5)
{
analogWrite(led10, shim10);
delay(30);
}
}
else // иначе
{
for(int j = 0; j <= 15; j++) // цикл
{
v = analogRead(pot); //мигаем и меняем частоту
v /= 4;
digitalWrite(led10, HIGH);
digitalWrite(led11, LOW);
delay(v);
digitalWrite(led10, LOW);
digitalWrite(led11, HIGH);
delay(v);
}
}
}
Вроде все работает но есть одно но
Нажатие на кнопку воспринимается только при завершении цикла
for(int shim10 = 0; shim10 <=255; shim10 +=5)
{
analogWrite(led10, shim10);
delay(30);
}
for(int shim10 = 255; shim10 >=0; shim10 -=5)
{
analogWrite(led10, shim10);
delay(30);
}
а хотелось чтобы это происходило всегда.
И второй вопрос как сделать чтобы при нажатии кнопки 1 раз выполнялось какое либо действие - например мигал светодиод, а если еще раз нажать - то дркгое действие - например другой светодиод.