100+ Projects on ATtiny13

ATtiny13 is my favorite tiny uC. That’s why I decided to design and assemble 100+ projects based on this chip. Why I like ATtiny13?

  • advanced RISC architecture (up to 1MIPS/1MHz, easy to learn Assembler – only 120 instructions)
  • pin-compatible with the ATtiny*5 series so if 1K bytes of FLASH and/or 64 bytes of RAM turns out too restrictive, it’s easy to swap in up to 8K without a layout redesign
  • operating voltage range (1.8V to 5.5V) and industrial temperature range (-40ºC to +85ºC)
  • basic peripheral features like timer, 4-channel ADC, Watchdog or Analog Comparator
  • AVR-GCC compiler and many other developer tools that are open-source and free
  • very-very low price for such computing power!

Here are the ATtiny13 – manual, the ATtiny13 – development board, little guides about how to  compile and burn the code to ATtiny13 (ANSI C) and how to install AVR assembler (AVRA) on Linux.



[001] ATtiny13 – blinky with delay function
[002] ATtiny13 – LED fading with delay function (Software PWM)
[003] ATtiny13 – randomly flashing LED with PRNG based on LFSR
[004] ATtiny13 – blinky with timer OVF (Overflow)
[005] ATtiny13 – blinky with Watchdog Timer
[006] ATtiny13 – blinky with timer COMPA
[007] ATtiny13 – tone generator
[008] ATtiny13 – software UART (debug logger)
[009] ATtiny13 – pseudo random numbers (lightweight library)
[010] ATtiny13 – controlling LED RGB (fancy light effects)
[011] ATtiny13 – IR remote to control LEDs (NEC proto)
[012] ATtiny13 – IR remote to control LED RGB (NEC proto)
[013] ATtiny13 – IR receiver / NEC proto analyzer
[014] ATtiny13 – Best Room Tempature on DS18B20
[015] ATtiny13 – two tone alarm
[016] ATtiny13 – digital DC voltmeter with MAX7219
[017] ATtiny13 – digital DC ampmeter with MAX7219
[018] ATtiny13 – dance lights with FFT
[019] ATtiny13 – simple timer on TM1637
[020] ATtiny13 – power LED PWM driver
[021] ATtiny13 – simple text CLI (Command Line Interface) via UART
[022] ATtiny13 – Morse Code (flashing light)
[023] ATtiny13 – battery level indicator
[024] ATtiny13 – simple logic probe
[026] ATtiny13 – disco lights using FFT
[028] ATtiny13 – running digits on TM1637
[029] ATtiny13 – temperature logger using LM35 ans Software UART
[030] ATtiny13 – reading temperature and humidity from DHT11
[031] ATtiny13 – hardware PWM
[032] ATtiny13 – running dots & digits on 7-segment LED tube display
[033] ATtiny13 – WS2812 LED strip – blinky
[034] ATtiny13 – rainbow on single LED WS2812
[035] ATtiny13 – rainbow on several LEDs WS2812
[036] ATtiny13 – circular WS2812 LED chaser
[037] ATtiny13 – PI (Pulse Induction) metal detector
[040] ATtiny13 – random flickering pixels on 8×8 matrix LED display
[043] ATtiny13 – blinky with delay function (assembler version)
[044] ATtiny13 – blinky with timer OVF (assembler version)
[045] ATtiny13 – blinky with timer COMPA (assembler version)
[047] ATtiny13 – controlling stepper motor 28BYJ-48
[048] ATtiny13 – randomly flashing LED with PRNG based on BBS
[050] ATtiny13 – clap clap switch
[052] ATtiny13 – 8bit mono Class D amplifier
[060] ATtiny13 – An example of controlling a stepper motor with Wave-Step method using the L298N
[061] ATtiny13 – An example of controlling a stepper motor with Full-Step method using the L298N
[062] ATtiny13 – An example of controlling a stepper motor with Half-Step method using the L298N
[063] ATtiny13 – An example of controlling a stepper motor with Half-Step method and PWM
[064] ATtiny13 – An example of controlling a stepper motor using the A4988
[065] ATtiny13 – CNC linear module controller (forward, backward) using the A4988 (tba6560, etc.)
[066] ATtiny13 – An example of controlling DC motors using the L298N

Realization plan is about ~65%. Some of projects are in progress and some are ready to publish. I’ll keep this page updated!


Do you have an idea for next project on ATtiny13? Submit the project topic in a comment or mail it to me! (lpodkalicki@gmail.com)

  • single LED dice (charliplexing)
  • double LED dice (charliplexing)
  • triple LED dice (charliplexing)
  • line follower robot
  • obstacle avoiding robot
  • EMF Detector
  • advanced 4-channel clapper switch
  • Canon remote controller (jack 2.5mm)
  • Canon remote controller (Infrarred RC6)
  • simple remote controller and 4 channel receiver (Infrarred: RC5 or NEC)
  • electronic dice using WS2811 LEDs
  • pulse counter – counting TTL pulses, 7-segment LED module and reset button
  • pulse generator – simple TTL pulse generator
  • matrix keyboard – one wire, ADC
  • OneWire Slave
  • smart desk lamp controller
  • disco lights (upgraded version)
  • PI Metal detector
  • clap-clap switch.

Community Projects



  1. attiny13-software-uart-library – ATtiny13 Software UART library.
  2. attiny-random-library – ATtiny13/25/45/85 16-bit PRNG (Pseudo Random Number Generator) library based on Galois LFSR algorithm.
  3. attiny-max7219-led-tube-display-library – ATtiny13/25/45/85 7-segment LED tube display (MAX7219/MAX7221) library.
  4. attiny-max7219-matrix-8×8-led-display-library – ATtiny13/25/45/85 8×8 matrix LED display driver (MAX7219/MAX7221) library.
  5. attiny-74hc595-library – ATtiny13/25/45/85 74hc595 shift register library.
  6. attiny-tm1638-library – This is tinyAVR (ATtiny13, ATtiny25, ATtiny45, ATtiny85, and other) library for LED controller modules based on TM1638 chip.
  7. attiny-tm1637-library – TinyAVR – ATtiny13, ATtiny25, ATtiny45, ATtiny85 – library for 7-segment display modules based on TM1637.
  8. attiny-ds18b20-library – This is tinyAVR (ATtiny13, ATtiny25, ATtiny45, ATtiny85, etc.) library for DS18B20 temperature sensor.
  9. attiny-onewire-library – This is tinyAVR (ATtiny13, ATtiny25, ATtiny45, ATtiny85, etc.) library to access devices using OneWire (1-Wire) protocol.

66 thoughts on “100+ Projects on ATtiny13

  1. HOLA Łukasz Podkalicki soy Jesus daniel de colombia. tenog un problema con ATTINY 13A. no he podido encontrar un alibreria o logaritmo que pueda manejar una pantalla oled ssd 1306,06,…
    solo hay 1 solo programa en internet que me permite imprimir pero de manera programana osea los caractares tengo que incluirlos con codigo ASCII y en fomrato especifico como 3×8 o 5×8.
    en otro programa solo imprime cadenas de aracteres que esten dentro de ” ” (comillas) pero no puedo imprimir valores ent, float, double etc… convertidos o no a cadena de caracteres.

    por el momento solo he podido imprimir un numero entero con el codigo ASCII desde 0 a 9 pero no puedo modificar tamaño ni pocicin dentro de la matris de 128×63 pixeles que tiene la pantalla OLED .

  2. Dear Editor,
    Can the ATiny13 be upgraded to allow for 9 VDC circuitry ( per ATiny13), and also update the Pulse Induction metal detector to go a little deeper? I want to use an array of ganged 6 inch diameter coils, and get further deeper in soil if necessary, and a broader range of outputs if ganged together. (10) units I want to gang together, and connect the output LED’s to a visual readout board panel, and also connect the USB port to a Logitech Headset with microphone too. I had a visual drawing of how I want the array of coils to appear, and also need a parts list for everything else that fits the 9 VDC description too please? Email me the mods, I will try to get started.

    • Hi,
      It’s been a while since I wrote this article. I didn’t experiment with higher voltage. Mostly because ADC has its peek-to-peek limits and I wanted keep the circuit simple.

    • Hi Petr, Your project made use of almost all FLASH memory 😀 It’s hard to get there – to have all required functionality and only one byte left.
      My maximum usage was somewhere around 1016Bytes. Impressive.


    • Hi, the answer is yes. You can use ADC to measure a voltage between NTC and few kOhm bias resistor.

  3. Piszesz że jesteś Łukasz P. Nazwisko polskie i imię. Więc nie rozumię DLACZEGO piszesz po angielsku? Czyżbyś nie był POLAKIEM?

    • Bo przyjąłem założenie zakładając ten blog, że będę go prowadził w uniwersalnym dla elektroników/informatyków języku, tj. w j. angielskim.

  4. Hi, Łukasz! Thank you so much for yout blog! You made me fan of ATtiny13 as well!
    I have a small project – ATtiny13 with 433MHz receiver and transmitter, so it is possible to use
    ATtiny13 as a remote switch with optional confirmation, or for some remote sensors. etc.
    Unfortunately I don’t know AVR C so it’s written with Arduino IDE + MicroCore by MCUdude


    • Hi, Alex.

      I remember Florian Trier made attiny13a work with nrf24l01 with success. It was some time ago. I don’t remember details. Anyway, it’s possible but I haven’t test it, yet (but i’m going to!)

      Kind Regards

  5. I once made an 18 watt led headlamp for caving based on the attiny 13. Completely waterproof. Extremely rugged. Simple linear current regulator to run high power led. Tiny 13 produced a pwm signal to control the current regulator.

    Would be happy to share regulator design if you wish.

    • Hi Andrew,

      sounds like an insteresing project. Please, share the link in the comment bellow or send me via email. Will attach your project to the list.

      Kind Regards

    • Witam,

      1) ATtiny13 oraz ATtiny85 mają ten sam footprint (czyli wyprowadzenia) oraz zgodność peryferii I/O co w praktyce pozwala szybko rozwijający się projekt na ATtiny13 przenieść na np. ATtiny25/45/85. ATtiny85 jest szybszy oraz ma 8x więcej pamięci FLASH (8kB, stąd to “8” w sygnaturze). Najlepiej porównać pierwszą stronę datasheet’ów tych układów.

      2) Symbole występujące po numerze partii (np. ATtiny13A-PU) oznaczają warunki brzegowe pracy oraz typ obudowy.

      Przykładowe oznaczenia obudów:
      * AU – TQFP
      * MU – QFN
      * PU – DIP
      Dodatkowo przed symbolem obudowy może się pojawić liczba np. 10PU, która oznacza maksymalny zegar (10MHz)

      Warunki pracy:
      – (V_ gwarantuje pracę z niskim napięciem
      – (V) lub (P) oznacza też starszą wersję procesora
      – podczas, gdy (A) lub (PA) oznaczają nowsze wersje procesora; pełny zakres napięć (A) oraz mniejsze zużycie mocy (P) w porównaniu do starszej wersji

  6. Hi Łukasz,
    IR remote + 2 X DC 6V Gear Reducer Motor.
    can the robot control? forward, backward, right, left

    • Hi, let’s count it – one pin for IR, two pins per motor (H-bridge) – summing up 5 pins. Yes, it can!

  7. I made a program to AtTiny13, to simulate a PS/2 keyboard, program it to keep looking at an I/O pin, when goes down, it automatically start to “type” certain information I use to repeat over and over on those internet payment screens… 😉 Now, a simple press of the button and there it goes. That particular motherboard still has the PS/2 keyboard connector.

    Also, another little project in assembly to play sinewave, and some Christmas song, using PWM in an AtTiny13. http://www.piclistbr.org/projetos.php?p=avrsinewaveplayer

  8. Hi Łukasz !
    I study your projects for ATiny13.
    I’m currently trying to figure out the code for working with the driver MAX7219.
    I can’t understand why you use the operator first MAX7219_CS_HIGH() and then MAX7219_CS_LOW()
    in the function
    MAX7219_send(uint8_t reg, uint8_t data)

    In the description on the chip MAX7219, the signal CS must be in the active state at zero.

    • Hi, I don’t remember 🙂 It was a while ago.. but definitly, there was a reason if I did that. I used MAX7219 datasheet to make this lib.

  9. Hello. Thanks for your very nice and useful site
    Can we set up a memory card with attiny13? For example, read the temperature and save it to the memory card?

    • Hi, I would be surely interested. Do you have a link to your project on github or somewhere else?

    • Cześć, udało mi się zrobić kilka prostych ładowarek na ATtiny13 dla akumulatorów żelowych. Jakie akumulatorki są w PS3?

    • If so, have a nice adventure! I hope that materials I posted here will help you start your project.

  10. Hey Lukasz, is attiny 13 powerful enough to make a sound reactive LED driver? I want to connect audio input on one pin and have LED on the other? Thanks 🙂

  11. Cesc z Litwy,

    czy bedzie pan Lukasz robic projekty z innymi AVR mikroprocesorami, na przyklad Atmega8 itd.?

  12. Hi Łukasz, from what I understand attiny13a have 2 pwm channels so i wonder if you could help me to build pwm dimmer for 2 led fixtures by providing 2 channels which would run 2 Darlington transistors to run them?
    My understanding of pwm functionality of the chip is very limited. Thx ahead of time.

    • Hi, do you have any specific PWM parameters (frequency, duty cycle resolution) for your project?

      • For leds i don’t need more then 120hz but to be on the safe side it we can do more. Duty cycle resolution 8bit(max).

        Thanks again

  13. Dear Sir,
    ATiny13 must be always be used with uno this will let the Atiny13 work as standalone unit? After of course compile it! Mfile winAVR!
    kind regarrds

  14. It seems like Atmel Studio 7’s display of Program memory use is not trustworthy. It does not show the same value as the hex-files properties does. There is a big difference.

  15. This is a great blog. I like playing around with the Attiny MCU’s. Especially the 13. I have tried your software UART. It works great. In my last project, I use an attiny13 to get signals from a photoresister and a movement sensor. I use a ESP8266-01 to request measurements. My request terminated first with ‘>’. But i wanted to change this to ‘\r’. I use Atmel Studio 7 as IDE.
    When I use ‘>’ as terminater, everything is OK. But when I change it to anything else (‘\r’ or ‘A’), I get a program overflow.
    while ((c = uart_getc()) != ‘>’ && (p – buff) < 16)
    Program Memory Usage : 326 bytes 31,8 % Full

    while ((c = uart_getc()) != 'A' && (p – buff) < 16)
    Program Memory Usage : 2268 bytes 221,5 % Full (Memory Overflow)

    Do you have any idea, what causes this?

  16. Hi Łukasz,

    I like the ATtiny13A too. Thank you very mutch for sharing your Soft UART library.

    For me the ATtiny is a perfect Co-Controller for the ESP8266 wifi chip and low current applications. You can power down the ESP, the ATtiny messures sensors, keep variable and uptime. After wakeup or trigger the ATtiny send it’s data to the ESP. The ATtiny itself going to sleep for small intervalls.

    Best regards, Robert

Leave a Comment