Ви не увійшли.
Всем привет. Решил тут сделать подобие грозового облака типа светильника. Решил пока не приедут материалы нужные опробовать свои силы в программировании диодов. Взял из своего набора 10 диодов, подключил каждый на свой разьем через резистор 220. вот фото.
дальше у меня есть вот такая программа.
int myPins[] = {4,5,6,7,8,9,10,11,12,13};
int pinsNum = 10;
int D = 0;
void setup() {
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
for (int j=0;j<=random(15,35);j++)
{
flash(myPins[random(0,11)]);
}
delay(4000);
}
void flash(int led1){
D = random(20, 120);
if (random(0,100)<50){
int led2 = myPins[random(0,pinsNum+1)];
digitalWrite(led1, HIGH); // turn the LED on (HIGH is the voltage level)
digitalWrite(led2, HIGH); // turn the LED on (HIGH is the voltage level)
delay(D);
digitalWrite(led1, LOW); // turn the LED off by making the voltage LOW
digitalWrite(led2, LOW); // turn the LED off by making the voltage LOW
delay(D);
}
else {
digitalWrite(led1, HIGH); // turn the LED on (HIGH is the voltage level)
delay(D);
digitalWrite(led1, LOW); // turn the LED off by making the voltage LOW
delay(D);
}
}
В итоге что у меня происходит. Я занес в массив свои пины, чтоб было проще немного. В конечном итоге запускается функция мигания в которой с некоторой вероятностью могут загореться сразу два диода. в общем красивое мигание получается, однако после нескольких проходов зависает и горит один и тот же диод. При изменении программы постоянно разные странные причины. Чем больше переменных добавляю чтоб облегчить управление программой тем больше странных багов. нифига не понимаю. может потому что у меня Arduino китайский и глючный? Помогите. вот такое в конечном итоге получается.
Остання редакція Blaze (2018-01-31 22:05:13)
Неактивний
Это может вырождаться последовательность генератора квазислучайных чисел. Поробуйте в конце цикла выполнять, например так: randomSeed(millis());
В конце какого именно цикла? И что это дает? Вообще когда я убрал переменные, а самое главное убрал массив пинов, то стало все просто великолепно и без залипаний. То есть получается что random не очень пашет с переменными а особенно с массивом. В общем все еще интересно что дает ваша команда.
Неактивний
Проблема решена. Если вдруг у вас будет подобная ошибка. У меня в массиве ровно 10 значений, но по ошибке в обращении к массиву поставил рандомное число (0,11) то есть будут числа от 0 до 10 включительно. А если начинать с нуля то у меня надо ставить 9 включительно. надеюсь поможет новичкам.
Неактивний