Introduction
Managing arduino projects can be a nightmare because you only see the software side in your code documentation, the hardware is hard to keep track off.
To enable easy documentation of pin assignments, I created a couple of ASCII art arduinos; complete with ports, PWM and coms all marked. Simply paste as a comment into your code and marvel at your new found organisation.
I suggest altering the image (eg. a letter or X in the [ ]) to keep track of the pins you ended up using.
Find this project on gitHub
Plain Text – Arduino Pinout
Here is copy/paste-able Arduino Pinout ASCII art ready to go (tip: you can use the copy button, at the top of each ASCII art piece, to make the process easy).
I place them in the Creatice Commons [Creative Commons Attribution (BY) license].
Attribution via the url: “http://busyducks.com/ascii-art-arduinos”
+-----+
+----[PWR]-------------------| USB |--+
| +-----+ |
| GND/RST2 [ ][ ] |
| MOSI2/SCK2 [ ][ ] A5/SCL[ ] | C5
| 5V/MISO2 [ ][ ] A4/SDA[ ] | C4
| AREF[ ] |
| GND[ ] |
| [ ]N/C SCK/13[ ] | B5
| [ ]IOREF MISO/12[ ] | .
| [ ]RST MOSI/11[ ]~| .
| [ ]3V3 +---+ 10[ ]~| .
| [ ]5v -| A |- 9[ ]~| .
| [ ]GND -| R |- 8[ ] | B0
| [ ]GND -| D |- |
| [ ]Vin -| U |- 7[ ] | D7
| -| I |- 6[ ]~| .
| [ ]A0 -| N |- 5[ ]~| .
| [ ]A1 -| O |- 4[ ] | .
| [ ]A2 +---+ INT1/3[ ]~| .
| [ ]A3 INT0/2[ ] | .
| [ ]A4/SDA RST SCK MISO TX>1[ ] | .
| [ ]A5/SCL [ ] [ ] [ ] RX<0[ ] | D0
| [ ] [ ] [ ] |
| UNO_R3 GND MOSI 5V ____________/
\_______________________/
http://busyducks.com/ascii-art-arduinos
+-----+
+----[PWR]-------------------| USB |--+
| +-----+ |
| GND/RST2 [ ] [ ] |
| MOSI2/SCK2 [ ] [ ] SCL[ ] | D0
| 5V/MISO2 [ ] [ ] SDA[ ] | D1
| AREF[ ] |
| GND[ ] |
| [ ]N/C 13[ ]~| B7
| [ ]IOREF 12[ ]~| B6
| [ ]RST 11[ ]~| B5
| [ ]3V3 +----------+ 10[ ]~| B4
| [ ]5v | ARDUINO | 9[ ]~| H6
| [ ]GND | MEGA | 8[ ]~| H5
| [ ]GND +----------+ |
| [ ]Vin 7[ ]~| H4
| 6[ ]~| H3
| [ ]A0 5[ ]~| E3
| [ ]A1 4[ ]~| G5
| [ ]A2 INT5/3[ ]~| E5
| [ ]A3 INT4/2[ ]~| E4
| [ ]A4 TX>1[ ]~| E1
| [ ]A5 RX<0[ ]~| E0
| [ ]A6 |
| [ ]A7 TX3/14[ ] | J1
| RX3/15[ ] | J0
| [ ]A8 TX2/16[ ] | H1
| [ ]A9 RX2/17[ ] | H0
| [ ]A10 TX1/INT3/18[ ] | D3
| [ ]A11 RX1/INT2/19[ ] | D2
| [ ]A12 I2C-SDA/INT1/20[ ] | D1
| [ ]A13 I2C-SCL/INT0/21[ ] | D0
| [ ]A14 |
| [ ]A15 | Ports:
| RST SCK MISO | 22=A0 23=A1
| ICSP [ ] [ ] [ ] | 24=A2 25=A3
| [ ] [ ] [ ] | 26=A4 27=A5
| GND MOSI 5V | 28=A6 29=A7
| G | 30=C7 31=C6
| N 5 5 4 4 4 4 4 3 3 3 3 3 2 2 2 2 5 | 32=C5 33=C4
| D 2 0 8 6 4 2 0 8 6 4 2 0 8 6 4 2 V | 34=C3 35=C2
| ~ ~ | 36=C1 37=C0
| @ # # # # # # # # # # # # # # # # @ | 38=D7 39=G2
| @ # # # # # # # # # # # # # # # # @ | 40=G1 41=G0
| ~ | 42=L7 43=L6
| G 5 5 4 4 4 4 4 3 3 3 3 3 2 2 2 2 5 | 44=L5 45=L4
| N 3 1 9 7 5 3 1 9 7 5 3 1 9 7 5 3 V | 46=L3 47=L2
| D | 48=L1 49=L0 SPI:
| | 50=B3 51=B2 50=MISO 51=MOSI
| 2560 ____________/ 52=B1 53=B0 52=SCK 53=SS
\_______________________/
http://busyducks.com/ascii-art-arduinos
You may notice that the clean layout of these diagrams makes them very readable, personally I feel many graphical versions present too much information at once.
Some Updates (new models)
This idea seems to have caught on quickly, so I will keep the art coming.
Redit user plasticluthier adapted a nano version here, I thought that was spiffy, so I fixed an error tweaked it a bit and added chips and ports.
+-----+
+------------| USB |------------+
| +-----+ |
B5 | [ ]D13/SCK MISO/D12[ ] | B4
| [ ]3.3V MOSI/D11[ ]~| B3
| [ ]V.ref ___ SS/D10[ ]~| B2
C0 | [ ]A0 / N \ D9[ ]~| B1
C1 | [ ]A1 / A \ D8[ ] | B0
C2 | [ ]A2 \ N / D7[ ] | D7
C3 | [ ]A3 \_0_/ D6[ ]~| D6
C4 | [ ]A4/SDA D5[ ]~| D5
C5 | [ ]A5/SCL D4[ ] | D4
| [ ]A6 INT1/D3[ ]~| D3
| [ ]A7 INT0/D2[ ] | D2
| [ ]5V GND[ ] |
C6 | [ ]RST RST[ ] | C6
| [ ]GND 5V MOSI GND TX1[ ] | D0
| [ ]Vin [ ] [ ] [ ] RX1[ ] | D1
| [ ] [ ] [ ] |
| MISO SCK RST |
| NANO-V3 |
+-------------------------------+
http://busyducks.com/ascii-art-arduinos
I have a Pro Mini project coming up, so knocked one of these out as well.
D0 D1 RST
GND GND VCC RX TX /DTR
+--------------------------------+
| [ ] [ ] [ ] [ ] [ ] [ ] |
| FTDI |
D1 | [ ]1/TX RAW[ ] |
D0 | [ ]0/RX GND[ ] |
| [ ]RST SCL/A5[ ] RST[ ] | C6
| [ ]GND SDA/A4[ ] VCC[ ] |
D2 | [ ]2/INT0 ___ A3[ ] | C3
D3 |~[ ]3/INT1 / \ A2[ ] | C2
D4 | [ ]4 /PRO \ A1[ ] | C1
D5 |~[ ]5 \ MINI/ A0[ ] | C0
D6 |~[ ]6 \___/ SCK/13[ ] | B5
D7 | [ ]7 A7[ ] MISO/12[ ] | B4
B0 | [ ]8 A6[ ] MOSI/11[ ]~| B3
B1 |~[ ]9 SS/10[ ]~| B2
| [RST-BTN] |
+--------------------------------+
http://busyducks.com/ascii-art-arduinos
How to use them
Just fill in the spaces, either with an X, or with a reference letter which you document below the ASCII art.
They can be pasted into code comments, (use /* and */ in the arduino IDE to create a block comment). They can also be useful in forums, when you need a quick arduino diagram, but don’t want to fire up an image editor.
This is a snippet from a recent project. The sketch starts out with comments that set-out how the hardware is setup, this helps me a lot when I have to look at it again in a years time. Its also great if I want to share the code, as people don’t need to dig-around in the code to see how to connect the arduino to other devices.
/*
+-----+
+----[PWR]-------------------| USB |--+
| +-----+ |
| GND/RST2 [ ] [ ] |
| MOSI2/SCK2 [ ] [ ] SCL[ ] | C5
| 5V/MISO2 [ ] [ ] SDA[ ] | C4
| AREF[ ] |
| GND[ ] |
| [ ]N/C SCK/13[A] | B5
| [ ]v.ref MISO/12[A] | .
| [ ]RST MOSI/11[A]~| .
| [ ]3V3 +---+ 10[ ]~| .
| [ ]5v | A | 9[ ]~| .
| [ ]GND -| R |- 8[B] | B0
| [ ]GND -| D |- |
| [ ]Vin -| U |- 7[A] | D7
| -| I |- 6[A]~| .
| [ ]A0 -| N |- 5[C]~| .
| [ ]A1 -| O |- 4[A] | .
| [ ]A2 +---+ INT1/3[A]~| .
| [ ]A3 INT0/2[ ] | .
| [ ]A4 RST SCK MISO TX>1[ ] | .
| [ ]A5 [ ] [ ] [ ] RX<0[ ] | D0
| [ ] [ ] [ ] |
| UNO_R3 GND MOSI 5V ____________/
\_______________________/
http://busyducks.com/ascii-art-arduinos
*/
//------------------------------------------------------------------
// [A] Adafruit music shield
//------------------------------------------------------------------
// Connect CLK, MISO and MOSI to hardware SPI pins.
// SPI Clock, shared with SD card
#define CLK_PIN (13)
// Input data, from VS1053/SD card
#define MISO_PIN (12)
// Output data, to VS1053/SD card
#define MOSI_PIN (11)
// VS1053 reset pin (unused!)
#define SHIELD_RESET_PIN (-1)
// VS1053 chip select pin (output)
#define SHIELD_CS_PIN (7)
// VS1053 Data/command select pin (output)
#define SHIELD_DCS_PIN (6)
// Card chip select pin
#define CARDCS_PIN (4)
// VS1053 Data request, ideally an Interrupt pin
#define DREQ_PIN (3)
//------------------------------------------------------------------
// [B] WS2811 LED stip
//------------------------------------------------------------------
#define LED_STIP_PIN (8)
//------------------------------------------------------------------
// [C] Servo Motor
//------------------------------------------------------------------
#define SERVO_PIN (5)
Related Projects (based on this work)
- I modified a version of this for markdeep and made it available for download here.
- There is a unofficial mirror (by vanderZwan) of the markdeep work here
- A console version, by paulfantom, for terminal users is available here.
Our markdeep version (click image to download)
Stay Up To date and Provide Feedback
- Contribute to the project on https://github.com/busyDuckman/ascii-art-arduinos
- I will check back on the facebook page for any comments, like the page to stay up to date.
- I set up a redirected URL http://busyducks.com/ascii-art-arduinos that is both the CC-BY attribution line, and will always redirect to the latest version of these ascii art arduinos.



