Arduino WebDigitalPins Example Hướng dẫn Giao diện Điều khiển Digital Pin

Tổng quan

Example WebDigitalPins cung cấp giao diện web để điều khiển và giám sát tất cả các digital pin trên Arduino của bạn. Được thiết kế cho Arduino Uno R4 WiFi và nền tảng giáo dục DIYables STEM V4 IoT với khả năng GPIO nâng cao, cấu hình pin mở rộng, và tính năng giáo dục tích hợp để học điện tử số. Bạn có thể bật/tắt pin, giám sát trạng thái thời gian thực, và thực hiện các thao tác hàng loạt thông qua giao diện web trực quan.

Arduino webdigitalpins example - hướng dẫn giao diện Điều khiển digital pin

Tính năng

  • Điều khiển Pin Riêng lẻ: Điều khiển từng digital pin (0-13) riêng biệt
  • Trạng thái Thời gian thực: Giám sát trạng thái pin với chỉ báo trực quan
  • Thao tác Hàng loạt: Điều khiển tất cả pin cùng lúc (Tất cả BẬT, Tất cả TẮT, Đảo tất cả)
  • Cấu hình Pin: Thiết lập pin là Input hoặc Output qua giao diện web
  • Phản hồi Trực quan: Nút có mã màu hiển thị trạng thái pin (xanh lá=BẬT, đỏ=TẮT)
  • Thiết kế Responsive: Hoạt động trên desktop, tablet và thiết bị di động
  • Giao tiếp WebSocket: Cập nhật tức thì không cần tải lại trang
  • Mở rộng Nền tảng: Hiện tại được triển khai cho Arduino Uno R4 WiFi, nhưng có thể mở rộng cho các nền tảng phần cứng khác. Xem DIYables_WebApps_ESP32

Phần cứng Cần thiết

1×Arduino UNO R4 WiFi
1×Alternatively, DIYables STEM V4 IoT
1×(Tùy chọn) DIYables STEM V4 IoT
1×Cáp USB Type-C
1×(Khuyến nghị) Screw Terminal Block Shield for Arduino UNO R4
1×(Khuyến nghị) Breadboard Shield for Arduino UNO R4
1×(Khuyến nghị) Enclosure for Arduino UNO R4
1×(Khuyến nghị) Power Splitter for Arduino UNO R4
1×(Khuyến nghị) Prototyping Base Plate & Breadboard Kit for Arduino UNO

Or you can buy the following kits:

1×DIYables STEM V4 IoT Starter Kit (Arduino included)
1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)

Hướng dẫn Cài đặt

Các Bước Nhanh

Làm theo các hướng dẫn này từng bước:

  • Mới sử dụng Arduino Uno R4 WiFi? Hãy bắt đầu với hướng dẫn Arduino UNO R4 - Cài Đặt Phần Mềm để học các kiến thức cơ bản trước.
  • Kết nối board Arduino Uno R4/DIYables STEM V4 IoT với máy tính bằng cáp USB.
  • Khởi động Arduino IDE trên máy tính của bạn.
  • Chọn board Arduino Uno R4 phù hợp (ví dụ: Arduino Uno R4 WiFi) và cổng COM.
  • Chuyển đến biểu tượng Libraries ở thanh bên trái của Arduino IDE.
  • Tìm kiếm "DIYables WebApps", sau đó tìm thư viện DIYables WebApps của DIYables
  • Nhấp nút Install để cài đặt thư viện.
Arduino UNO R4 diyables webapps thư viện
  • Bạn sẽ được yêu cầu cài đặt một số thư viện phụ thuộc khác
  • Nhấp nút Install All để cài đặt tất cả thư viện phụ thuộc.
Arduino UNO R4 diyables webapps dependency
  • Trên Arduino IDE, đi đến File Examples DIYables WebApps WebDigitalPins example, hoặc copy code trên và paste vào editor của Arduino IDE
/* * DIYables WebApp Library - Web Digital Pins Example * * This example demonstrates the Web Digital Pins feature with automatic command handling: * - Control output pins 0-13 via web interface * - Monitor input pins 0-13 in real-time * - Individual pin ON/OFF control for outputs * - Real-time pin status feedback for inputs * - Bulk operations (All ON, All OFF, Toggle All) for outputs * * Hardware: Arduino Uno R4 WiFi or DIYables STEM V4 IoT * * Setup: * 1. Update WiFi credentials below * 2. Upload the sketch to your Arduino * 3. Open Serial Monitor to see the IP address * 4. Navigate to http://[IP_ADDRESS]/webdigitalpins */ #include <DIYablesWebApps.h> // WiFi credentials - UPDATE THESE WITH YOUR NETWORK const char WIFI_SSID[] = "YOUR_WIFI_SSID"; const char WIFI_PASSWORD[] = "YOUR_WIFI_PASSWORD"; // Create WebApp server and page instances using platform abstraction UnoR4ServerFactory serverFactory; DIYablesWebAppServer webAppsServer(serverFactory, 80, 81); DIYablesHomePage homePage; DIYablesWebDigitalPinsPage webDigitalPinsPage; // Array to store the state of each digital pin (0-13). Index corresponds to pin number. int pinStates[16] = { 0 }; // Initialize all states to LOW (0) void setup() { Serial.begin(9600); delay(1000); Serial.println("DIYables WebApp - Web Digital Pins Example"); // Add home and digital pins pages webAppsServer.addApp(&homePage); webAppsServer.addApp(&webDigitalPinsPage); // Optional: Add 404 page for better user experience webAppsServer.setNotFoundPage(DIYablesNotFoundPage()); // Pin Configuration Examples: // Method 1: Enable specific pins individually for output control webDigitalPinsPage.enablePin(0, WEB_PIN_OUTPUT); // Enable pin 0 (TX - use with caution) webDigitalPinsPage.enablePin(1, WEB_PIN_OUTPUT); // Enable pin 1 (RX - use with caution) webDigitalPinsPage.enablePin(2, WEB_PIN_OUTPUT); webDigitalPinsPage.enablePin(3, WEB_PIN_OUTPUT); webDigitalPinsPage.enablePin(4, WEB_PIN_OUTPUT); //webDigitalPinsPage.enablePin(5, WEB_PIN_OUTPUT); // Comment/uncomment to disable/enable //webDigitalPinsPage.enablePin(6, WEB_PIN_OUTPUT); // Comment/uncomment to disable/enable webDigitalPinsPage.enablePin(13, WEB_PIN_OUTPUT); // Enable pin 13 (built-in LED) // Method 2: Enable pins for input monitoring webDigitalPinsPage.enablePin(8, WEB_PIN_INPUT); webDigitalPinsPage.enablePin(9, WEB_PIN_INPUT); //webDigitalPinsPage.enablePin(10, WEB_PIN_INPUT); // Comment/uncomment to disable/enable //webDigitalPinsPage.enablePin(11, WEB_PIN_INPUT); // Comment/uncomment to disable/enable // Method 3: Enable all pins at once (uncomment to use) // for (int pin = 0; pin <= 13; pin++) { // webDigitalPinsPage.enablePin(pin, WEB_PIN_OUTPUT); // or WEB_PIN_INPUT as needed // } // Method 4: Enable pins in a range using for loop (uncomment to use) // for (int pin = 7; pin <= 11; pin++) { // webDigitalPinsPage.enablePin(pin, WEB_PIN_OUTPUT); // or WEB_PIN_INPUT as needed // } // Initialize enabled pins int outputPins[] = { 0, 1, 2, 3, 4, 13 }; // Note: Pins 0,1 are TX/RX - use with caution for (int i = 0; i < 6; i++) { int pin = outputPins[i]; pinMode(pin, OUTPUT); digitalWrite(pin, LOW); pinStates[pin] = LOW; } int inputPins[] = { 8, 9 }; for (int i = 0; i < 2; i++) { int pin = inputPins[i]; pinMode(pin, INPUT); // Use INPUT_PULLUP if needed pinStates[pin] = digitalRead(pin); } // Start the WebApp server if (!webAppsServer.begin(WIFI_SSID, WIFI_PASSWORD)) { while (1) { Serial.println("Failed to start WebApp server!"); delay(1000); } } // Return the current state to display on Web App webDigitalPinsPage.onPinRead([](int pin) { return pinStates[pin]; // Return the current state of the pin // You can implement custom read logic here if needed }); // Handle the control request from Web App (for output pins) webDigitalPinsPage.onPinWrite([](int pin, int state) { digitalWrite(pin, state); pinStates[pin] = state; // You can implement custom control logic here if needed }); // Handle pin mode change requests (optional) webDigitalPinsPage.onPinModeChange([](int pin, int mode) { if (mode == WEB_PIN_OUTPUT) { pinMode(pin, OUTPUT); digitalWrite(pin, LOW); pinStates[pin] = LOW; } else if (mode == WEB_PIN_INPUT) { pinMode(pin, INPUT); // or INPUT_PULLUP as needed pinStates[pin] = digitalRead(pin); } // You can implement custom mode change logic here if needed }); } void loop() { // Handle WebApp server communications webAppsServer.loop(); // Monitor input pins for real-time updates static unsigned long lastInputCheck = 0; if (millis() - lastInputCheck > 100) { // Check every 100ms lastInputCheck = millis(); // Check input pins for changes and send real-time updates int inputPins[] = { 8, 9 }; for (int i = 0; i < 2; i++) { int pin = inputPins[i]; int currentState = digitalRead(pin); if (currentState != pinStates[pin]) { pinStates[pin] = currentState; // Send real-time update to web clients webDigitalPinsPage.updatePinState(pin, currentState); } } } // Add your main application code here delay(10); }
  • Cấu hình thông tin WiFi trong code bằng cách cập nhật các dòng này:
const char WIFI_SSID[] = "YOUR_WIFI_NETWORK"; const char WIFI_PASSWORD[] = "YOUR_WIFI_PASSWORD";
  • Nhấp nút Upload trên Arduino IDE để upload code lên Arduino UNO R4/DIYables STEM V4 IoT
  • Mở Serial Monitor
  • Kiểm tra kết quả trên Serial Monitor. Nó sẽ hiển thị như bên dưới
COM6
Send
WebSocket client connected from: 192.168.0.5 New WebSocket connection established WebSocket message received: SLIDER:GET_VALUES WebSocket client connected from: 192.168.0.5 New WebSocket connection established WebSocket message received: SLIDER:64,128 DIYables WebApp - Web Digital Pins Example INFO: Added app / INFO: Added app /web-digital-pins DEBUG: Enabling pin 0 with mode OUTPUT DEBUG: Enabling pin 1 with mode OUTPUT DEBUG: Enabling pin 2 with mode OUTPUT DEBUG: Enabling pin 3 with mode OUTPUT DEBUG: Enabling pin 4 with mode OUTPUT DEBUG: Enabling pin 13 with mode OUTPUT DEBUG: Enabling pin 8 with mode INPUT DEBUG: Enabling pin 9 with mode INPUT DIYables WebApp Library Platform: Arduino Uno R4 WiFi Network connected! IP address: 192.168.0.2 HTTP server started on port 80 Configuring WebSocket server callbacks... WebSocket server started on port 81 WebSocket URL: ws://192.168.0.2:81 WebSocket server started on port 81 ========================================== DIYables WebApp Ready! ========================================== 📱 Web Interface: http://192.168.0.2 🔗 WebSocket: ws://192.168.0.2:81 📋 Available Applications: 🏠 Home Page: http://192.168.0.2/ 📟 Digital Pins: http://192.168.0.2/web-digital-pins ==========================================
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Nếu bạn không thấy gì, hãy khởi động lại board Arduino.
  • Ghi nhớ địa chỉ IP hiển thị, và nhập địa chỉ này vào thanh địa chỉ của trình duyệt web trên smartphone hoặc PC.
  • Ví dụ: http://192.168.0.2
  • Bạn sẽ thấy trang chủ như hình dưới:
Arduino UNO R4 diyables webapp home page with web digital pins app
  • Nhấp vào link Web Digital Pins, bạn sẽ thấy giao diện ứng dụng Web Digital Pins như bên dưới:
Arduino UNO R4 diyables webapp web digital pins app
  • Hoặc bạn cũng có thể truy cập trang trực tiếp bằng địa chỉ IP theo sau bởi /web-digital-pins. Ví dụ: http://192.168.0.2/web-digital-pins
  • Thử điều khiển các digital pin bằng cách nhấp vào các nút pin để bật/tắt chúng và quan sát LED tích hợp (pin 13) phản hồi theo lệnh của bạn.

Tùy chỉnh Sáng tạo - Điều chỉnh Code cho Dự án của Bạn

Example hiển thị các cách khác nhau để cấu hình pin phù hợp với nhu cầu dự án sáng tạo của bạn:

2. Cấu hình Thiết lập Pin

Example hiển thị các cách khác nhau để cấu hình pin:

Phương pháp 1: Kích hoạt Pin Cụ thể

// Kích hoạt từng pin riêng lẻ để điều khiển output webDigitalPinsPage.enablePin(2, WEB_PIN_OUTPUT); // Pin 2 như output webDigitalPinsPage.enablePin(3, WEB_PIN_OUTPUT); // Pin 3 như output webDigitalPinsPage.enablePin(4, WEB_PIN_INPUT); // Pin 4 như input

Phương pháp 2: Kích hoạt Dải Pin

// Kích hoạt một dải pin để điều khiển output webDigitalPinsPage.enableOutputPins(2, 13); // Pin 2-13 như output

Phương pháp 3: Kích hoạt Tất cả Pin

// Kích hoạt tất cả pin 0-13 để điều khiển (cẩn thận với pin 0,1) webDigitalPinsPage.enableAllPins();

4. Upload Sketch

  1. Chọn board Arduino: Tools → Board → Arduino UNO R4 WiFi
  2. Chọn cổng đúng: Tools → Port → [Cổng Arduino của bạn]
  3. Nhấp nút Upload

5. Lấy địa chỉ IP

  1. Mở Tools → Serial Monitor
  2. Đặt baud rate thành 9600
  3. Chờ Arduino kết nối WiFi
  4. Ghi nhớ địa chỉ IP hiển thị (ví dụ: 192.168.1.100)

6. Truy cập Giao diện Digital Pins

Mở trình duyệt web và điều hướng đến:

http://[ARDUINO_IP_ADDRESS]/digital-pins

Ví dụ: http://192.168.1.100/digital-pins

Cách Sử dụng

Giao diện Điều khiển Pin

Giao diện web hiển thị tất cả pin đã cấu hình với:

  • Số Pin: Hiển thị pin Arduino nào (0-13)
  • Trạng thái Hiện tại: Chỉ báo BẬT (xanh lá) hoặc TẮT (đỏ)
  • Nút Điều khiển: Nhấp để chuyển đổi trạng thái pin
  • Loại Pin: Hiển thị nếu được cấu hình là Input hoặc Output

Điều khiển Pin Riêng lẻ

  1. Bật Pin: Nhấp nút pin khi nó hiển thị "OFF"
  2. Tắt Pin: Nhấp nút pin khi nó hiển thị "ON"
  3. Giám sát Trạng thái: Các nút pin tự động cập nhật để hiển thị trạng thái hiện tại

Thao tác Hàng loạt

Sử dụng các nút điều khiển hàng loạt để điều khiển nhiều pin cùng lúc:

Tất cả BẬT

  • Bật tất cả output pin đã cấu hình lên trạng thái HIGH
  • Input pin không bị ảnh hưởng
  • Hữu ích để thử nghiệm tất cả thiết bị kết nối

Tất cả TẮT

  • Tắt tất cả output pin đã cấu hình xuống trạng thái LOW
  • Input pin không bị ảnh hưởng
  • Cách an toàn để vô hiệu hóa tất cả output

Đảo Tất cả

  • Đảo trạng thái của tất cả output pin
  • Pin BẬT trở thành TẮT, pin TẮT trở thành BẬT
  • Tạo hiệu ứng ánh sáng thú vị

Giám sát Thời gian thực

  • Trạng thái pin tự động cập nhật qua WebSocket
  • Các thay đổi thực hiện trong code được phản ánh trong giao diện web
  • Nhiều người dùng có thể giám sát cùng một Arduino đồng thời

Kết nối Phần cứng

Ví dụ Output Pin

Điều khiển LED

Arduino Pin → LED (với điện trở) → Ground Pin 2 → LED Anode → Điện trở 220Ω → Ground Pin 3 → LED Anode → Điện trở 220Ω → Ground

Điều khiển Relay

Arduino Pin → Relay Input Pin 4 → Relay IN1 Pin 5 → Relay IN2

Điều khiển Motor (qua Motor Driver)

Arduino Pin → Motor Driver Input Pin 6 → Motor Driver IN1 Pin 7 → Motor Driver IN2 Pin 9 → Motor Driver ENA (PWM)

Ví dụ Input Pin

Switch Input

Switch → Arduino Pin (với pull-up resistor) Switch → Pin 8 → Điện trở 10kΩ → 5V → GND

Sensor Input

Sensor Signal → Arduino Pin PIR Sensor → Pin 10 Ultrasonic → Pin 11 (Echo)

Tùy chỉnh Code

Thêm Callback Thay đổi Pin

Giám sát khi pin thay đổi trạng thái:

void setup() { // Đặt callback cho thay đổi trạng thái pin webDigitalPinsPage.onPinChange([](int pin, bool state) { Serial.print("Pin "); Serial.print(pin); Serial.print(" changed to: "); Serial.println(state ? "HIGH" : "LOW"); // Thêm logic tùy chỉnh của bạn ở đây if (pin == 13 && state == HIGH) { Serial.println("Built-in LED turned ON!"); } }); }

Khởi tạo Pin Tùy chỉnh

Đặt pin cụ thể về trạng thái mong muốn khi khởi động:

void setup() { // Khởi tạo pin về trạng thái cụ thể webDigitalPinsPage.setPinState(2, HIGH); // Bật pin 2 webDigitalPinsPage.setPinState(3, LOW); // Tắt pin 3 // Cấu hình chế độ pin pinMode(4, INPUT_PULLUP); // Pin 4 như input với pull-up pinMode(5, OUTPUT); // Pin 5 như output }

Đọc Input Pin

Giám sát input pin trong vòng lặp chính:

void loop() { static unsigned long lastRead = 0; if (millis() - lastRead > 1000) { // Đọc mỗi giây // Đọc input pin và cập nhật giao diện web for (int pin = 0; pin <= 13; pin++) { if (webDigitalPinsPage.isPinEnabled(pin) && webDigitalPinsPage.getPinMode(pin) == WEB_PIN_INPUT) { bool currentState = digitalRead(pin); webDigitalPinsPage.updatePinState(pin, currentState); } } lastRead = millis(); } }

Tính năng Nâng cao

Nhóm Pin

Tạo nhóm logic các pin cho các chức năng liên quan:

// Định nghĩa nhóm pin const int LED_PINS[] = {2, 3, 4, 5}; const int RELAY_PINS[] = {6, 7, 8, 9}; void controlLEDGroup(bool state) { for (int pin : LED_PINS) { webDigitalPinsPage.setPinState(pin, state); } } void controlRelayGroup(bool state) { for (int pin : RELAY_PINS) { webDigitalPinsPage.setPinState(pin, state); } }

Tạo Pattern

Tạo pattern ánh sáng hoặc chuỗi:

void runLightPattern() { static unsigned long lastChange = 0; static int currentPin = 2; if (millis() - lastChange > 500) { // Thay đổi mỗi 500ms // Tắt tất cả pin for (int pin = 2; pin <= 13; pin++) { webDigitalPinsPage.setPinState(pin, LOW); } // Bật pin hiện tại webDigitalPinsPage.setPinState(currentPin, HIGH); // Chuyển đến pin tiếp theo currentPin++; if (currentPin > 13) currentPin = 2; lastChange = millis(); } }

Tích hợp Điều khiển PWM

Kết hợp với điều khiển analog cho các tính năng nâng cao:

void setup() { // Kích hoạt digital pin để điều khiển bật/tắt webDigitalPinsPage.enablePin(9, WEB_PIN_OUTPUT); webDigitalPinsPage.enablePin(10, WEB_PIN_OUTPUT); // Đặt PWM pin để điều khiển độ sáng analogWrite(9, 128); // 50% độ sáng analogWrite(10, 255); // 100% độ sáng }

Cân nhắc An toàn

Hướng dẫn Sử dụng Pin

Pin 0 & 1 (TX/RX)

  • Được sử dụng cho giao tiếp Serial
  • Tránh sử dụng trừ khi thực sự cần thiết
  • Có thể gây cản trở lập trình và debug

Pin 13 (LED tích hợp)

  • An toàn để sử dụng cho thử nghiệm
  • LED tích hợp cung cấp phản hồi trực quan
  • Tốt cho thử nghiệm ban đầu

Pin 2-12

  • An toàn cho digital I/O tổng quát
  • Được khuyến nghị cho hầu hết ứng dụng
  • Không có cân nhắc đặc biệt

Giới hạn Dòng điện

Dòng điện Tối đa mỗi Pin: 40mA

  • Sử dụng điện trở hạn dòng với LED
  • Sử dụng transistor hoặc relay cho tải dòng cao
  • Cân nhắc tổng mức tiêu thụ dòng điện

Mức Điện áp: 3.3V logic

  • Arduino Uno R4 WiFi sử dụng logic 3.3V
  • Đảm bảo các thiết bị kết nối tương thích
  • Sử dụng level shifter cho thiết bị 5V nếu cần

Khắc phục Sự cố

Vấn đề Thường gặp

1. Pin không phản hồi

  • Kiểm tra pin đã được kích hoạt trong code
  • Xác minh kết nối phần cứng
  • Kiểm tra ngắn mạch
  • Xác nhận chế độ pin (INPUT/OUTPUT)

2. Giao diện web không cập nhật

  • Kiểm tra trạng thái kết nối WebSocket
  • Tải lại trang trình duyệt
  • Xác minh kết nối mạng
  • Kiểm tra Serial Monitor để biết lỗi

3. Thao tác hàng loạt không hoạt động

  • Đảm bảo pin được cấu hình là output
  • Kiểm tra giới hạn phần cứng
  • Xác minh khả năng nguồn cấp
  • Giám sát điều kiện quá dòng

4. Input pin hiển thị trạng thái sai

  • Kiểm tra điện trở pull-up/pull-down thích hợp
  • Xác minh mức tín hiệu đầu vào
  • Kiểm tra nhiễu điện từ
  • Xác nhận cấu hình pin

Mẹo Debug

Kích hoạt debug output:

void debugPinStates() { Serial.println("=== Pin States ==="); for (int pin = 0; pin <= 13; pin++) { if (webDigitalPinsPage.isPinEnabled(pin)) { Serial.print("Pin "); Serial.print(pin); Serial.print(": "); Serial.print(digitalRead(pin) ? "HIGH" : "LOW"); Serial.print(" ("); Serial.print(webDigitalPinsPage.getPinMode(pin) == WEB_PIN_OUTPUT ? "OUTPUT" : "INPUT"); Serial.println(")"); } } Serial.println("=================="); }

Ý tưởng Dự án

Tự động hóa Nhà

  • Điều khiển đèn phòng
  • Vận hành rèm cửa sổ
  • Điều khiển hệ thống sưởi/làm mát
  • Tích hợp hệ thống bảo mật

Tự động hóa Vườn

  • Điều khiển hệ thống tưới
  • Quản lý đèn trồng cây
  • Điều hòa nhiệt độ
  • Điều khiển độ ẩm

Điều khiển Xưởng

  • Điều khiển nguồn dụng cụ
  • Quản lý ánh sáng
  • Hệ thống thông gió
  • Khóa an toàn

Dự án Giáo dục

  • Trình diễn cổng logic
  • Mô phỏng đèn giao thông
  • Dự án hệ thống báo động
  • Thí nghiệm điều khiển từ xa

Ví dụ Tích hợp

Đèn Kích hoạt bởi Chuyển động

void setup() { webDigitalPinsPage.enablePin(2, WEB_PIN_OUTPUT); // LED webDigitalPinsPage.enablePin(3, WEB_PIN_INPUT); // PIR sensor pinMode(3, INPUT); } void loop() { if (digitalRead(3) == HIGH) { // Phát hiện chuyển động webDigitalPinsPage.setPinState(2, HIGH); // Bật LED delay(5000); // Giữ bật trong 5 giây webDigitalPinsPage.setPinState(2, LOW); // Tắt LED } }

Quạt Điều khiển theo Nhiệt độ

void loop() { float temperature = getTemperature(); // Hàm đọc nhiệt độ của bạn if (temperature > 25.0) { webDigitalPinsPage.setPinState(4, HIGH); // Bật quạt } else { webDigitalPinsPage.setPinState(4, LOW); // Tắt quạt } }

Bước tiếp theo

Sau khi thành thạo example WebDigitalPins, hãy thử:

  1. WebSlider - Cho điều khiển PWM và analog
  2. WebJoystick - Cho điều khiển theo hướng
  3. WebMonitor - Cho debug và giám sát
  4. MultipleWebApps - Kết hợp tất cả tính năng

Hỗ trợ

Để được hỗ trợ thêm:

  • Kiểm tra tài liệu API Reference
  • Truy cập hướng dẫn DIYables: https://newbiely.com/tutorials/arduino-uno-r4/arduino-uno-r4-diyables-webapps
  • Diễn đàn cộng đồng Arduino