Использование маленьких контроллеров ATTiny13A. Восстанавливаем новогоднюю елку.

Опубликовал | 19.11.2015

  • Цена: $4.83/10шт

Применение ATTiny13

Решил восстановить такую елочку со световодамиИзначально там стояла галогенная лампочка на 12В и моторчик, который крутил цветной диск-светофильтрВсе это благополучно померло. Собираю такую схему с кусочком светодиодной ленты:на макетной платеПусть тинька плавно изменяет цвета ленты. Но для этого нужно 3-х канальный ШИМ, а у ATTinu13 аппаратно только два таких выхода. Значит ШИМ будет программный на 3 кагала, управляемый встроенным таймером.

Скетч трех-канального ШИМ для ATTiny13
  #include <avr/io.h>  #include <stdlib.h>  #include <avr/interrupt.h>  #include <util/delay.h>    uint8_t counter=0;  uint8_t lev_ch1, lev_ch2, lev_ch3;  uint8_t buf_lev_ch1, buf_lev_ch2, buf_lev_ch3;      ISR(TIM0_OVF_vect){      if (++counter==0) //счетчик перехода таймера через ноль    {      buf_lev_ch1=lev_ch1; //значения длительности ШИМ      buf_lev_ch2=lev_ch2;      buf_lev_ch3=lev_ch3;      PORTB |=(1<<PB0)|(1<<PB1)|(1<<PB2); //подаем 1 на все каналы    }        if (counter==buf_lev_ch1) PORTB&=~(1<<PB1); //подаем 0 на канал    if (counter==buf_lev_ch2) PORTB&=~(1<<PB0); //по достижении    if (counter==buf_lev_ch3) PORTB&=~(1<<PB2); //заданной длительности.    }    int main(void)  {    DDRB=0b00000111; // установка PortB пины 0,1,2 выходы      // таймер работает без предделителя      TCCR0B = _BV(CS00);      // прерывания по переполнению таймера разрешены      TIMSK0 = _BV(TOIE0);      // глобально прерывания так же разрешены      sei();          lev_ch1=0;   //Красный цвет    lev_ch2=255; //Зеленый цвет    lev_ch3=0;   //Синий цвет      while (1)     //бесконечная шарманка    {        for (uint8_t i=0;i<255;i++) {        lev_ch1++; //Красный увеличиваем        lev_ch2--; //Зеленый уменьшаем        _delay_us(5000); //Пауза 5мс       }      for (uint8_t i=0;i<255;i++){        lev_ch3++;  //Синий увеличиваем        lev_ch1--;  //Красный уменьшаем        _delay_us(5000); //Пауза 5мс       }      for (uint8_t i=0;i<255;i++) {        lev_ch2++; //Зеленый увеличиваем        lev_ch3--; //Синий уменьшаем        _delay_us(5000); //Пауза 5мс      }      }  }    

После этого остается только закрепить плату и ленту в корпусе елочки. Белый скотч наклеиваю для улучшения светоотражения внутри черного корпусаЕлочка готова. Светит не хуже чем с галогенной лампочкойВыводы:Микроконтроллеры ATTiny13 вполне годятся для несложных задач автоматизации.Их достоинства: низкое потребление и небольшая ценаК недостаткам можно отнести очень маленькие ресурсы и довольно сложную (по сравнению с обычным Ардуино) настройку программирования.Но безусловно эти микроконтроллеры достойно занимают свою нишу

Полезные ссылки

Даташит на ATTiny13AВетка посвященная работе ATTiny13 в Arduino IDEА это ветка на русскоязычном форуме arduino.ruСтатья по программированию ATTiny13 посредством АрдуиноПроекты на ATTiny13И еще проекты на ATTiny13