Câu trả lời:
Đây là các chân trong Lập trình hệ thống (ISP). Chúng được sử dụng để lập trình vi điều khiển mà không cần sử dụng bộ tải khởi động.
Bộ tải khởi động là một chương trình đã được tải vào flash của vi điều khiển cho phép chương trình được tải vào vi điều khiển thông qua các dòng nối tiếp Tx & Rx và do đó không cần thiết bị lập trình.
Sử dụng ISP có thể hữu ích khi:
Kết nối tiêu chuẩn cho ISP là tiêu đề 6 chân 6 triệu (2x3).
Có hai tiêu đề ISP trên Arduino Uno vì thực sự có 2 bộ vi điều khiển trên bo mạch. Có bộ vi điều khiển chính (còn gọi là ATmega328P) được sử dụng để thực hiện chương trình bạn tải vào bảng Arduino. Bộ vi điều khiển thứ hai (ATmega16U2 hoặc ATmega8U2) được sử dụng làm giao diện USB - chuyển đổi tín hiệu USB thành dữ liệu nối tiếp được kết nối với UART của ATmega328P (tức là Tx & Rx).
Tài liệu sau đây nêu chi tiết về ISP và đưa ra các mô tả về các chân được sử dụng trên tiêu đề ISP và cách giao tiếp với vi điều khiển, v.v .:
[PDF] AVR: Lập trình trong hệ thống - Atmel
EDIT: Như Majenko chỉ ra chính xác, tiêu đề ISP 2x3 gần nhất với ATmega328P cũng có thể được sử dụng để kết nối các cảm biến và bộ điều khiển giao tiếp bằng Giao diện ngoại vi nối tiếp (SPI).
Thông tin thêm về Giao diện ngoại vi nối tiếp và Thư viện SPI có thể được tìm thấy tại: https://www.arduino.cc/en/Reference/SPI
Đầu nối USB là ICSP cho chip giao diện USB. Cái còn lại là ICSP cho chip chính và tăng gấp đôi như giao diện SPI (bây giờ là tiêu chuẩn) cho các tấm chắn.