
Visualisasi antarmuka di atas mendeskripsikan proyek servo_control_timer berbasis mikrokontroler ESP32 (DevKit). Sistem ini menggunakan pewaktu (timer) otomatis untuk mengendalikan pergerakan motor servo dan memantau nilainya secara terintegrasi.
Fungsi Utama Node
Trigger Sinyal Utama (const_run): Node boolean bernilai true (HIGH) yang berfungsi untuk mengaktifkan pewaktu agar terus berjalan.
Pewaktu Utama (timer_sweep): Node timer dengan mode Count Up bernilai target 5 detik (targetSec: 5). Node ini menghitung waktu secara berkala dan mengirimkan nilai ke beberapa node output secara bersamaan.
Loop Reset (delay_reset): Menerima input dari timer dan memberikan jeda waktu delay sebesar 1000 ms (1 detik) sebelum mengirim sinyal reset kembali ke node timer_sweep. Hal ini membuat perhitungan timer berulang secara otomatis (looping).
Penggerak Aktuator (servo_output): Mengontrol posisi Motor Servo pada Pin 13 ESP32.
Pemantau Visual (gauge_monitor & bulb):
Node Gauge Display memvisualisasikan nilai timer/sudut dalam bentuk pengukur analog bertingkat.
Node Light Bulb menyala (ILLUMINATED) sebagai indikator status bahwa sinyal keluaran dari timer sedang aktif.
Alur Kerja Sistem
Inisialisasi: Node const_run memicu input Run/Pause pada timer_sweep.
Hitung Maju: Timer mulai melakukan Count Up dari 0 hingga batas durasi target (5 detik).
Penyebaran Sinyal: Nilai/sinyal dari timer dialirkan secara langsung ke tiga jalur:
Menggerakkan sudut Servo Motor (Pin 13).
Menampilkan pembacaan angka secara real-time di Gauge Display.
Menyala-redupkan indikator Light Bulb.
Reset Otomatis: Ketika siklus timer tercapai, sinyal diteruskan ke Delay (1000 ms). Setelah jeda 1 detik berakhir, sinyal dialirkan ke port Reset milik timer_sweep untuk mengulang kembali proses perhitungan dari awal.
{
"name": "servo_control_timer",
"board": "esp32",
"nodes": [
{
"id": "const_run",
"type": "constant",
"position": {
"x": 63.30096844459281,
"y": 289.7386201532812
},
"data": {
"value": true
},
"measured": {
"width": 160,
"height": 106
},
"selected": false,
"dragging": false
},
{
"id": "timer_sweep",
"type": "timer",
"position": {
"x": 283.11852899366534,
"y": 169.29604136500777
},
"data": {
"mode": "up",
"value": 2591,
"currentTime": 2591,
"lastTick": 1788138018483,
"targetSec": 5
},
"measured": {
"width": 318,
"height": 201
},
"selected": false,
"dragging": false
},
{
"id": "delay_reset",
"type": "delay",
"position": {
"x": 297.46880829795754,
"y": 431.3044077949083
},
"data": {
"value": 0,
"pendingValue": 2551,
"targetTime": 1788138019483,
"delayMs": 1000
},
"measured": {
"width": 210,
"height": 154
},
"selected": false,
"dragging": false
},
{
"id": "servo_output",
"type": "servo",
"position": {
"x": 698.15427854415,
"y": 432.8162274555676
},
"data": {
"pin": "13",
"value": 180,
"lastWritten": 180
},
"measured": {
"width": 168,
"height": 161
},
"selected": false,
"dragging": false
},
{
"id": "gauge_monitor",
"type": "gauge",
"position": {
"x": 692.0671256872276,
"y": 105.89262642318025
},
"data": {
"value": 2551,
"max": 180
},
"measured": {
"width": 326,
"height": 294
},
"selected": false,
"dragging": false
},
{
"id": "bulb-1788137720747",
"type": "bulb",
"position": {
"x": 906.1576724673164,
"y": 440.36565200106224
},
"data": {
"value": 2551,
"pin": "0"
},
"measured": {
"width": 160,
"height": 148
},
"selected": true,
"dragging": false
}
],
"edges": [
{
"id": "e-const_run-timer_sweep-run",
"source": "const_run",
"target": "timer_sweep",
"targetHandle": "run"
},
{
"id": "e-timer_sweep-delay_reset-default",
"source": "timer_sweep",
"target": "delay_reset",
"targetHandle": "default"
},
{
"id": "e-delay_reset-timer_sweep-reset",
"source": "delay_reset",
"target": "timer_sweep",
"targetHandle": "reset"
},
{
"id": "e-timer_sweep-servo_output-default",
"source": "timer_sweep",
"target": "servo_output",
"targetHandle": "default"
},
{
"id": "e-timer_sweep-gauge_monitor-default",
"source": "timer_sweep",
"target": "gauge_monitor",
"targetHandle": "default"
},
{
"style": {
"strokeWidth": 2,
"stroke": "#8496b0"
},
"source": "timer_sweep",
"sourceHandle": "default",
"target": "bulb-1788137720747",
"targetHandle": "default",
"id": "xy-edge__timer_sweepdefault-bulb-1788137720747default"
}
]
}
Buka Arduflow IDE sekarang dan implementasikan logika program di atas tanpa ribet!