2013-08-13 2 views
1

У меня есть восемь светодиодов, которые я угасаю и провожу с помощью Arduino. Я контролирую каждый отдельно следующий код.Могу ли я отправлять одновременные (вместо последовательных) выходы Arduino?

for(int fade1=0;fade1<=255;fade1+=1){ 
    analogWrite(8,fade1); 
    delay(10); 
    } 
    for(int fade1=255;fade1>=0;fade1-=1){ 
    analogWrite(8,fade1); 
    delay(10); 
    } 

Я хочу, чтобы иметь возможность назначить отдельное время затухания и задержки в каждый из восьми отдельных штифтов, так что все восемь огней выцветания и одновременно, и цикл бесконечно. Тем не менее, я могу только заставить их запускаться последовательно с моей программой.

Я играл с различным размещением циклов for, циклов внутри циклов и т. Д., Но не может заставить его делать то, что я хочу. Любые идеи или примеры, на которые кто-то может мне называть?

ответ

1

Вместо 16 петель, свести их к двум:

for(int fade1=0;fade1<=255;fade1+=1){ 
    analogWrite(8,fade1); 
    analogWrite(9,fade1); 
    // etc. 
    delay(10); 
    } 
    for(int fade1=255;fade1>=0;fade1-=1){ 
    analogWrite(8,fade1); 
    analogWrite(9,fade1); 
    // etc. 
    delay(10); 
    } 

Вы не будете иметь возможность наблюдать разницу во времени с момента, когда порт 8 записывается, когда порт 9 написано. Этот код приведет к постепенному выгоранию светодиодов, но вы можете захотеть, чтобы они постепенно исчезали?

В этом случае вам нужно будет установить значение затухания для каждого светодиода в отдельности, так определяет вектор значений замирания с начальными значениями:

int fade[8] = {2, 0, 4,200,20,47,45,150}; 
    int dir[8] = {1,-1, 1, -1, 1,-1, 1, -1}; 

    loop() { 
     for (i = 0; i < 8, i++) 
     { 
     if ((fade[i] <= 0) || (fade[i] >= 255)) 
     { 
      dir[i] *= -1; 
     } else 
      fade[i] += dir[i]; 
     } 
     // + 8 for leds at ports 8 thru 15 
     analogWrite(i+8, fade[i]); 
     } 
     delay(10); 

    } 

Внимание, я не пробовал этот код, но он является хорошим началом на светодиодах, которые работают независимо друг от друга.

+0

Отлично! Это похоже на отличное начало для начала моих экспериментов и дает мне некоторые идеи для рандомизации некоторых ценностей ... – dwwilson66

1

Если вам нужен обширный список примеров, которые вы хотите просмотреть в моем блоге. Особенно в разделе removing flicker. У меня есть много примеров того, как можно сгладить 20 светодиодов независимо и с высокой частотой обновления.

+0

+1 для потрясающего блога! спасибо за ссылку. – dwwilson66

Смежные вопросы