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.
Projects
[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
Realization plan is about ~50%. Some of projects are in progress and some are ready to publish. I’ll keep this page updated!
TODO List
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 detectorclap-clap switch.
Community Projects
- https://github.com/dimecho/ATtiny13-Plant
- https://github.com/VincentChalnot/PlayRandomATTiny13
- https://github.com/taunoe/ATtiny13-Stopwatch
- https://github.com/rlopezxl/HappyBirthdayTune
- https://github.com/rlopezxl/ImperialMarchTune
- https://github.com/mcore1976/thermometer-TM1637
- https://github.com/mcore1976/thermometer-LM35-TM1637
- https://github.com/mcore1976/thermometer-ATTINY13-NokiaLCD
- https://github.com/mcore1976/thermometer-LM35-ATTINY13-TM1637-Negative-temperatures
- https://create.arduino.cc/projecthub/dj-lukas/the-cheapest-and-simplest-pulse-counter-b0fc3d [Lukas Wiackowski]
- https://github.com/pklosko/attiny13_eos-UARTcli
- http://www.piclistbr.org/projetos.php?p=avrsinewaveplayer (AVR Sinwave Player; ASM)
Tutorials
Libraries
- attiny13-software-uart-library – ATtiny13 Software UART library.
- attiny-random-library – ATtiny13/25/45/85 16-bit PRNG (Pseudo Random Number Generator) library based on Galois LFSR algorithm.
- attiny-max7219-led-tube-display-library – ATtiny13/25/45/85 7-segment LED tube display (MAX7219/MAX7221) library.
- attiny-max7219-matrix-8×8-led-display-library – ATtiny13/25/45/85 8×8 matrix LED display driver (MAX7219/MAX7221) library.
- attiny-74hc595-library – ATtiny13/25/45/85 74hc595 shift register library.
- attiny-tm1638-library – This is tinyAVR (ATtiny13, ATtiny25, ATtiny45, ATtiny85, and other) library for LED controller modules based on TM1638 chip.
- attiny-tm1637-library – TinyAVR – ATtiny13, ATtiny25, ATtiny45, ATtiny85 – library for 7-segment display modules based on TM1637.
- attiny-ds18b20-library – This is tinyAVR (ATtiny13, ATtiny25, ATtiny45, ATtiny85, etc.) library for DS18B20 temperature sensor.
- attiny-onewire-library – This is tinyAVR (ATtiny13, ATtiny25, ATtiny45, ATtiny85, etc.) library to access devices using OneWire (1-Wire) protocol.
Hello! Found your site recently. I made a 220 V dimmer with a zero detector, I took the firmware from here: http://arduino.ru/forum/programmirovanie/attiny13a-101-primenenie?page=7#comment-69431 Circuit with errors (triac is not connected correctly). I also think that the firmware needs to be improved, but nevertheless everything works.
This guy make attiny13a RF Transceiver lib. Very small with small memory foot print. You should take a look on his work.
https://github.com/pouriap/TinyRF
Hi Łukasz,
Can temperature be measured with NTC using attiny13
Hi, the answer is yes. You can use ADC to measure a voltage between NTC and few kOhm bias resistor.
/LP
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.
/LP
asm only UART (both TX and RX uses 166 bytes)
interrupt based (not polling)
https://github.com/hack-tramp/attiny13a/blob/main/uart.asm
I like it!
/LP
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
https://github.com/DROID8622/ATtiny13-433MHz-Receiver-Transmitter
Привет Лукаш!
Возможно ли заставить работать attiny13a с nrf 24l01?
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
/LP
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
/LP
Witam serdecznie
Nie wiem czy jest różnica między AT Tiny13-85 a AT Tiny85 PU -proszę o odpowiedź
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
Hi,
thank you for your great work. I have some additional ATtiny13 projects for you:
https://github.com/wagiminator/ATtiny13-TinyUPS
https://github.com/wagiminator/ATtiny13-TinySolder
https://github.com/wagiminator/ATtiny13-TinyRemote
https://github.com/wagiminator/ATtiny13-TinyDice
Hi,
thank you. Will update the list soon!
/L
1MHZ with attiny13
can signal generator be made?
Even if set Attiny13 clock at @9.6MHz it would be hard get it work.
/L
Hello. Thanks for the very nice and helpful site.
Thanks for this great list!
Here are some ATtiny13a projects from instructables:
line follower robot
https://www.instructables.com/id/ATtiny13A-Line-Follower/
using a shift register
https://www.instructables.com/id/How-to-use-a-74HC595-Shift-Register-with-a-AVR-ATt/
control 60 LEDs with ATtiny13a
https://www.instructables.com/id/Display-Colorful-Message-in-Limited-Resources/
Goodies. Thanks!
/L
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!
/L
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
Great job! 🙂
/L
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)
{
MAX7219_CS_HIGH();
MAX7219_write(reg);
MAX7219_write(data);
MAX7219_CS_LOW();
__asm(“nop”);
MAX7219_CS_HIGH();
}
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.
/L
Hi Łukasz ,
my implementation of your ToDo – Canon remote controller (jack 2.5mm): https://github.com/pklosko/attiny13_eos-UARTcli
THX for UART lib & CLI examples.
Petr
Hi Petr! Love it!
Thx
/L
I like it so much
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?
TODO: counter + LED 7segment:
https://create.arduino.cc/projecthub/dj-lukas/the-cheapest-and-simplest-pulse-counter-b0fc3d
Hi Lucas, you made a cool project. I added it to the list!
/L
Hi, I made a counter from your TODO list @ Arduino IDE. Are you interested?
Hi, I would be surely interested. Do you have a link to your project on github or somewhere else?
Witam.
Czy jest możliwość zrobienia ładowarki do padów PS3 na attiny13?
Cześć, udało mi się zrobić kilka prostych ładowarek na ATtiny13 dla akumulatorów żelowych. Jakie akumulatorki są w PS3?
/L
Hi, sir
In project(23)
How to make 2 analog inputs and compare value for outputs pls?
Is it possible to use ATtiny13 to implement an AC dimmer with a Zero crossing detection?
It’s kind of interesting project! I think the ATtiny13 has enough features to monitor ZCS (not alone ofc.) and drive for example a Triac. On Arduino playground is an example (AVR-GCC) of “AC Phase Control”, https://playground.arduino.cc/Main/ACPhaseControl.
/L
Thanks, I’m a beginner but I’ll try to figure out how to make it 🙂
If so, have a nice adventure! I hope that materials I posted here will help you start your project.
/LP
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 🙂
It’s depend on what do mean by “reactive”. ATtiny13 has ADC and hardware PWM. Should be enough to read audio and drive LED 🙂 Take a look at https://blog.podkalicki.com/a-few-funny-projects-using-my-simplified-implementation-of-dft/
Cesc z Litwy,
czy bedzie pan Lukasz robic projekty z innymi AVR mikroprocesorami, na przyklad Atmega8 itd.?
Panie Tomaszu,
czasami sięgam po ten mikroprocesor w swoich projektach komercyjnych. Część przykładów opublikowałem na GitHubie:
– https://github.com/lpodkalicki/blog/tree/master/avr/atmega8
– https://github.com/lpodkalicki/atlib/tree/master/examples/atmega8
/LP
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
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
demetrios
Hi, do you mean Arduino UNO?
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.
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)
gives
Program Memory Usage : 326 bytes 31,8 % Full
while ((c = uart_getc()) != 'A' && (p – buff) < 16)
gives
Program Memory Usage : 2268 bytes 221,5 % Full (Memory Overflow)
Do you have any idea, what causes this?
I really like your page! I am a fan of the ATTiny family as they are so much fun to work with. I will check back.
Thanks! 🙂
/L
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
Hi Robret, you’re welcome! I’m glad you like it.
/L
how to connect attiny13 with bluetooth module?
md.tanzim.rahman@gmail.com
Hi, since ATtiny13 does not have hardware USART/UART you can try ‘talk’ to your BT module using Software USART. It should work, but note that errors rate will be quite high. Take a look at the article showing how to use software UART – http://blog.podkalicki.com/attiny13-software-uart-debug-logger/ . Please, let me know if it worked! 🙂