{"id":160,"date":"2026-07-11T18:58:00","date_gmt":"2026-07-11T18:58:00","guid":{"rendered":"https:\/\/ahaddad-wp.duckdns.org\/my\/mylogbook\/?post_type=project&#038;p=160"},"modified":"2026-07-13T13:49:11","modified_gmt":"2026-07-13T13:49:11","slug":"attiny85-programming-shield-for-arduino-uno","status":"publish","type":"project","link":"https:\/\/ahaddad-wp.duckdns.org\/my\/mylogbook\/projects\/attiny85-programming-shield-for-arduino-uno\/","title":{"rendered":"ATtiny85 Programming Shield for Arduino UNO"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">An arduino uno shield for rapid attiny programming<a href=\"https:\/\/www.hackster.io\/projects?difficulty=intermediate\"><\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Story<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Attiny85 Programmer Shield for Arduino UNO<\/h3>\n\n\n\n<h3 class=\"wp-block-heading\">An Arduino UNO shield for Attiny85 Programming.<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Programming ATtiny boards can be a tiring labor, so make it faster and easier with this shield!<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 1: Add Support for the ATtiny85 to the Arduino URL Board Manager<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">By default the Arduino IDE does not support the ATtiny85 so it&#8217;s required to add support for the Attiny85 to the Arduino Board Manager:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">From the Arduino IDE Go to Arduino-&gt;Preferences then scroll down to Additional Board Managers URLs<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Copy &amp; paste the following (if you already have a board manager URL just add a comma before pasting)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/raw.githubusercontent.com\/damellis\/attiny\/ide-1.6.x-boards-manager\/package_damellis_attiny_index.json\">https:\/\/raw.githubusercontent.com\/damellis\/attiny\/ide-1.6.x-boards-manager\/package_damellis_attiny_index.json<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Press &#8220;OK&#8221; at the bottom then restart the Arduino IDE<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 2: Install the ATtiny Board Package From the Arduino IDE go to Tools&#8211;&gt; Board&#8211;&gt;Boards Manager<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A new tab will open and at the top of the tab type: attiny<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Select Install on the Attiny by David. A Mellis<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Restart the Arduino IDE<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The ATtiny85 board should now be added ! Go to Tools&#8211;&gt; Board&#8211;&gt;Attiny85<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 3: Set the Arduino Uno Into ISP Mode<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Since what we want is to be able to program the ATtiny85 from the Arduino IDE which requires to burn the bootloader to the ATtiny85 we will need to &#8220;prep&#8221; the Arduino fist by uploading the ISP sketch to it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In the Arduino IDE select File&#8211;&gt;Examples&#8211;&gt; 11. Arduino ISP&#8211;&gt;ArduinoISP<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">the ISP sketch should open and upload it to your Arduino Uno<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 4: How a Microcontrollers Pins Are Labeled<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Before the connections are made there is a very important fact to know how pins on microcrontrollers\/ICs are labeled.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pin numbers used to program a chip on the Arduino IDE are based on how the chip manufacturer has internally named\/aranged the pins. The manufacturer of the ATtiny85 is ATMEL (the AT in ATtiny85-actually stands for ATMEL);It&#8217;s common for chips to have the first two initials of the company who makes them.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pins are gathered into groups called &#8220;ports&#8221; these ports are labeled A, B, C etc. Each port has a number of pins which are labeled 0, 1, 2, 3 etc and stick out on different parts of the chip which is why a microcontroller&#8217;s physical pin often time will be different than the pin number used when programming the chip.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">An example:<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Photo title<\/h2>\n\n\n\n<p class=\"ml-photo-subtitle wp-block-paragraph\">A short explanation of what this photo shows.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized ml-content-photo\"><img loading=\"lazy\" decoding=\"async\" width=\"770\" height=\"496\" src=\"https:\/\/ahaddad-wp.duckdns.org\/my\/mylogbook\/wp-content\/uploads\/2026\/07\/ATtiny85-featured.webp\" alt=\"\" class=\"wp-image-164\" style=\"aspect-ratio:1.5524358120820911;width:523px;height:auto\" srcset=\"https:\/\/ahaddad-wp.duckdns.org\/my\/mylogbook\/wp-content\/uploads\/2026\/07\/ATtiny85-featured.webp 770w, https:\/\/ahaddad-wp.duckdns.org\/my\/mylogbook\/wp-content\/uploads\/2026\/07\/ATtiny85-featured-300x193.webp 300w, https:\/\/ahaddad-wp.duckdns.org\/my\/mylogbook\/wp-content\/uploads\/2026\/07\/ATtiny85-featured-768x495.webp 768w\" sizes=\"auto, (max-width: 770px) 100vw, 770px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">PB0 (in the above datasheet) just means pin 0 is located on Port B of the Chip.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If pin 0 was located on Port A the name would look something like PA0 (Port A pin 0)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To add to the complexity pins can have more than one fuction and be labeled multiple names.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wrapping it all together! :<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Writing a program to light an LED on pin 0 on the ATtiny85 might be confusing at first because just by looking at the chip, there is no pin 0! However, by checking the datasheet of the ATtiny85 from ATMEL-snippet shown above-pin 0 is internally located on the chip&#8217;s port B (and is actually the chip&#8217;s physical pin 5 )!<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 6: Making the ATtiny85 Arduino Compatible<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">By default any fresh microcontroller chip bought will not be able to be programmed with the Arduino IDE out of the box. This is why it&#8217;s required to burn the Arduino bootloader onto the chip to make sure the chip will accept any programs uploaded via the Arduino IDE.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Quick checklist before pressing &#8220;burn bootloader&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Go to Tools -&gt; Board scroll to the bottom select ATtiny25\/45\/85<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Under Tools -&gt; Processor&#8211;&gt; 8 MHz (internal)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Under Tools&#8211;&gt;Programmer&#8211;&gt;Arduino as ISP<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Check that all wiring, capacitor, and board selections are correct<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Finally select Burn Bootloader<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">leave the wires connected they will be used in the next step<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A message will appear saying &#8220;Done Burning Bootloader&#8221;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 7: Uploading the Blink Sketch<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Test that the ATtiny85 can now receive sketches from the Arduino IDE by uploading the blink example<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Go to File&#8211;&gt;Example&#8211;&gt;01.Basics&#8211;&gt;blink<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Edit the sketch by replacing pin 13 with 0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Make sure to still have the ATtiny85 board settings from the previous step selected<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Make sure all wiring is the same as the previous step<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Upload the sketch<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wire an LED by connecting the anode to pin 0 (physical pin 5 ) and the cathode to a 1K resistor connected to ground (physical pin 4)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">While a resistor is not needed since the battery provides 3v (not enough to blow up an LED) it is recommended to lower the brightness of the LED.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hope it helps on future projects!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Attiny Programming Shield<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.hackster.io\/pcbway\/products\/custom-pcb?ref=project-e51476\">https:\/\/www.hackster.io\/pcbway\/products\/custom-pcb?ref=project-e51476<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Download or order the PCB from my project on pcbway! <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.pcbway.com\/project\/shareproject\/Attiny85_Programmer_Shield_for_Arduino_UNO_170b5847.htm\">https:\/\/www.pcbway.com\/project\/shareproject\/Attiny85_Programmer_Shield_for_Arduino_UNO_170b5847.html<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized ml-content-photo\"><img loading=\"lazy\" decoding=\"async\" width=\"900\" height=\"675\" src=\"https:\/\/ahaddad-wp.duckdns.org\/my\/mylogbook\/wp-content\/uploads\/2026\/07\/ArduinoUno-Rapid-Attiny-Programming.avif\" alt=\"\" class=\"wp-image-161\" style=\"width:373px;height:auto\" srcset=\"https:\/\/ahaddad-wp.duckdns.org\/my\/mylogbook\/wp-content\/uploads\/2026\/07\/ArduinoUno-Rapid-Attiny-Programming.avif 900w, https:\/\/ahaddad-wp.duckdns.org\/my\/mylogbook\/wp-content\/uploads\/2026\/07\/ArduinoUno-Rapid-Attiny-Programming-300x225.avif 300w, https:\/\/ahaddad-wp.duckdns.org\/my\/mylogbook\/wp-content\/uploads\/2026\/07\/ArduinoUno-Rapid-Attiny-Programming-768x576.avif 768w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Schematics<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large ml-content-photo\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"726\" src=\"https:\/\/ahaddad-wp.duckdns.org\/my\/mylogbook\/wp-content\/uploads\/2026\/07\/ATtiny85-Programming-Shield-Schematic-1024x726.png\" alt=\"\" class=\"wp-image-163\" srcset=\"https:\/\/ahaddad-wp.duckdns.org\/my\/mylogbook\/wp-content\/uploads\/2026\/07\/ATtiny85-Programming-Shield-Schematic-1024x726.png 1024w, https:\/\/ahaddad-wp.duckdns.org\/my\/mylogbook\/wp-content\/uploads\/2026\/07\/ATtiny85-Programming-Shield-Schematic-300x213.png 300w, https:\/\/ahaddad-wp.duckdns.org\/my\/mylogbook\/wp-content\/uploads\/2026\/07\/ATtiny85-Programming-Shield-Schematic-768x544.png 768w, https:\/\/ahaddad-wp.duckdns.org\/my\/mylogbook\/wp-content\/uploads\/2026\/07\/ATtiny85-Programming-Shield-Schematic.png 1284w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Code<\/h2>\n\n\n\n<pre class=\"wp-block-code ml-code-block\"><code>\/*\n  Blink\n\n  Turns an LED on for one second, then off for one second, repeatedly.\n\n  Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO\n  it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set to\n  the correct LED pin independent of which board is used.\n  If you want to know what pin the on-board LED is connected to on your Arduino\n  model, check the Technical Specs of your board at:\n  https:&#47;&#47;www.arduino.cc\/en\/Main\/Products\n\n  modified 8 May 2014\n  by Scott Fitzgerald\n  modified 2 Sep 2016\n  by Arturo Guadalupi\n  modified 8 Sep 2016\n  by Colby Newman\n\n  This example code is in the public domain.\n\n  https:\/\/www.arduino.cc\/en\/Tutorial\/BuiltInExamples\/Blink\n*\/\n\n\/\/ the setup function runs once when you press reset or power the board\nvoid setup() {\n  \/\/ initialize digital pin LED_BUILTIN as an output.\n  pinMode(LED_BUILTIN, OUTPUT);\n}\n\n\/\/ the loop function runs over and over again forever\nvoid loop() {\n  digitalWrite(LED_BUILTIN, HIGH);   \/\/ turn the LED on (HIGH is the voltage level)\n  delay(1000);                       \/\/ wait for a second\n  digitalWrite(LED_BUILTIN, LOW);    \/\/ turn the LED off by making the voltage LOW\n  delay(1000);                       \/\/ wait for a second\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Credits<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/www.hackster.io\/coloitu_\">coloitu_<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.hackster.io\/coloitu_\/attiny85-programming-shield-for-arduino-uno-e51476\">https:\/\/www.hackster.io\/coloitu_\/attiny85-programming-shield-for-arduino-uno-e51476<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>An arduino uno shield for rapid attiny programming Story Attiny85 Programmer Shield for Arduino UNO An Arduino UNO shield for Attiny85 Programming. Programming ATtiny boards can be a tiring labor, so make it faster and easier with this shield! Step 1: Add Support for the ATtiny85 to the Arduino URL Board Manager By default the [&hellip;]<\/p>\n","protected":false},"featured_media":161,"template":"","project_category":[88,139,86],"part_type":[71,70,72,62],"class_list":["post-160","project","type-project","status-publish","has-post-thumbnail","hentry","project_category-arduino","project_category-attiny","project_category-e-projects","part_type-8pin-ic-socket","part_type-arduini-uno-r3-board","part_type-https-www-hackster-io-pcbway-products-custom-pcbrefproject-e51476","part_type-microchip-attiny85"],"_links":{"self":[{"href":"https:\/\/ahaddad-wp.duckdns.org\/my\/mylogbook\/wp-json\/wp\/v2\/project\/160","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ahaddad-wp.duckdns.org\/my\/mylogbook\/wp-json\/wp\/v2\/project"}],"about":[{"href":"https:\/\/ahaddad-wp.duckdns.org\/my\/mylogbook\/wp-json\/wp\/v2\/types\/project"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ahaddad-wp.duckdns.org\/my\/mylogbook\/wp-json\/wp\/v2\/media\/161"}],"wp:attachment":[{"href":"https:\/\/ahaddad-wp.duckdns.org\/my\/mylogbook\/wp-json\/wp\/v2\/media?parent=160"}],"wp:term":[{"taxonomy":"project_category","embeddable":true,"href":"https:\/\/ahaddad-wp.duckdns.org\/my\/mylogbook\/wp-json\/wp\/v2\/project_category?post=160"},{"taxonomy":"part_type","embeddable":true,"href":"https:\/\/ahaddad-wp.duckdns.org\/my\/mylogbook\/wp-json\/wp\/v2\/part_type?post=160"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}