Ви не увійшли.
Vik300001, забейте на светодиоды
если есть желание сделать классную гирлянду - посмотрите на ленту
у меня была корпусирована (прозрачная трубка), но она немного дороже,
пример на ардуино:
http://www.getchip.net/posts/122-ehffek … tu-ws2812/
только обязательно смотрите без буквы b они высокоскоросные, проблем не оберетесь
лента позволит Вам сделать действительно уникальную гирлянду и она будет шикарна.
успехов!
Иной раз, взглянув на код, сразу же хочется его закрыть со словами "глаза б мои никогда этого не видели б!"((
но разговор идет не о этом коде, парень молодец, он сделал свою цяцьку
но если кто то захочет повторить, то будет думать что так и нада
а с другой стороны врядли кто то читает чужие темы )
Иной раз, взглянув на код, сразу же хочется его закрыть со словами "глаза б мои никогда этого не видели б!"((
"Так значит можешь, если захочешь!"
это просто отлично что TS разобрался. он молодец
но надеюсь новички никогда не увидят этот пост.
учится нужно не только на работающем коде, но и на "красивом".
Ваш пример очень хорош. тот факт что TS его проигнорировал, меня печалит, ибо следующая тема возможно будет - как избавится от дребезга.
add
в данном коде дребезга не будет ибо сразу идет на выполнение, но возможны случайные переходы на следующий алгоритм в процессе работы )
или как сделать что бы можно было переключить в середине выполнения (
"Так значит можешь, если захочешь!"
Разобрался..
Вот код на три режима
/*
Мигаем светодиодами на контактах со 2 по 9
*/
// Setup - этот блок выполняется лишь один раз, при запуске скетча
int del=200; // присваиваем переменной "del" значение 100, это будет в дальнейшем являться задержкой в 100 миллисекунд
int switchPin =10;
int val;
int state;
int c;
void setup()
{
// устанавливаем цыфровые выводы со 2 по 9 как выходы (далее мы рассмотрим как это сделать более простым способом)
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(switchPin, INPUT);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
}
// блок цикла - данный блок будет повторяться бесконечно, до тех пор пока вы не отключите питание
void loop()
{
state = digitalRead(switchPin);
if (state == HIGH && c == 0) // нажали кнопку
{
c = 1;
}
if (state == LOW && c == 1) // отпустили кнопку
{
val = ++val;
if (val == 3)
{
val = 0;
}
c = 0;
}
if (val == 0) // Мигание 1
{
digitalWrite(2, HIGH); // включить светодиод на контакте 2
delay(del); // выполнить задержку длительностью "del" ("del" как мы помним равна 100 миллисекунд)
digitalWrite(2, LOW); // выключить светодиод
digitalWrite(3, HIGH); // включить светодиод на контакте 3
delay(del); // выполнить задержку
digitalWrite(3, LOW); // выключить светодиод
digitalWrite(4, HIGH); // включить светодиод на контакте 4
delay(del); // выполнить задержку
digitalWrite(4, LOW); // выключить светодиод
digitalWrite(5, HIGH); // включить светодиод на контакте 5
delay(del); // выполнить задержку
digitalWrite(5, LOW); // выключить светодиод
digitalWrite(6, HIGH); // включить светодиод на контакте 6
delay(del); // выполнить задержку
digitalWrite(6, LOW); // выключить светодиод
digitalWrite(7, HIGH); // включить светодиод на контакте 7
delay(del); // выполнить задержку
digitalWrite(7, LOW); // выключить светодиод
digitalWrite(8, HIGH); // включить светодиод на контакте 8
delay(del); // выполнить задержку
digitalWrite(8, LOW); // выключить светодиод
digitalWrite(9, HIGH); // включить светодиод на контакте 9
delay(del); // выполнить задержку
digitalWrite(9, LOW); // выключить светодиод
digitalWrite(8, HIGH); // включить светодиод на контакте 8
delay(del); // выполнить задержку
digitalWrite(8, LOW); // выключить светодиод
digitalWrite(7, HIGH); // включить светодиод на контакте 7
delay(del); // выполнить задержку
digitalWrite(7, LOW); // выключить светодиод
digitalWrite(6, HIGH); // включить светодиод на контакте 6
delay(del); // выполнить задержку
digitalWrite(6, LOW); // выключить светодиод
digitalWrite(5, HIGH); // включить светодиод на контакте 5
delay(del); // выполнить задержку
digitalWrite(5, LOW); // выключить светодиод
digitalWrite(4, HIGH); // включить светодиод на контакте 4
delay(del); // выполнить задержку
digitalWrite(4, LOW); // выключить светодиод
digitalWrite(3, HIGH); // включить светодиод на контакте 3
delay(del); // выполнить задержку
digitalWrite(3, LOW); // выключить светодиод
}
if (val == 1) // Если мы кнопку 1 раз нажали и отпустили
{
digitalWrite(2, HIGH); // включить светодиод на контакте 2
delay(del); // выполнить задержку длительностью "del" ("del" как мы помним равна 100 миллисекунд)
digitalWrite(2, LOW); // выключить светодиод
digitalWrite(9, HIGH); // включить светодиод на контакте 3
delay(del); // выполнить задержку
digitalWrite(9, LOW); // выключить светодиод
digitalWrite(3, HIGH); // включить светодиод на контакте 4
delay(del); // выполнить задержку
digitalWrite(3, LOW); // выключить светодиод
digitalWrite(8, HIGH); // включить светодиод на контакте 5
delay(del); // выполнить задержку
digitalWrite(8, LOW); // выключить светодиод
digitalWrite(4, HIGH); // включить светодиод на контакте 6
delay(del); // выполнить задержку
digitalWrite(4, LOW); // выключить светодиод
digitalWrite(7, HIGH); // включить светодиод на контакте 7
delay(del); // выполнить задержку
digitalWrite(7, LOW); // выключить светодиод
digitalWrite(5, HIGH); // включить светодиод на контакте 7
delay(del); // выполнить задержку
digitalWrite(5, LOW); // выключить светодиод
digitalWrite(6, HIGH); // включить светодиод на контакте 7
delay(del); // выполнить задержку
digitalWrite(6, LOW); // выключить светодиод
}
if (val == 2) // Если мы кнопку 2 раз нажали и отпустили
{
digitalWrite(2, HIGH); // включить светодиод на контакте 2
digitalWrite(3, HIGH); // включить светодиод на контакте 3
digitalWrite(4, HIGH); // включить светодиод на контакте 4
digitalWrite(5, HIGH); // включить светодиод на контакте 5
digitalWrite(6, HIGH); // включить светодиод на контакте 5
digitalWrite(7, HIGH); // включить светодиод на контакте 5
digitalWrite(8, HIGH); // включить светодиод на контакте 6
digitalWrite(9, HIGH); // включить светодиод на контакте 7
delay(del); // выполнить задержку длительностью "del"
digitalWrite(2, LOW); // выключить светодиод на контакте 2
digitalWrite(3, LOW); // выключить светодиод на контакте 3
digitalWrite(4, LOW); // выключить светодиод на контакте 4
digitalWrite(5, LOW); // выключить светодиод на контакте 5
digitalWrite(6, LOW); // выключить светодиод на контакте 5
digitalWrite(7, LOW); // выключить светодиод на контакте 5
digitalWrite(8, LOW); // выключить светодиод на контакте 6
digitalWrite(9, LOW); // выключить светодиод на контакте 7
delay(del); // выполнить задержку длительностью "del"
}
}
Еще.
Кнопка как подключена? Резистор есть?
Да, есть резистор
Еще.
Кнопка как подключена? Резистор есть?
Green в теме
http://forum.arduino.ua/viewtopic.php?id=456
показал возможное ренение
void loop()
{
if (KeyExe())
{
val++;
if ( val > 2 ) val = 0;
}
if ( val == 0) // Мигание 1
{.
.
.
}
bool KeyExe()
{
static bool key_pressed;
static uint8_t debounce_timer;
if (key_pressed != !digitalRead(switchPin)) {
key_pressed = !key_pressed;
debounce_timer = DEBOUNCE_TIME;
}
else if (debounce_timer && !--debounce_timer && key_pressed)
return true;
return false;
}
для начала
а позже переделаете на кол. нажатий за время
Здравствуйте! Собрал из кусочков код новогодней гирлянды, светодиоды подключены к пинам 2-9, кнопка к 10.
Мерцание светодиодов должно меняться после нажатия кнопки, всего три режима. Но на самом деле работает только первый режим, программа на кнопку не реагирует. Прошу помощи у знающих людей...
/*
Мигаем светодиодами на контактах со 2 по 9
*/
// Setup - этот блок выполняется лишь один раз, при запуске скетча
int del=100; // присваиваем переменной "del" значение 100, это будет в дальнейшем являться задержкой в 100 миллисекунд
int switchPin =10;
int val;
int state;
int c;
void setup()
{
// устанавливаем цыфровые выводы со 2 по 9 как выходы (далее мы рассмотрим как это сделать более простым способом)
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(switchPin, INPUT);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
}
// блок цикла - данный блок будет повторяться бесконечно, до тех пор пока вы не отключите питание
void loop()
{
state = digitalRead(switchPin);
if (state == HIGH && c == 0) // нажали кнопку
{
c = 1;
}
if (state == LOW && c == 1) // отпустили кнопку
{
val = ++val;
if (val == 2)
{
val = 0;
}
c = 0;
}
if (val == 0) // Мигание 1
{
digitalWrite(2, HIGH); // включить светодиод на контакте 2
delay(del); // выполнить задержку длительностью "del" ("del" как мы помним равна 100 миллисекунд)
digitalWrite(2, LOW); // выключить светодиод
digitalWrite(3, HIGH); // включить светодиод на контакте 3
delay(del); // выполнить задержку
digitalWrite(3, LOW); // выключить светодиод
digitalWrite(4, HIGH); // включить светодиод на контакте 4
delay(del); // выполнить задержку
digitalWrite(4, LOW); // выключить светодиод
digitalWrite(5, HIGH); // включить светодиод на контакте 5
delay(del); // выполнить задержку
digitalWrite(5, LOW); // выключить светодиод
digitalWrite(6, HIGH); // включить светодиод на контакте 6
delay(del); // выполнить задержку
digitalWrite(6, LOW); // выключить светодиод
digitalWrite(7, HIGH); // включить светодиод на контакте 7
delay(del); // выполнить задержку
digitalWrite(7, LOW); // выключить светодиод
digitalWrite(8, HIGH); // включить светодиод на контакте 8
delay(del); // выполнить задержку
digitalWrite(8, LOW); // выключить светодиод
digitalWrite(9, HIGH); // включить светодиод на контакте 9
delay(del); // выполнить задержку
digitalWrite(9, LOW); // выключить светодиод
digitalWrite(8, HIGH); // включить светодиод на контакте 8
delay(del); // выполнить задержку
digitalWrite(8, LOW); // выключить светодиод
digitalWrite(7, HIGH); // включить светодиод на контакте 7
delay(del); // выполнить задержку
digitalWrite(7, LOW); // выключить светодиод
digitalWrite(6, HIGH); // включить светодиод на контакте 6
delay(del); // выполнить задержку
digitalWrite(6, LOW); // выключить светодиод
digitalWrite(5, HIGH); // включить светодиод на контакте 5
delay(del); // выполнить задержку
digitalWrite(5, LOW); // выключить светодиод
digitalWrite(4, HIGH); // включить светодиод на контакте 4
delay(del); // выполнить задержку
digitalWrite(4, LOW); // выключить светодиод
digitalWrite(3, HIGH); // включить светодиод на контакте 3
delay(del); // выполнить задержку
digitalWrite(3, LOW); // выключить светодиод
}
if (val == 1) // Если мы кнопку 1 раз нажали и отпустили
{
digitalWrite(2, HIGH); // включить светодиод на контакте 2
delay(del); // выполнить задержку длительностью "del" ("del" как мы помним равна 100 миллисекунд)
digitalWrite(2, LOW); // выключить светодиод
digitalWrite(5, HIGH); // включить светодиод на контакте 3
delay(del); // выполнить задержку
digitalWrite(5, LOW); // выключить светодиод
digitalWrite(3, HIGH); // включить светодиод на контакте 4
delay(del); // выполнить задержку
digitalWrite(3, LOW); // выключить светодиод
digitalWrite(6, HIGH); // включить светодиод на контакте 5
delay(del); // выполнить задержку
digitalWrite(6, LOW); // выключить светодиод
digitalWrite(4, HIGH); // включить светодиод на контакте 6
delay(del); // выполнить задержку
digitalWrite(4, LOW); // выключить светодиод
digitalWrite(7, HIGH); // включить светодиод на контакте 7
delay(del); // выполнить задержку
digitalWrite(7, LOW); // выключить светодиод
digitalWrite(5, HIGH); // включить светодиод на контакте 8
delay(del); // выполнить задержку
digitalWrite(5, LOW); // выключить светодиод
digitalWrite(8, HIGH); // включить светодиод на контакте 9
delay(del); // выполнить задержку
digitalWrite(8, LOW); // выключить светодиод
digitalWrite(6, HIGH); // включить светодиод на контакте 8
delay(del); // выполнить задержку
digitalWrite(6, LOW); // выключить светодиод
digitalWrite(9, HIGH); // включить светодиод на контакте 7
delay(del); // выполнить задержку
digitalWrite(9, LOW); // выключить светодиод
digitalWrite(7, HIGH); // включить светодиод на контакте 6
delay(del); // выполнить задержку
digitalWrite(7, LOW); // выключить светодиод
digitalWrite(8, HIGH); // включить светодиод на контакте 5
delay(del); // выполнить задержку
digitalWrite(8, LOW); // выключить светодиод
digitalWrite(9, HIGH); // включить светодиод на контакте 4
delay(del); // выполнить задержку
digitalWrite(9, LOW); // выключить светодиод
}
if (val == 2) // Если мы кнопку 2 раз нажали и отпустили
{
digitalWrite(2, HIGH); // включить светодиод на контакте 2
delay(del); // выполнить задержку длительностью "del" ("del" как мы помним равна 100 миллисекунд)
digitalWrite(2, LOW); // выключить светодиод
digitalWrite(4, HIGH); // включить светодиод на контакте 3
delay(del); // выполнить задержку
digitalWrite(4, LOW); // выключить светодиод
digitalWrite(6, HIGH); // включить светодиод на контакте 4
delay(del); // выполнить задержку
digitalWrite(6, LOW); // выключить светодиод
digitalWrite(8, HIGH); // включить светодиод на контакте 5
delay(del); // выполнить задержку
digitalWrite(8, LOW); // выключить светодиод
digitalWrite(9, HIGH); // включить светодиод на контакте 6
delay(del); // выполнить задержку
digitalWrite(9, LOW); // выключить светодиод
digitalWrite(7, HIGH); // включить светодиод на контакте 7
delay(del); // выполнить задержку
digitalWrite(7, LOW); // выключить светодиод
digitalWrite(4, HIGH); // включить светодиод на контакте 8
delay(del); // выполнить задержку
digitalWrite(5, LOW); // выключить светодиод
digitalWrite(3, HIGH); // включить светодиод на контакте 9
delay(del); // выполнить задержку
digitalWrite(3, LOW); // выключить светодиод
}
}