# banlinhkien/arduino architecture

> Architecture diagram of the GitHub repository banlinhkien/arduino, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-10-01). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/banlinhkien/arduino
- Repository: https://github.com/banlinhkien/arduino

## Overview

This repository is primarily educational material for BanLinhKien Arduino kits, with example projects and reusable embedded code. The learner workflow is to study circuit fundamentals, progress to Arduino input/output and sensor projects, then build more advanced kit projects. The sampled code adds LED-matrix control, nonblocking timing, button handling, and FFT/constant-Q signal processing. The README documents Arduino and ESP32 gas-detection combos; their runtime wiring is not shown, so those are represented as product capabilities rather than inferred call flows.

Main entry points: [`1_Bo_KIT_Hoc_Tap_BLK_UNO_R3_Va_55_Mach_Dien_Tu_Co_Ban/BLKLab_08_Vi Điều Khiển Và Cảm Biến`](https://github.com/banlinhkien/arduino/tree/main/1_Bo_KIT_Hoc_Tap_BLK_UNO_R3_Va_55_Mach_Dien_Tu_Co_Ban/BLKLab_08_Vi%20%C4%90i%E1%BB%81u%20Khi%E1%BB%83n%20V%C3%A0%20C%E1%BA%A3m%20Bi%E1%BA%BFn) (Arduino lessons), [`1_Bo_KIT_Hoc_Tap_BLK_UNO_R3_Va_55_Mach_Dien_Tu_Co_Ban/BLKLab_01_Linh Kiện Thụ Động`](https://github.com/banlinhkien/arduino/tree/main/1_Bo_KIT_Hoc_Tap_BLK_UNO_R3_Va_55_Mach_Dien_Tu_Co_Ban/BLKLab_01_Linh%20Ki%E1%BB%87n%20Th%E1%BB%A5%20%C4%90%E1%BB%99ng) (Circuit fundamentals), [`1_Bo_KIT_Hoc_Tap_BLK_UNO_R3_Va_55_Mach_Dien_Tu_Co_Ban/BLKLab_02_Linh Kiện Đóng Cắt Mạch Điện`](https://github.com/banlinhkien/arduino/tree/main/1_Bo_KIT_Hoc_Tap_BLK_UNO_R3_Va_55_Mach_Dien_Tu_Co_Ban/BLKLab_02_Linh%20Ki%E1%BB%87n%20%C4%90%C3%B3ng%20C%E1%BA%AFt%20M%E1%BA%A1ch%20%C4%90i%E1%BB%87n) (Switching circuits), [`1_Bo_KIT_Hoc_Tap_BLK_UNO_R3_Va_55_Mach_Dien_Tu_Co_Ban/BLKLab_05_ Vi Mạch Tương Tự`](https://github.com/banlinhkien/arduino/tree/main/1_Bo_KIT_Hoc_Tap_BLK_UNO_R3_Va_55_Mach_Dien_Tu_Co_Ban/BLKLab_05_%20Vi%20M%E1%BA%A1ch%20T%C6%B0%C6%A1ng%20T%E1%BB%B1) (Analog electronics)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_curriculum["Learning curriculum"]
  node_fundamentals["Circuit fundamentals"]
  node_switching["Switching circuits"]
  node_analog["Analog electronics"]
  node_digital["Digital electronics"]
  node_opto["Optoelectronics"]
  node_arduino_lessons["Arduino lessons"]
end

subgraph group_projects["Kit projects"]
  node_uno_projects["UNO projects"]
  node_rfid_projects["RFID kit projects"]
  node_plus_clock["LED matrix clock"]
end

subgraph group_libraries["Reusable code"]
  node_ledcontrol["LED control driver<br/>[LedControl.cpp]"]
  node_delay["Nonblocking delay<br/>[Delay.cpp]"]
  node_fft["Complex FFT<br/>[kiss_fft.c]"]
  node_real_fft["Real FFT<br/>[kiss_fftr.c]"]
  node_cq_kernel["Constant-Q kernels<br/>[cq_kernel.c]"]
  node_button_helper["Button handler<br/>[mybutton.h]"]
end

subgraph group_combos["Embedded combos"]
  node_gas_esp32["ESP32 gas combo"]
  node_gas_arduino["Arduino gas combo"]
end

node_learner(("Learner"))
node_arduino_runtime(("Arduino runtime"))
node_max7219["MAX7219 display"]

node_learner -->|"studies"| node_fundamentals
node_learner -->|"studies"| node_arduino_lessons
node_fundamentals -.->|"progresses to"| node_switching
node_switching -.->|"progresses to"| node_analog
node_analog -.->|"progresses to"| node_digital
node_digital -.->|"progresses to"| node_opto
node_opto -.->|"progresses to"| node_arduino_lessons
node_arduino_lessons -->|"introduces"| node_uno_projects
node_learner -->|"builds"| node_rfid_projects
node_learner -->|"builds"| node_plus_clock
node_plus_clock -.->|"uses"| node_ledcontrol
node_ledcontrol -->|"sends display data"| node_max7219
node_delay -->|"reads millis"| node_arduino_runtime
node_real_fft -->|"calls"| node_fft
node_cq_kernel -->|"generates kernels"| node_real_fft
node_learner -->|"builds"| node_gas_esp32
node_learner -->|"builds"| node_gas_arduino

click node_fundamentals "https://github.com/banlinhkien/arduino/tree/main/1_Bo_KIT_Hoc_Tap_BLK_UNO_R3_Va_55_Mach_Dien_Tu_Co_Ban/BLKLab_01_Linh%20Ki%E1%BB%87n%20Th%E1%BB%A5%20%C4%90%E1%BB%99ng"
click node_switching "https://github.com/banlinhkien/arduino/tree/main/1_Bo_KIT_Hoc_Tap_BLK_UNO_R3_Va_55_Mach_Dien_Tu_Co_Ban/BLKLab_02_Linh%20Ki%E1%BB%87n%20%C4%90%C3%B3ng%20C%E1%BA%AFt%20M%E1%BA%A1ch%20%C4%90i%E1%BB%87n"
click node_analog "https://github.com/banlinhkien/arduino/tree/main/1_Bo_KIT_Hoc_Tap_BLK_UNO_R3_Va_55_Mach_Dien_Tu_Co_Ban/BLKLab_05_%20Vi%20M%E1%BA%A1ch%20T%C6%B0%C6%A1ng%20T%E1%BB%B1"
click node_digital "https://github.com/banlinhkien/arduino/tree/main/1_Bo_KIT_Hoc_Tap_BLK_UNO_R3_Va_55_Mach_Dien_Tu_Co_Ban/BLKLab_06_Vi%20M%E1%BA%A1ch%20S%E1%BB%91"
click node_opto "https://github.com/banlinhkien/arduino/tree/main/1_Bo_KIT_Hoc_Tap_BLK_UNO_R3_Va_55_Mach_Dien_Tu_Co_Ban/BLKLab_07_Quang%20%C4%90i%E1%BB%87n%20T%E1%BB%AD"
click node_arduino_lessons "https://github.com/banlinhkien/arduino/tree/main/1_Bo_KIT_Hoc_Tap_BLK_UNO_R3_Va_55_Mach_Dien_Tu_Co_Ban/BLKLab_08_Vi%20%C4%90i%E1%BB%81u%20Khi%E1%BB%83n%20V%C3%A0%20C%E1%BA%A3m%20Bi%E1%BA%BFn"
click node_uno_projects "https://github.com/banlinhkien/arduino/tree/main/1_Bo_KIT_Hoc_Tap_BLK_UNO_R3_Va_55_Mach_Dien_Tu_Co_Ban/BLKLab_08_Vi%20%C4%90i%E1%BB%81u%20Khi%E1%BB%83n%20V%C3%A0%20C%E1%BA%A3m%20Bi%E1%BA%BFn"
click node_rfid_projects "https://github.com/banlinhkien/arduino/tree/main/2_Bo_KIT_Hoc_Tap_BLK_UNO_R3_RFID"
click node_plus_clock "https://github.com/banlinhkien/arduino/tree/main/3_Bo_KIT_Hoc_Tap_BLK_UNO_R3_PLus/5_BLKLab_TOP10_Plus_Projects/BLKLab_PRJ07_DIY_Dong_Ho_Cat_Dung_LED_Matrix"
click node_ledcontrol "https://github.com/banlinhkien/arduino/blob/main/3_Bo_KIT_Hoc_Tap_BLK_UNO_R3_PLus/5_BLKLab_TOP10_Plus_Projects/BLKLab_PRJ07_DIY_Dong_Ho_Cat_Dung_LED_Matrix/BLKLab_Tai_Lieu_Code/BLKLab_Code/LedControl.cpp"
click node_delay "https://github.com/banlinhkien/arduino/blob/main/3_Bo_KIT_Hoc_Tap_BLK_UNO_R3_PLus/5_BLKLab_TOP10_Plus_Projects/BLKLab_PRJ07_DIY_Dong_Ho_Cat_Dung_LED_Matrix/BLKLab_Tai_Lieu_Code/BLKLab_Code/Delay.cpp"
click node_fft "https://github.com/banlinhkien/arduino/blob/main/5_Thu_Vien_Du_An_Arduino_BLKLab/BLKLab_Tao_Hieu_Ung_Song_Theo_Nhac_Voi_ESP32OLED/kiss_fft.c"
click node_real_fft "https://github.com/banlinhkien/arduino/blob/main/5_Thu_Vien_Du_An_Arduino_BLKLab/BLKLab_Tao_Hieu_Ung_Song_Theo_Nhac_Voi_ESP32OLED/kiss_fftr.c"
click node_cq_kernel "https://github.com/banlinhkien/arduino/blob/main/5_Thu_Vien_Du_An_Arduino_BLKLab/BLKLab_Tao_Hieu_Ung_Song_Theo_Nhac_Voi_ESP32OLED/cq_kernel.c"
click node_gas_esp32 "https://github.com/banlinhkien/arduino/tree/main/5_Thu_Vien_Du_An_Arduino_BLKLab/BLKLab_Combo_Mach_Phat_Hien_Ro_Ri_Khi_Gas/BLK_Lab_Combo_Mach_Phat_Hien_Ro_Ri_Khi_Gas_ESP32"
click node_button_helper "https://github.com/banlinhkien/arduino/blob/main/5_Thu_Vien_Du_An_Arduino_BLKLab/BLKLab_Thung_Rac_Thong_Minh_Biet_Noi_Ghi_Am_Thay_Doi_Giong_Noi_V2/mybutton.h"
click node_gas_arduino "https://github.com/banlinhkien/arduino/tree/main/5_Thu_Vien_Du_An_Arduino_BLKLab/BLKLab_Combo_Mach_Phat_Hien_Ro_Ri_Khi_Gas"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_fundamentals,node_switching,node_analog,node_digital,node_opto,node_arduino_lessons toneBlue
class node_uno_projects,node_rfid_projects,node_plus_clock toneAmber
class node_ledcontrol,node_delay,node_fft,node_real_fft,node_cq_kernel,node_button_helper toneMint
class node_gas_esp32,node_gas_arduino toneRose
class node_learner,node_arduino_runtime,node_max7219 toneIndigo
```

## Components

### Learning curriculum

- [Circuit fundamentals](https://github.com/banlinhkien/arduino/tree/main/1_Bo_KIT_Hoc_Tap_BLK_UNO_R3_Va_55_Mach_Dien_Tu_Co_Ban/BLKLab_01_Linh%20Ki%E1%BB%87n%20Th%E1%BB%A5%20%C4%90%E1%BB%99ng): `1_Bo_KIT_Hoc_Tap_BLK_UNO_R3_Va_55_Mach_Dien_Tu_Co_Ban/BLKLab_01_Linh Kiện Thụ Động`
- [Switching circuits](https://github.com/banlinhkien/arduino/tree/main/1_Bo_KIT_Hoc_Tap_BLK_UNO_R3_Va_55_Mach_Dien_Tu_Co_Ban/BLKLab_02_Linh%20Ki%E1%BB%87n%20%C4%90%C3%B3ng%20C%E1%BA%AFt%20M%E1%BA%A1ch%20%C4%90i%E1%BB%87n): `1_Bo_KIT_Hoc_Tap_BLK_UNO_R3_Va_55_Mach_Dien_Tu_Co_Ban/BLKLab_02_Linh Kiện Đóng Cắt Mạch Điện`
- [Analog electronics](https://github.com/banlinhkien/arduino/tree/main/1_Bo_KIT_Hoc_Tap_BLK_UNO_R3_Va_55_Mach_Dien_Tu_Co_Ban/BLKLab_05_%20Vi%20M%E1%BA%A1ch%20T%C6%B0%C6%A1ng%20T%E1%BB%B1): `1_Bo_KIT_Hoc_Tap_BLK_UNO_R3_Va_55_Mach_Dien_Tu_Co_Ban/BLKLab_05_ Vi Mạch Tương Tự`
- [Digital electronics](https://github.com/banlinhkien/arduino/tree/main/1_Bo_KIT_Hoc_Tap_BLK_UNO_R3_Va_55_Mach_Dien_Tu_Co_Ban/BLKLab_06_Vi%20M%E1%BA%A1ch%20S%E1%BB%91): `1_Bo_KIT_Hoc_Tap_BLK_UNO_R3_Va_55_Mach_Dien_Tu_Co_Ban/BLKLab_06_Vi Mạch Số`
- [Optoelectronics](https://github.com/banlinhkien/arduino/tree/main/1_Bo_KIT_Hoc_Tap_BLK_UNO_R3_Va_55_Mach_Dien_Tu_Co_Ban/BLKLab_07_Quang%20%C4%90i%E1%BB%87n%20T%E1%BB%AD): `1_Bo_KIT_Hoc_Tap_BLK_UNO_R3_Va_55_Mach_Dien_Tu_Co_Ban/BLKLab_07_Quang Điện Tử`
- [Arduino lessons](https://github.com/banlinhkien/arduino/tree/main/1_Bo_KIT_Hoc_Tap_BLK_UNO_R3_Va_55_Mach_Dien_Tu_Co_Ban/BLKLab_08_Vi%20%C4%90i%E1%BB%81u%20Khi%E1%BB%83n%20V%C3%A0%20C%E1%BA%A3m%20Bi%E1%BA%BFn): `1_Bo_KIT_Hoc_Tap_BLK_UNO_R3_Va_55_Mach_Dien_Tu_Co_Ban/BLKLab_08_Vi Điều Khiển Và Cảm Biến`

### Kit projects

- [UNO projects](https://github.com/banlinhkien/arduino/tree/main/1_Bo_KIT_Hoc_Tap_BLK_UNO_R3_Va_55_Mach_Dien_Tu_Co_Ban/BLKLab_08_Vi%20%C4%90i%E1%BB%81u%20Khi%E1%BB%83n%20V%C3%A0%20C%E1%BA%A3m%20Bi%E1%BA%BFn): `1_Bo_KIT_Hoc_Tap_BLK_UNO_R3_Va_55_Mach_Dien_Tu_Co_Ban/BLKLab_08_Vi Điều Khiển Và Cảm Biến`
- [RFID kit projects](https://github.com/banlinhkien/arduino/tree/main/2_Bo_KIT_Hoc_Tap_BLK_UNO_R3_RFID): `2_Bo_KIT_Hoc_Tap_BLK_UNO_R3_RFID`
- [LED matrix clock](https://github.com/banlinhkien/arduino/tree/main/3_Bo_KIT_Hoc_Tap_BLK_UNO_R3_PLus/5_BLKLab_TOP10_Plus_Projects/BLKLab_PRJ07_DIY_Dong_Ho_Cat_Dung_LED_Matrix): `3_Bo_KIT_Hoc_Tap_BLK_UNO_R3_PLus/5_BLKLab_TOP10_Plus_Projects/BLKLab_PRJ07_DIY_Dong_Ho_Cat_Dung_LED_Matrix`

### Reusable code

- [LED control driver](https://github.com/banlinhkien/arduino/blob/main/3_Bo_KIT_Hoc_Tap_BLK_UNO_R3_PLus/5_BLKLab_TOP10_Plus_Projects/BLKLab_PRJ07_DIY_Dong_Ho_Cat_Dung_LED_Matrix/BLKLab_Tai_Lieu_Code/BLKLab_Code/LedControl.cpp): `3_Bo_KIT_Hoc_Tap_BLK_UNO_R3_PLus/5_BLKLab_TOP10_Plus_Projects/BLKLab_PRJ07_DIY_Dong_Ho_Cat_Dung_LED_Matrix/BLKLab_Tai_Lieu_Code/BLKLab_Code/LedControl.cpp`
- [Nonblocking delay](https://github.com/banlinhkien/arduino/blob/main/3_Bo_KIT_Hoc_Tap_BLK_UNO_R3_PLus/5_BLKLab_TOP10_Plus_Projects/BLKLab_PRJ07_DIY_Dong_Ho_Cat_Dung_LED_Matrix/BLKLab_Tai_Lieu_Code/BLKLab_Code/Delay.cpp): `3_Bo_KIT_Hoc_Tap_BLK_UNO_R3_PLus/5_BLKLab_TOP10_Plus_Projects/BLKLab_PRJ07_DIY_Dong_Ho_Cat_Dung_LED_Matrix/BLKLab_Tai_Lieu_Code/BLKLab_Code/Delay.cpp`
- [Complex FFT](https://github.com/banlinhkien/arduino/blob/main/5_Thu_Vien_Du_An_Arduino_BLKLab/BLKLab_Tao_Hieu_Ung_Song_Theo_Nhac_Voi_ESP32OLED/kiss_fft.c): `5_Thu_Vien_Du_An_Arduino_BLKLab/BLKLab_Tao_Hieu_Ung_Song_Theo_Nhac_Voi_ESP32OLED/kiss_fft.c`
- [Real FFT](https://github.com/banlinhkien/arduino/blob/main/5_Thu_Vien_Du_An_Arduino_BLKLab/BLKLab_Tao_Hieu_Ung_Song_Theo_Nhac_Voi_ESP32OLED/kiss_fftr.c): `5_Thu_Vien_Du_An_Arduino_BLKLab/BLKLab_Tao_Hieu_Ung_Song_Theo_Nhac_Voi_ESP32OLED/kiss_fftr.c`
- [Constant-Q kernels](https://github.com/banlinhkien/arduino/blob/main/5_Thu_Vien_Du_An_Arduino_BLKLab/BLKLab_Tao_Hieu_Ung_Song_Theo_Nhac_Voi_ESP32OLED/cq_kernel.c): `5_Thu_Vien_Du_An_Arduino_BLKLab/BLKLab_Tao_Hieu_Ung_Song_Theo_Nhac_Voi_ESP32OLED/cq_kernel.c`
- [Button handler](https://github.com/banlinhkien/arduino/blob/main/5_Thu_Vien_Du_An_Arduino_BLKLab/BLKLab_Thung_Rac_Thong_Minh_Biet_Noi_Ghi_Am_Thay_Doi_Giong_Noi_V2/mybutton.h): `5_Thu_Vien_Du_An_Arduino_BLKLab/BLKLab_Thung_Rac_Thong_Minh_Biet_Noi_Ghi_Am_Thay_Doi_Giong_Noi_V2/mybutton.h`

### Embedded combos

- [ESP32 gas combo](https://github.com/banlinhkien/arduino/tree/main/5_Thu_Vien_Du_An_Arduino_BLKLab/BLKLab_Combo_Mach_Phat_Hien_Ro_Ri_Khi_Gas/BLK_Lab_Combo_Mach_Phat_Hien_Ro_Ri_Khi_Gas_ESP32): `5_Thu_Vien_Du_An_Arduino_BLKLab/BLKLab_Combo_Mach_Phat_Hien_Ro_Ri_Khi_Gas/BLK_Lab_Combo_Mach_Phat_Hien_Ro_Ri_Khi_Gas_ESP32`
- [Arduino gas combo](https://github.com/banlinhkien/arduino/tree/main/5_Thu_Vien_Du_An_Arduino_BLKLab/BLKLab_Combo_Mach_Phat_Hien_Ro_Ri_Khi_Gas): `5_Thu_Vien_Du_An_Arduino_BLKLab/BLKLab_Combo_Mach_Phat_Hien_Ro_Ri_Khi_Gas`

### Other components

- **Learner**
- **Arduino runtime**
- **MAX7219 display**

## Connections

- Learner → Circuit fundamentals: studies (evidence: `README.md`)
- Learner → Arduino lessons: studies (evidence: `README.md`)
- Circuit fundamentals → Switching circuits: progresses to
- Switching circuits → Analog electronics: progresses to
- Analog electronics → Digital electronics: progresses to
- Digital electronics → Optoelectronics: progresses to
- Optoelectronics → Arduino lessons: progresses to
- Arduino lessons → UNO projects: introduces (evidence: `README.md`)
- Learner → RFID kit projects: builds (evidence: `README.md`)
- Learner → LED matrix clock: builds (evidence: `README.md`)
- LED matrix clock → LED control driver: uses (evidence: `3_Bo_KIT_Hoc_Tap_BLK_UNO_R3_PLus/5_BLKLab_TOP10_Plus_Projects/BLKLab_PRJ07_DIY_Dong_Ho_Cat_Dung_LED_Matrix/BLKLab_Tai_Lieu_Code/BLKLab_Code/LedControl.cpp`)
- LED control driver → MAX7219 display: sends display data (evidence: `3_Bo_KIT_Hoc_Tap_BLK_UNO_R3_PLus/5_BLKLab_TOP10_Plus_Projects/BLKLab_PRJ07_DIY_Dong_Ho_Cat_Dung_LED_Matrix/BLKLab_Tai_Lieu_Code/BLKLab_Code/LedControl.cpp`)
- Nonblocking delay → Arduino runtime: reads millis (evidence: `3_Bo_KIT_Hoc_Tap_BLK_UNO_R3_PLus/5_BLKLab_TOP10_Plus_Projects/BLKLab_PRJ07_DIY_Dong_Ho_Cat_Dung_LED_Matrix/BLKLab_Tai_Lieu_Code/BLKLab_Code/Delay.cpp`)
- Real FFT → Complex FFT: calls (evidence: `5_Thu_Vien_Du_An_Arduino_BLKLab/BLKLab_Tao_Hieu_Ung_Song_Theo_Nhac_Voi_ESP32OLED/kiss_fftr.c`)
- Constant-Q kernels → Real FFT: generates kernels (evidence: `5_Thu_Vien_Du_An_Arduino_BLKLab/BLKLab_Tao_Hieu_Ung_Song_Theo_Nhac_Voi_ESP32OLED/cq_kernel.c`)
- Learner → ESP32 gas combo: builds (evidence: `README.md`)
- Learner → Arduino gas combo: builds (evidence: `README.md`)
