Відповісти

Введіть повідомлення і натисніть Надіслати
Параметри

Назад

Огляд теми (нові повідомленні вгорі)

Watchdog
2019-12-24 13:56:46
Watchdog пише:

Простите, наоборот. В предыдущем случае все будут гореть а один тухнуть. big_smile  А так все будут тухнуть, кроме одного! lol

ISR(YOUR_TIMER_VECTOR)
}
   digitalWrite(ledpin[ledidx], EXTINGUISH);
   ledidx = (ledidx + 1) % LEDPIN_DIMENTION;
   digitalWrite(ledpin[ledidx], HIGHLIGTH);
}
Watchdog
2019-12-24 13:49:09
ISR(YOUR_TIMER_VECTOR)
{
   digitalWrite(ledpin[ledidx], HIGHLIGTH);
   ledidx = (ledidx + 1) % LEDPIN_DIMENTION;
   digitalWrite(ledpin[ledidx], EXTINGUISH);
}
Green
2019-12-24 07:41:40

Создаёте массив led-пинов, индекс для этого массива, настраиваете таймер на 1мс период, в прерывании таймера через нужное время тухните по текущему индексу, зажигаете по следующему.
Напомнило. Где ви сохните бельё?

Avazart
2019-12-23 22:33:35
Seryoga пише:

Подскажите как сделать прерывание по таймеру так чтобы диоды загорались и тухли по очередно c интервалам 0,8сек

Что конкретно Вы имеете ввиду? Т.е сначала горит 1-й светодиод потом 1-й и 2-й потом 1-й, 2-й, 3-й итд так?

Kaka
2019-12-23 19:09:13
Seryoga пише:

чтобы диоды загорались и тухли

Нельзя так делать. Протухнут - вони не оберёшься.

Seryoga
2019-12-23 18:53:01

Подскажите как сделать прерывание по таймеру так чтобы диоды загорались и тухли по очередно c интервалам 0,8сек

int led1 = 2;
int led2 = 3;
int led3 = 4;
int led4 = 5;
int led5 = 6;
int led6 = 7;

volatile unsigned long int timerLED1;       
                                            
unsigned long int timePreview = 0;  
bool LEDOn = 0; 
 
ISR (TIMER0_COMPA_vect) 
{
    timerLED1++;        
    if(timerLED1 - timePreview >= 800) 
    {                                    
      timePreview = timerLED1;           
     
      digitalWrite(led1, 1);
          
    }  
    
}
void setup() 
{
      
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led6, OUTPUT);
  
  TCCR0A |= (1 << WGM01);              
  OCR0A = 0xF9;                       
  TIMSK0 |= (1 << OCIE0A);            
  TCCR0B |= (1 << CS01) | (1 << CS00); 
  sei();                               
}
void loop() 
{
  
}

Підвал форуму