Overview
This guide covers the USB-C / CH340C variant (AH034) of the ShillehTek pre-soldered Nano. View the USB-C Nano or see the combined Micro-USB and USB-C manual to compare versions.
The ShillehTek Nano V3.0 is an Arduino-compatible ATmega328P development board with a USB-C connector and WCH CH340C USB-to-serial bridge. It runs at 16 MHz with 5V logic and comes with pre-soldered headers for breadboard use.
There are 14 labeled digital pins (D0-D13), including six PWM outputs, and eight 10-bit analog inputs (A0-A7). A0-A5 can also serve as digital I/O, giving 20 digital-capable pins in total; A6 and A7 are analog-input-only. Hardware UART, I2C and SPI support sensors, displays and other peripherals.
Connect a data-capable USB-C cable and select Arduino Nano in the Arduino IDE. The ATmega328P has 32 KB of flash, 2 KB of SRAM and 1 KB of EEPROM; available sketch space depends on the installed bootloader. A CH340 driver may be needed if the serial port is not detected. See the setup guidance below.
At a Glance
Specifications
| Parameter | Value |
| Microcontroller | ATmega328P (AVR 8-bit) |
| Clock Speed | 16 MHz |
| USB-to-Serial Chip | CH340C |
| USB Connector | USB Type-C |
| Operating Voltage | 5V |
| Input Voltage (VIN) | Use USB 5V for setup; verify board-specific VIN limits before external power |
| Digital I/O Pins | 14 labeled D0-D13; A0-A5 add six digital-capable pins (20 total) |
| Analog Input Pins | 8 (A0-A7, 10-bit ADC); A6 and A7 are analog-only |
| DC Current per I/O Pin | For low-current signals; observe the ATmega328P per-pin and combined port limits |
| Flash Memory | 32 KB total; available sketch space depends on the installed bootloader |
| SRAM / EEPROM | 2 KB / 1 KB |
| Communication Interfaces | UART (D0/D1), I2C (A4/A5), SPI (D10-D13) |
Pinout Reference
| Board labels | Function |
|---|---|
| D0 / RX, D1 / TX | UART receive / transmit; shared with the USB-to-serial bridge |
| D2-D13 | Digital I/O; D2 and D3 also support external interrupts |
| D3, D5, D6, D9, D10, D11 | PWM outputs |
| A0-A5 | Analog inputs or digital I/O (D14-D19) |
| A6, A7 | Analog-only inputs ADC6 / ADC7; no digital I/O |
| A4 / SDA, A5 / SCL | I2C data / clock |
| D10 / SS, D11 / MOSI, D12 / MISO, D13 / SCK | SPI interface; D13 is also the built-in LED pin |
| RST | Active-low RESET (ATmega328P PC6) |
| AREF / REF | Analog reference; do not treat it as a power output |
| 5V, 3V3, VIN, GND | Power connections; see the power guidance below |
Match the printed labels on the board before wiring. Headers are pre-soldered. The table lists pin functions without assuming a viewing orientation.
Wiring Guide
Powering the Nano
Start with regulated 5V USB power through a data-capable USB-C cable. Disconnect power before wiring, use one power source at a time, and share ground with connected peripherals.
| Connection | Pin / Port | Guidance |
|---|---|---|
| USB-C | USB port | Recommended for programming and initial testing; supplies 5V from the USB host |
| Regulated 5V | 5V pin | Direct connection to the 5V rail. Use only a stable regulated 5V supply, check polarity, and disconnect USB first. |
| External input | VIN pin | Verify the input range and regulator limits for the actual board before use; USB power is recommended for setup. |
| 3.3V rail | 3V3 pin | No output-current rating is specified here. Use a suitable external regulated 3.3V supply for peripherals whose demand has not been verified. |
I2C Peripheral Wiring
The Nano's I2C bus uses pins A4 (SDA) and A5 (SCL). These are shared by every I2C device — just connect all SDA lines together and all SCL lines together, ensuring each device has a unique 7-bit address.
| I2C Peripheral Pin | Nano Pin |
|---|---|
| VCC | Regulated supply suitable for the module; share GND |
| GND | GND |
| SDA | A4 |
| SCL | A5 |
SPI Peripheral Wiring
The Nano's hardware SPI peripheral uses fixed pins D10-D13. SS (Slave Select) can be any digital pin, but D10 is conventional.
| SPI Peripheral Pin | Nano Pin |
|---|---|
| VCC | Regulated supply suitable for the module; share GND |
| GND | GND |
| SCK (Clock) | D13 |
| MISO (Master In) | D12 |
| MOSI (Master Out) | D11 |
| SS / CS (Slave Select) | D10 (or any digital pin) |
ICSP Header (In-Circuit Serial Programming)
The 6-pin ICSP header exposes the SPI lines directly and is used for programming the ATmega328P with an external programmer (like USBasp or another Arduino running ArduinoISP). This is useful if the bootloader is corrupted or if you want to write directly to flash without using the CH340C.
| ICSP Pin | Function | ATmega328P |
|---|---|---|
| 1 (MISO) | Master In, Slave Out | PB4 / D12 |
| 2 (VCC) | +5V | VCC |
| 3 (SCK) | Serial Clock | PB5 / D13 |
| 4 (MOSI) | Master Out, Slave In | PB3 / D11 |
| 5 (RESET) | Active-low reset | RST |
| 6 (GND) | Ground | GND |
Code Examples
Blink (Onboard LED)
// Blink the onboard LED (connected to D13)
// The classic "Hello World" of microcontrollers
void setup() {
// Configure pin D13 (LED_BUILTIN) as an output
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // Turn LED on
delay(1000); // Wait 1 second
digitalWrite(LED_BUILTIN, LOW); // Turn LED off
delay(1000); // Wait 1 second
}
Serial Communication
// Print a counter over USB Serial
// Open Serial Monitor at 9600 baud to see output
unsigned long counter = 0;
void setup() {
Serial.begin(9600);
Serial.println("Arduino Nano V3.0 ready!");
}
void loop() {
Serial.print("Counter: ");
Serial.println(counter);
counter++;
delay(500);
}
I2C Scanner
// Scan the I2C bus and print the addresses of any devices found
// Use SDA=A4, SCL=A5 on the Nano
#include <Wire.h>
void setup() {
Wire.begin();
Serial.begin(9600);
Serial.println("I2C Scanner");
}
void loop() {
byte error, address;
int nDevices = 0;
Serial.println("Scanning...");
for (address = 1; address < 127; address++) {
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0) {
Serial.print("I2C device found at 0x");
if (address < 16) Serial.print("0");
Serial.println(address, HEX);
nDevices++;
}
}
if (nDevices == 0) {
Serial.println("No I2C devices found");
} else {
Serial.print(nDevices);
Serial.println(" device(s) found");
}
delay(5000);
}
Analog Read
// Read an analog value from A0 (e.g., potentiometer, LDR, analog sensor)
// Convert the 10-bit reading (0-1023) to a voltage (0-5V)
const int SENSOR_PIN = A0;
void setup() {
Serial.begin(9600);
Serial.println("Analog Read on A0");
}
void loop() {
int rawValue = analogRead(SENSOR_PIN);
// Approximate voltage using an assumed 5.0V ADC reference.
// Use your measured reference voltage for better accuracy.
float voltage = rawValue * (5.0 / 1023.0);
Serial.print("Raw: ");
Serial.print(rawValue);
Serial.print(" Voltage: ");
Serial.print(voltage, 3);
Serial.println(" V");
delay(200);
}
PWM Fade
// Fade an LED in and out using PWM
// Connect an LED (with 220 ohm resistor) from D9 to GND
// D9 is one of the PWM-capable pins (marked with ~ on the silkscreen)
const int LED_PIN = 9;
int brightness = 0;
int fadeStep = 5;
void setup() {
pinMode(LED_PIN, OUTPUT);
}
void loop() {
analogWrite(LED_PIN, brightness);
brightness += fadeStep;
if (brightness <= 0 || brightness >= 255) {
fadeStep = -fadeStep; // Reverse direction at endpoints
}
delay(20);
}
Frequently Asked Questions
atmelavr platform with the arduino framework. Select board = nanoatmega328 for the older Nano bootloader or board = nanoatmega328new for the newer bootloader, matching the board you have. A CH340 driver may also be needed for USB serial access.Related Tutorials
These are project references. Tutorials written for Nano Every or another Arduino board may require different board selections or wiring; follow this manual for this ATmega328P board.
Datasheets and Software References
These manufacturer datasheets describe the individual chips, not the assembled ShillehTek board. They are not board schematics and do not establish this board's regulator limits, dimensions, or included accessories.



