Все те же светодиоды :(
- Войдите на сайт для отправки комментариев
Ср, 28/02/2018 - 11:36
Прошу помощи. Я новичек в программирование и для меня все это очень тяжело дается.
В основе идея имитации запуска ртутной лампы с бракованным пускателем. Когда она запускается и мигает перед тем как загореться окончательно. Имитировать данный эффект должны три светодиода по нажатию кнопки. Первый шаг - горит один светодиод, второй шаг - рандомное мигание 3-х светодиодов, потом имитация сломаной лампы. рандом работает, а имитация переходит в бесконечное мигае светодиодов.
int j=0;
int Up_LedPin = 0;
int Down_LedPin = 1;
int Right_LedPin = 2;
int ButPin = 4;
int flag = 0;
int reg = 0;
void setup()
{
pinMode(Up_LedPin, OUTPUT);
pinMode(Down_LedPin, OUTPUT);
pinMode(Right_LedPin, OUTPUT);
pinMode(ButPin, INPUT);
}
void loop()
{
if(digitalRead(ButPin) == HIGH && flag == 0)
{ delay(100);
reg ++;
flag = 1;
if(reg>1)
{
reg=0;
}
}
if(digitalRead(ButPin) == LOW && flag == 1)
{ delay(100);
flag = 0;
j=0;
}
//------------------------------- 1 REG ------------------------------
if(reg ==0)
{
digitalWrite(Up_LedPin, LOW);
digitalWrite(Down_LedPin, LOW);
digitalWrite(Right_LedPin, HIGH);
}
//------------------------------- 2 REG ------------------------------
if(reg == 1)
{
while (j<50)
{
digitalWrite (random (0,3), HIGH);
delay (random (5, 10)); //тут светодиады рандомно мигают
digitalWrite (random (0,3), LOW);
delay (random (3, 8));
j++;
} //тут должна быть имитация сломанной лампы
digitalWrite(Up_LedPin, HIGH);
digitalWrite(Down_LedPin, HIGH);
digitalWrite(Right_LedPin, HIGH);
delay(10);
digitalWrite(Up_LedPin, LOW);
digitalWrite(Down_LedPin, LOW);
digitalWrite(Right_LedPin, LOW);
delay(100);
digitalWrite(Up_LedPin, HIGH);
digitalWrite(Down_LedPin, HIGH);
digitalWrite(Right_LedPin, HIGH);
delay(20);
digitalWrite(Up_LedPin, LOW);
digitalWrite(Down_LedPin, LOW);
digitalWrite(Right_LedPin, LOW);
delay(50);
digitalWrite(Up_LedPin, HIGH);
digitalWrite(Down_LedPin, HIGH);
digitalWrite(Right_LedPin, HIGH);
delay(100);
digitalWrite(Up_LedPin, LOW);
digitalWrite(Down_LedPin, LOW);
digitalWrite(Right_LedPin, LOW);
delay(20);
digitalWrite(Up_LedPin, HIGH);
digitalWrite(Down_LedPin, HIGH);
digitalWrite(Right_LedPin, HIGH);
}
Спасибо, кончено, за информацию, только Вы забыли написать в чём именно
Ах да) простите. Проблемма в том, что имитация не работает. в последнем шаге после рандома светодиоды переходят в циклическое мерцание. а по идее должны помигать с разной задержкой как в сломанной лампе и начать гореть пока их не выключить нажатием кнопки.
IvGor, добавляешь переменную boolean lampOn = false;
if (reg == 1) { if (!lampOn) { while (j < 50) { digitalWrite (random (0, 3), HIGH); delay (random (5, 10)); //тут светодиады рандомно мигают digitalWrite (random (0, 3), LOW); delay (random (3, 8)); j++; } //тут должна быть имитация сломанной лампы digitalWrite(Up_LedPin, HIGH); digitalWrite(Down_LedPin, HIGH); digitalWrite(Right_LedPin, HIGH); delay(10); digitalWrite(Up_LedPin, LOW); digitalWrite(Down_LedPin, LOW); digitalWrite(Right_LedPin, LOW); delay(100); digitalWrite(Up_LedPin, HIGH); digitalWrite(Down_LedPin, HIGH); digitalWrite(Right_LedPin, HIGH); delay(20); digitalWrite(Up_LedPin, LOW); digitalWrite(Down_LedPin, LOW); digitalWrite(Right_LedPin, LOW); delay(50); digitalWrite(Up_LedPin, HIGH); digitalWrite(Down_LedPin, HIGH); digitalWrite(Right_LedPin, HIGH); delay(100); digitalWrite(Up_LedPin, LOW); digitalWrite(Down_LedPin, LOW); digitalWrite(Right_LedPin, LOW); delay(20); digitalWrite(Up_LedPin, HIGH); digitalWrite(Down_LedPin, HIGH); digitalWrite(Right_LedPin, HIGH); lampOn = true; } }Так, лампы загорелись в конце, после нажатия кнопки снова входит в первый режим, но на этом стопорится.
До введения lampOn можно было при каждом нажатии менать режим, пока рука не отсохнет))
int j=0; int Up_LedPin = 0; int Down_LedPin = 1; int Right_LedPin = 2; int ButPin = 4; int flag = 0; int reg = 0; boolean lampOn = false; void setup() { pinMode(Up_LedPin, OUTPUT); pinMode(Down_LedPin, OUTPUT); pinMode(Right_LedPin, OUTPUT); pinMode(ButPin, INPUT); } void loop() { if(digitalRead(ButPin) == HIGH && flag == 0) { delay(100); reg ++; flag = 1; if(reg>1) { reg=0; } } if(digitalRead(ButPin) == LOW && flag == 1) { delay(100); flag = 0; j=0; } //------------------------------- 1 REG ------------------------------ if(reg ==0) { digitalWrite(Up_LedPin, LOW); digitalWrite(Down_LedPin, LOW); digitalWrite(Right_LedPin, HIGH); } //------------------------------- 2 REG ------------------------------ if(reg == 1) { if (!lampOn) { while (j<50) { digitalWrite (random (0,3), HIGH); delay (random (5, 10)); digitalWrite (random (0,3), LOW); delay (random (3, 8)); j++; } digitalWrite(Up_LedPin, HIGH); digitalWrite(Down_LedPin, HIGH); digitalWrite(Right_LedPin, HIGH); delay(10); digitalWrite(Up_LedPin, LOW); digitalWrite(Down_LedPin, LOW); digitalWrite(Right_LedPin, LOW); delay(100); digitalWrite(Up_LedPin, HIGH); digitalWrite(Down_LedPin, HIGH); digitalWrite(Right_LedPin, HIGH); delay(20); digitalWrite(Up_LedPin, LOW); digitalWrite(Down_LedPin, LOW); digitalWrite(Right_LedPin, LOW); delay(50); digitalWrite(Up_LedPin, HIGH); digitalWrite(Down_LedPin, HIGH); digitalWrite(Right_LedPin, HIGH); delay(100); digitalWrite(Up_LedPin, LOW); digitalWrite(Down_LedPin, LOW); digitalWrite(Right_LedPin, LOW); delay(20); digitalWrite(Up_LedPin, HIGH); digitalWrite(Down_LedPin, HIGH); digitalWrite(Right_LedPin, HIGH); lampOn = true; } } }IvGor, ну сброс lampOn в false уже сам догадайся куда вставить.
int j=0; int Up_LedPin = 0; int Down_LedPin = 1; int Right_LedPin = 2; int ButPin = 4; int flag = 0; int reg = 0; boolean lampOn = false; void setup() { pinMode(Up_LedPin, OUTPUT); pinMode(Down_LedPin, OUTPUT); pinMode(Right_LedPin, OUTPUT); pinMode(ButPin, INPUT); } void loop() { if(digitalRead(ButPin) == HIGH && flag == 0) { delay(100); reg ++; flag = 1; lampOn = false; if(reg>1) { reg=0; } } if(digitalRead(ButPin) == LOW && flag == 1) { delay(100); flag = 0; j=0; } //------------------------------- 1 REG ------------------------------ if(reg ==0) { digitalWrite(Up_LedPin, LOW); digitalWrite(Down_LedPin, LOW); digitalWrite(Right_LedPin, HIGH); } //------------------------------- 2 REG ------------------------------ if(reg == 1) { if (!lampOn) { while (j<50) { digitalWrite (random (0,3), HIGH); delay (random (5, 10)); digitalWrite (random (0,3), LOW); delay (random (3, 8)); j++; } digitalWrite(Up_LedPin, HIGH); digitalWrite(Down_LedPin, HIGH); digitalWrite(Right_LedPin, HIGH); delay(10); digitalWrite(Up_LedPin, LOW); digitalWrite(Down_LedPin, LOW); digitalWrite(Right_LedPin, LOW); delay(100); digitalWrite(Up_LedPin, HIGH); digitalWrite(Down_LedPin, HIGH); digitalWrite(Right_LedPin, HIGH); delay(20); digitalWrite(Up_LedPin, LOW); digitalWrite(Down_LedPin, LOW); digitalWrite(Right_LedPin, LOW); delay(50); digitalWrite(Up_LedPin, HIGH); digitalWrite(Down_LedPin, HIGH); digitalWrite(Right_LedPin, HIGH); delay(100); digitalWrite(Up_LedPin, LOW); digitalWrite(Down_LedPin, LOW); digitalWrite(Right_LedPin, LOW); delay(20); digitalWrite(Up_LedPin, HIGH); digitalWrite(Down_LedPin, HIGH); digitalWrite(Right_LedPin, HIGH); lampOn = true; } } }Все заработало! Огромное спасибо!!!! тему можно закрыть.
// до лупа int i=0; long t=0; //в лупе // рандомное мигание if( i<=10 && millis()-t>random(10,500)) { t=millis(); int r=random (0,2); digitalWrite(Up_LedPin, r); digitalWrite(Down_LedPin, r); digitalWrite(Right_LedPin, r); i++; } // постоянное включение после миганий if( i>10) { digitalWrite(Up_LedPin, 1); digitalWrite(Down_LedPin, 1); digitalWrite(Right_LedPin, 1); }может так интереснее? - больше рандомности
и да, рандом а ардуины тоже кривой - он попросту НЕ рандом
и да, рандом а ардуины тоже кривой - он попросту НЕ рандом
Опять тестикулы танцевать мешают? Да, ампутируйте уже их нахрен!
рестантом перезапускал - результат одинаков...
Ну, вообще-то это всегда и везде так. Чтобы результаты были разными, нужно randomSeed использовать. Но Вам это ни к чему - в других двадцати языках всё и так замечательно.
P.S. Мои просьбы:
1. Опубликовать список из двадцати языков, которые Вы знаете на уровне выше университетского
2. Объяснить, почему Вы не используете Паскаль для программирования Ардуино
остаются в силе. Может, снизойдёте?
P.S. Мои просьбы:
1. Опубликовать список из двадцати языков, которые Вы знаете на уровне выше университетского
2. Объяснить, почему Вы не используете Паскаль для программирования Ардуино
остаются в силе. Может, снизойдёте?
От прицепился, противный. Может некогда.))))
От прицепился, противный. Может некогда.))))
Да, я ж ничо. Не требую типа, а покорнейше прошу :)