Dari Coding Blok ke Arduino C++: Tabel Contekan dengan MicroPython
Tabel contekan dari coding blok ke Arduino C++: 34 baris blok beserta kode C++ dan MicroPython-nya, kesalahan umum, metode 4 langkah, dan satu program dalam tiga bentuk.
Cara tercepat untuk pindah dari coding blok ke Arduino C++ adalah menyimpan tabel satu halaman di dekatmu yang menunjukkan setiap blok menjadi baris kode asli yang mana. Jawaban singkatnya: blok bukan bahasa baru, melainkan bentuk visual dari baris-baris Arduino C++. Blok “atur pin 13 sebagai OUTPUT” adalah baris pinMode(13, OUTPUT);, blok “tunggu 1000 ms” adalah delay(1000);, dan blok “jika … lakukan” adalah pernyataan if. Tabel di bawah menyandingkan label asli blok-blok di aplikasi BlueGrays dengan kode Arduino C++-nya dan kode MicroPython-nya di Raspberry Pi Pico.
Halaman ini bukan pelajaran, melainkan lembar referensi. Kamu bisa mencetak tabelnya, menaruhnya di dekat meja, lalu mengecek baris mana yang cocok dengan blok mana sambil melihat sebuah proyek. Setelah tabel, kamu akan menemukan kesalahan yang paling sering dibuat orang ketika beralih, metode empat langkah untuk meninggalkan blok, dan program yang sama yang ditulis sebagai blok, C++, dan MicroPython. Contohnya bisa dikompilasi di Arduino IDE dan berjalan di Pico dengan Thonny.

Sebelum membaca tabel: empat perbedaan di antara ketiganya
Blok, C++, dan MicroPython menyampaikan ide yang sama, tapi aturan penulisannya berbeda. Di empat perbedaan inilah kamu paling sering tersandung. Yang pertama adalah struktur: program Arduino C++ punya dua bagian bernama setup() dan loop(), yang di blok muncul sebagai “setup (jalan sekali)” dan “ulangi selamanya”. MicroPython tidak punya setup terpisah; file berjalan sekali dari atas ke bawah, dan bagian yang berulang masuk ke dalam perulangan while True:. Yang kedua adalah tipe: di C++ setiap variabel punya tipe yang ditulis (int, float, bool), di blok itu adalah pilihan “deklarasikan bilangan bulat (int)”, dan di Python tipe sama sekali tidak ditulis.
Perbedaan ketiga adalah rentang angka. Di Arduino Uno pembacaan analog bernilai 0–1023 dan PWM 0–255; di ESP32 pembacaan analog sampai 0–4095; di Pico, MicroPython memberi pembacaan analog dan duty PWM sama-sama di rentang 0–65535. Karena itu kamu tidak bisa menyalin ambang dari satu board ke board lain begitu saja. Perbedaan keempat adalah satuan waktu: delay() menerima milidetik, time.sleep() menerima detik. Setengah detik ditulis delay(500) di C++ dan time.sleep(0.5) di MicroPython. Ingat empat aturan ini, dan sebagian besar baris tabel akan langsung masuk akal dengan sendirinya.
- Angka di tabel hanyalah contoh: kalau sebuah blok bertuliskan 13, proyekmu mungkin memakai 7, dan angka di baris kodenya ikut berubah.
- Pin di kolom MicroPython adalah nomor GP Pico (GP14, GP15, GP26). Nomornya tidak harus sama dengan nomor pin Uno; cek skema rangkaiannya.
- Baris bertanda “Tidak ada blok Pico” berarti blok itu tidak dipakai di proyek Pico; kode MicroPython yang melakukan tugas yang sama tetap diberikan.
- ESP32 juga diprogram dengan Arduino C++; kolom C++ berlaku juga untuknya, hanya rentang analog dan beberapa nomor pin yang berbeda.
Tabel referensi blok, Arduino C++, dan MicroPython
Tabel dibagi menjadi 12 kelompok: struktur program, pin, waktu, kondisi, perulangan, variabel, matematika, port serial, analog dan PWM, suara, servo, dan sensor. Teks di kolom Blok adalah label yang tercetak di blok di aplikasi, sedangkan “…” dan “?” menandai slot tempat blok lain dipasang. Kalau satu baris berisi lebih dari satu blok, blok-bloknya dipisahkan dengan titik.
| Kelompok | Blok (label di aplikasi) | Arduino C++ | MicroPython (Pico) |
|---|---|---|---|
| Struktur | setup (jalan sekali) | void setup() { … } | Baris-baris sebelum while True: |
| Struktur | ulangi selamanya | void loop() { … } | while True: (isinya menjorok 4 spasi) |
| Struktur | variabel global (paling atas) | Bagian atas file, sebelum setup() | Baris pertama setelah import |
| Struktur | fungsi blinkTwice | void blinkTwice() { … } · panggil: blinkTwice(); | def blinkTwice(): · panggil: blinkTwice() |
| Pin | atur pin 13 sebagai OUTPUT | pinMode(13, OUTPUT); | led = Pin(15, Pin.OUT) |
| Pin | atur pin 2 sebagai INPUT_PULLUP | pinMode(2, INPUT_PULLUP); | btn = Pin(14, Pin.IN, Pin.PULL_UP) |
| Pin | tulis HIGH ke pin 13 · tulis LOW ke pin 13 | digitalWrite(13, HIGH); · digitalWrite(13, LOW); | led.value(1) · led.value(0) (nyala · mati) |
| Pin | baca pin 2 | digitalRead(2) → HIGH (1) atau LOW (0) | btn.value() → 1 atau 0 |
| Pin (khusus Pico) | pin led : GP 14 , OUTPUT · nyalakan (on) / matikan (off) pin led | Sama dengan pinMode() + digitalWrite() | led = Pin(14, Pin.OUT) · led.on() / led.off() (nyala / mati) |
| Waktu | tunggu 1000 ms · tunggu 0.5 detik (Pico) | delay(1000); · delay(500); | time.sleep_ms(1000) · time.sleep(0.5) (milidetik · detik) |
| Waktu | tunggu 10 µs | delayMicroseconds(10); | time.sleep_us(10) |
| Waktu | milidetik sejak mulai | millis() (tipe unsigned long) | time.ticks_ms() |
| Kondisi | jika … lakukan … jika tidak, jika … jika tidak … | if (…) { … } else if (…) { … } else { … } | if …: · elif …: · else: |
| Kondisi | ? = ? (≠, <, ≤, >, ≥) | == != < <= > >= | == != < <= > >= |
| Kondisi | ? dan ? · ? atau ? · bukan ? | && · || · !x | and · or · not x |
| Perulangan | ulangi 3 kali lakukan | for (int i = 0; i < 3; i++) { … } | for i in range(3): |
| Perulangan | hitung dengan i dari 0 sampai 5 per 1 | for (i = 0; i <= 5; i++) (5 ikut, 6 putaran) | for i in range(0, 6): (6 tidak ikut) |
| Perulangan | ulangi selama | while (…) { … } | while …: |
| Perulangan | keluar dari perulangan | break; | break |
| Variabel | deklarasikan bilangan bulat (int) delayTime = 60 | int delayTime = 60; | delayTime = 60 (tipe tidak ditulis) |
| Variabel | deklarasikan desimal (float) voltage = 0.0 | float voltage = 0.0; | voltage = 0.0 |
| Variabel | atur x ke 0 · ubah x sebesar 1 | x = 0; · x += 1; (atau x++;) | x = 0 · x += 1 (tidak ada x++) |
| Variabel | array 2 3 4 · item 0 dari ledPins | int ledPins[] = {2, 3, 4}; · ledPins[0] | ledPins = [2, 3, 4] · ledPins[0] |
| Matematika | 1 + 1 (juga −, ×, ÷) | + - * / · dengan dua int 7 / 2 = 3 | + - * / · 7 / 2 = 3.5, pembagian bulat 7 // 2 = 3 |
| Matematika | sisa dari 10 ÷ 3 | 10 % 3 | 10 % 3 |
| Matematika | petakan x : 0 – 1023 → 0 – 255 | map(x, 0, 1023, 0, 255) | Tidak bawaan; tulis fungsi arduino_map() |
| Matematika | batasi 50 antara 0 dan 100 | constrain(50, 0, 100) | min(max(50, 0), 100) |
| Port serial | mulai serial di 9600 baud | Serial.begin(9600); | Tidak perlu, print() lewat USB |
| Port serial | cetak serial … baris baru · tanpa pindah baris | Serial.println(x); · Serial.print(x); | print(x) · print(x, end="") (tanpa pindah baris) |
| Analog dan PWM | baca analog A0 | analogRead(A0) → 0–1023 (0–4095 di ESP32) | ADC(26).read_u16() → 0–65535 |
| Analog dan PWM | tulis PWM 128 ke pin 9 · PWM led : GP 14 , frekuensi 1000 Hz (Pico) | analogWrite(9, 128); (0–255) | led = PWM(Pin(14)) · led.freq(1000) · led.duty_u16(32768) (rentang 0–65535) |
| Suara | mainkan 440 Hz di pin 8 · hentikan nada di pin 8 | tone(8, 440); · noTone(8); | Tidak ada blok Pico: bz = PWM(Pin(16)) · bz.freq(440) · bz.duty_u16(32768) · berhenti: bz.duty_u16(0) |
| Servo | pasang servo myServo ke pin 9 · putar servo myServo ke 90 derajat | #include <Servo.h> · Servo myServo; · myServo.attach(9); · myServo.write(90); (sudut 90°) | Tidak ada blok Pico: s = PWM(Pin(16)) · s.freq(50) · s.duty_ns(1500000) (sekitar 90°) |
| Sensor | lama pulsa HIGH di pin 12 (µs) | pulseIn(12, HIGH) | machine.time_pulse_us(Pin(12, Pin.IN), 1) |
Beberapa baris kelihatan satu lawan satu pada pandangan pertama, tapi perlu hati-hati. Di “hitung dengan i dari 0 sampai 5”, angka 5 ikut dihitung dan perulangan berjalan 6 kali; karena itu C++ memakai <= alih-alih <, dan Python butuh range(0, 6) karena range tidak mengikutkan angka akhirnya. Blok pembagian juga jebakan: ketika kamu membagi dua bilangan bulat, C++ membuang sisanya dan 7 / 2 menghasilkan 3, sedangkan Python menghasilkan 3.5. Untuk pembagian bulat ala C++ di Python, kamu memakai //. Fungsi map() di balik blok “petakan x” tidak tersedia bawaan di MicroPython; di contoh di bawah, fungsi arduino_map() dua baris melakukan perhitungan yang sama.
Bagaimana blok bersarang berubah menjadi kode?
Mengenal blok satu per satu belum cukup; keterampilan yang sebenarnya adalah mengubah blok bersarang menjadi satu baris. Untuk itu, bedakan dua bentuk. Blok yang bertumpuk ke bawah dengan takik di tepinya adalah perintah, dan masing-masing menjadi satu baris kode. Blok oval atau runcing yang dipasang ke slot blok lain adalah nilai; di kode, nilai berada di dalam tanda kurung, di sebelah kanan tanda sama dengan, atau di dalam kondisi. Baris-baris di bawah diambil dari proyek gratis Mengatur Frekuensi Buzzer: empat tombol menyalakan dan mematikan nada serta menaikkan atau menurunkan frekuensinya, yang dijaga di antara 50 dan 5000 Hz.
| Blok (Mengatur Frekuensi Buzzer) | Baris C++ | Aturan membaca |
|---|---|---|
| atur state ke 1 | state = 1; | Setiap blok perintah yang bertumpuk di bawah blok lain adalah satu baris dan diakhiri titik koma. |
| jika (baca pin btnOn = HIGH) lakukan … | if (digitalRead(btnOn) == HIGH) { … } | Blok nilai oval masuk ke dalam tanda kurung; perbandingan = di blok menjadi == di kode. |
| atur frequency ke (frequency + 50) | frequency = frequency + 50; | Blok bagian dalam dihitung lebih dulu, lalu hasilnya diserahkan ke blok luar. |
| atur frequency ke (batasi frequency antara 50 dan 5000) | frequency = constrain(frequency, 50, 5000); (dibatasi 50–5000) | Slot kosong sebuah blok adalah argumen yang dipisahkan koma di kode. |
| mainkan frequency Hz di pin buzzerPin | tone(buzzerPin, frequency); | Urutan di kode tetap: pin dulu, baru nilai. Urutan kata di blok bisa berbeda dari satu bahasa ke bahasa lain. |
| jika (state = 1) lakukan … jika tidak … | if (state == 1) { … } else { … } | Blok di mulut “lakukan” masuk ke { } pertama, blok di mulut “jika tidak” masuk ke else { }. |
Bangun satu kebiasaan sambil membaca tabel ini: terjemahkan blok paling dalam lebih dulu, lalu bergerak ke luar. Di “atur frequency ke (batasi frequency antara 50 dan 5000)”, bagian paling dalam adalah constrain(frequency, 50, 5000), dan blok atur di luarnya membungkusnya sebagai frequency = …. Blok nilai tidak bisa menjadi satu baris sendiri; kalau kamu membiarkannya dengan titik koma, compiler mungkin tidak protes, tapi hasilnya tidak disimpan di mana pun.
Kesalahan umum ketika beralih dari blok ke kode
Editor blok tidak membiarkanmu membuat sebagian besar kesalahan ini; bentuk kepingannya mencegah blok terpasang di tempat yang salah. Kode menghilangkan perlindungan itu, jadi hampir semua orang bertemu kesalahan di bawah ini di minggu-minggu pertama. Pesan error-nya dalam bahasa Inggris, tapi polanya hanya sedikit, dan setelah melihatnya beberapa kali kamu akan langsung mengenalinya.
| Kesalahan | Gejala | Perbaikan |
|---|---|---|
| Tidak ada titik koma di akhir baris | “expected ';' before …”; compiler sering menunjuk baris di bawahnya | Akhiri setiap pernyataan dengan ;. Jangan menaruh ; setelah baris if, for, dan while. |
| Kurung kurawal hilang atau kelebihan | “expected '}' at end of input” atau kode berjalan di tempat yang salah | Setiap { butuh }. Ctrl+T (auto format) di Arduino IDE merapikan indentasi dan membuat kurung yang hilang mudah terlihat. |
| Menulis = di dalam kondisi | if (state = 1) selalu benar dan sekaligus mengisi state dengan 1; SyntaxError di Python | Bandingkan dengan ==, isi nilai dengan =. Perbandingan = di blok selalu menjadi == di kode. |
| Memasukkan bilangan desimal ke int | int volt = 3.7; menyimpan 3; 5 / 2 menghasilkan 2 | Pakai float untuk bilangan desimal, dan tulis salah satu angka sebagai 5.0 ketika membagi. |
| Mengharapkan nilai yang salah dari digitalRead | if (digitalRead(2) == 5) tidak pernah jalan; logika terbalik dengan tombol pull-up | digitalRead hanya mengembalikan HIGH (1) atau LOW (0). Dengan INPUT_PULLUP, tombol yang ditekan terbaca LOW. |
| Tertukar huruf besar dan kecil | “'digitalwrite' was not declared in this scope”; NameError di Python | digitalWrite, pinMode, dan Serial harus dieja persis. Di Python, True dan False diawali huruf kapital. |
| Menerjemahkan perulangan hitung kurang satu | Perulangan yang berjalan 6 kali di blok hanya berjalan 5 kali di kode; LED terakhir tidak pernah menyala | “dari 0 sampai 5” mengikutkan angka akhir: i <= 5 di C++, range(0, 6) di Python. |
| Indentasi Python bergeser | IndentationError atau baris yang jatuh di luar perulangan | Mulai setiap baris di bawah while dan if dengan 4 spasi yang sama; jangan mencampur tab dan spasi. |
| Menganggap waktu di Python dalam milidetik | time.sleep(500) menunggu lebih dari 8 menit | Tulis time.sleep(0.5) atau time.sleep_ms(500). |
| Membawa kebiasaan C++ ke Python | SyntaxError karena x++, &&, atau ; di akhir baris | Python memakai x += 1, and, or; tidak ada tanda akhir baris. |
Meninggalkan blok: metode 4 langkah
Mencoba beralih sekaligus itu melelahkan. Empat langkah di bawah bergerak dari membaca ke menulis sedikit demi sedikit. Satu atau dua proyek per langkah sudah cukup; kamu siap ke langkah berikutnya kalau bisa mengerjakan langkah yang sekarang tanpa melihat tabel.
- Baca berdampingan. Buka blok dan kode sebuah proyek bersamaan, lalu cocokkan setiap blok dengan barisnya di kode memakai jarimu. Simpan tabel di dekatmu di langkah ini. Tujuan: bisa menghubungkan setiap baris kode dengan sebuah blok.
- Sembunyikan blok dan tebak. Lihat bloknya dulu, lalu matikan tampilan blok dan tulis kode C++ untuk blok-blok itu di kertas tanpa melihat kodenya. Setelah itu bandingkan dengan kode aslinya. Coba juga sebaliknya: baca kodenya dan tebak bloknya.
- Ubah satu nilai di kode. Pindahkan kode ke komputermu dan ubah satu angka saja: naikkan waktu tunggu dari 100 ke 500, atau ambang dari 400 ke 600. Upload, lalu lihat sendiri perbedaannya. Kalau muncul error kompilasi, kembali ke tabel kesalahan di atas.
- Tulis baris baru. Tambahkan baris yang tidak ada di blok: Serial.println() yang mencetak nilai ke Serial Monitor, LED kedua, atau if yang bekerja dengan tombol. Sekarang kamu tidak lagi menerjemahkan blok, tapi langsung menulis kode.
Setiap langkah punya pelajaran yang cocok di seri ini. Untuk langkah pertama, tabel blok-ke-baris di LED berkedip dengan blok adalah awal yang bagus. Untuk berlatih dengan kondisi dan perulangan di langkah kedua dan ketiga, lihat blok jika (if) dan perulangan dan variabel. Kalau kamu pindah ke MicroPython di Pico, dari blok ke MicroPython juga membahas cara menyiapkan Thonny. Untuk menyebar peralihan ini ke beberapa minggu di kelas, rencana coding robotika 8 minggu memberimu urutan yang siap pakai.
Membuka blok dan kode berdampingan di aplikasi BlueGrays
Kamu paling sering memakai tabel ini ketika bolak-balik antara blok dan kode sebuah proyek sungguhan. Aplikasi BlueGrays punya tampilan blok untuk lebih dari 100 proyek; di lebih dari 30 proyek gratis bloknya juga terbuka, dan di proyek Premium bloknya terbuka dengan Premium. Blok untuk dibaca: kamu tidak bisa mengedit blok di aplikasi, dan blok tidak di-upload ke board. Yang masuk ke board selalu kode asli; kamu mengambilnya dengan Salin, atau dengan Salin tautan untuk membukanya di komputer, lalu menempelkannya ke Arduino IDE, atau ke Thonny untuk Pico.
- Tampilkan sebagai blok: nyalakan sakelar ini di samping kode sumber di halaman proyek, dan program yang sama muncul sebagai gambar blok dalam bahasa aplikasi. Ketuk gambarnya untuk membukanya layar penuh; mematikan dan menyalakannya lagi persis cara berlatih langkah satu dan dua.
- Pahami blok: ketika tampilan blok menyala, tab “Pahami kode” berganti nama menjadi ini. Program dibagi menjadi langkah-langkah, masing-masing dengan bagian yang dibahas dan penjelasannya. Tugas “Coba sendiri” di bagian akhir adalah latihan siap pakai untuk langkah empat.
- Panduan kode: masing-masing dari 36 kartu di bagian Belajar (18 Arduino C++, 18 MicroPython) menunjukkan contohnya dalam tiga cara lewat tab Blok, Arduino, dan MicroPython. Kalau kamu ingin melihat satu baris tabel lebih rinci, buka kartu yang cocok.
- Proyek dengan blok: pilihan di bawah Filter di Jelajahi > Proyek ini hanya menampilkan proyek yang punya tampilan blok, jadi memilih proyek untuk latihan peralihan jadi lebih mudah.
Cara kerja panduan kode sudah kita bahas di artikel Panduan kode, dan bagian “Pahami kode” serta “Coba sendiri” di panduan Pahami kode. Untuk penjelasan setiap perintah satu per satu, Daftar Perintah Arduino cocok dipakai bersama tabel ini.
Satu program dalam tiga cara: lampu tidur yang meredup mengikuti cahaya
Untuk melihat tabel ini beraksi, ayo buat program kecil. LDR mengukur cahaya; selama ruangan terang LED tetap mati, dan makin gelap, LED pelan-pelan makin terang. Program ini memakai blok variabel, baca analog, kondisi, petakan, PWM, serial, dan tunggu, jadi lebih dari separuh tabel muncul dalam satu contoh. Idenya berdasarkan proyek gratis Lampu Tidur dengan LDR; di sana LED hanya nyala atau mati, di sini PWM meredupkannya. Untuk pengkabelan LDR, kamu juga bisa melihat skema rangkaian proyek Mengukur Intensitas Cahaya dengan LDR.
| Koneksi | Arduino Uno | Raspberry Pi Pico |
|---|---|---|
| Kaki LDR 1 | 5V | 3V3(OUT), pin fisik 36 |
| Kaki LDR 2 + salah satu ujung resistor 10 kΩ (titik tengah) | A0 | GP26 / ADC0, pin fisik 31 |
| Ujung lain resistor 10 kΩ | GND | GND, pin fisik 38 |
| Kaki panjang LED (lewat resistor 220 Ω) | D9 (pin PWM) | GP15, pin fisik 20 |
| Kaki pendek LED | GND | GND, pin fisik 18 |
| Rentang pembacaan cahaya / PWM | 0–1023 / 0–255 | 0–65535 / 0–65535 |
Pertama versi bloknya. Dengan label dari aplikasi, program ini tersusun dari blok-blok di bawah; setiap butir cocok dengan satu atau beberapa baris kode C++ berikutnya:
- variabel global (paling atas): deklarasikan bilangan bulat (int) lightValue = 0 dan deklarasikan bilangan bulat (int) brightness = 0
- setup (jalan sekali): mulai serial di 9600 baud, lalu atur pin 9 sebagai OUTPUT
- ulangi selamanya: atur lightValue ke (baca analog A0)
- jika (lightValue < 400) lakukan: atur brightness ke (petakan lightValue : 0 – 400 → 255 – 0); jika tidak: atur brightness ke 0
- tulis PWM brightness ke pin 9
- cetak serial “Light: ” tanpa pindah baris, cetak serial lightValue tanpa pindah baris, cetak serial “ PWM: ” tanpa pindah baris, cetak serial brightness baris baru
- tunggu 200 ms
1// ─────────────────────────────────────────
2// BlueGrays · bluegrays.com
3// Işığa göre kısılan gece lambası / Dimming night light
4// ─────────────────────────────────────────
5
6int lightValue = 0; // LDR okuması / LDR reading (0-1023)
7int brightness = 0; // LED parlaklığı / LED brightness (0-255)
8
9void setup() {
10 Serial.begin(9600); // Seri port 9600 baud / Serial at 9600 baud
11 pinMode(9, OUTPUT); // LED, PWM pini D9 / LED on PWM pin D9
12}
13
14void loop() {
15 lightValue = analogRead(A0); // Az ışık = küçük değer / Little light = small value
16
17 if (lightValue < 400) {
18 // Karanlık arttıkça LED parlar / The darker it gets, the brighter the LED
19 brightness = map(lightValue, 0, 400, 255, 0);
20 } else {
21 brightness = 0; // Oda aydınlık, LED kapalı / Room is bright, LED off
22 }
23
24 analogWrite(9, brightness); // PWM 0-255 / PWM 0-255
25
26 Serial.print("Light: ");
27 Serial.print(lightValue);
28 Serial.print(" PWM: ");
29 Serial.println(brightness);
30
31 delay(200); // 0,2 sn bekle / Wait 0.2 s
32}
331# ─────────────────────────────────────────
2# BlueGrays · bluegrays.com
3# Işığa göre kısılan gece lambası / Dimming night light
4# ─────────────────────────────────────────
5from machine import Pin, ADC, PWM
6import time
7
8ldr = ADC(26) # GP26 = ADC0 / GP26 = ADC0
9led = PWM(Pin(15)) # LED, GP15 / LED on GP15
10led.freq(1000) # PWM frekansı 1000 Hz / PWM frequency 1000 Hz
11
12THRESHOLD = 25600 # Uno'daki 400'ün karşılığı / Same as 400 on the Uno
13
14
15def arduino_map(x, in_min, in_max, out_min, out_max):
16 # Arduino map() ile aynı hesap / Same math as Arduino map()
17 return (x - in_min) * (out_max - out_min) // (in_max - in_min) + out_min
18
19
20while True:
21 light_value = ldr.read_u16() # 0-65535 / 0-65535
22
23 if light_value < THRESHOLD:
24 # Karanlık arttıkça LED parlar / The darker it gets, the brighter the LED
25 brightness = arduino_map(light_value, 0, THRESHOLD, 65535, 0)
26 else:
27 brightness = 0 # Oda aydınlık, LED kapalı / Room is bright, LED off
28
29 led.duty_u16(brightness) # PWM 0-65535 / PWM 0-65535
30
31 print("Light:", light_value, " PWM:", brightness)
32
33 time.sleep(0.2) # 0,2 sn bekle / Wait 0.2 s
34Bandingkan kedua program baris demi baris, dan setiap perbedaan dari tabel akan terlihat. setup() di C++ menjadi baris-baris sebelum while True di Python, dan Serial.begin() hilang. analogRead(A0) menjadi ADC(26).read_u16() dan rentangnya membesar dari 0–1023 menjadi 0–65535, karena itulah ambangnya 25600, bukan 400. Alih-alih analogWrite(9, …), objek PWM dibuat lebih dulu dan kecerahan diatur dengan duty_u16() antara 0 dan 65535. Karena map() tidak tersedia bawaan, ditulis fungsi arduino_map(); pembagian bulat // di dalamnya sama dengan pembagian bilangan bulat di C++. Satu print() menggantikan empat panggilan Serial.print() terpisah, dan delay(200) menjadi time.sleep(0.2).
Pindah dari coding blok ke Arduino C++ bukan soal menghafal sesuatu yang baru, tapi lebih soal mengenali bentuk tertulis dari blok yang sudah kamu kenal. Simpan tabel ini di dekatmu, baca berdampingan dulu di setiap proyek, lalu sembunyikan bloknya dan tulis sendiri. Kalau kamu ingin melihat baris-baris ini di proyek sungguhan, buka proyek yang punya tampilan blok di aplikasi BlueGrays, lalu beralih di antara dua bentuk program yang sama dengan Tampilkan sebagai blok.
Pertanyaan umum
Setelah coding blok, sebaiknya aku belajar apa: C++ atau Python?
Pilih berdasarkan board yang kamu punya. Sebagian besar proyek Arduino Uno dan ESP32 ditulis dengan Arduino C++, sedangkan MicroPython umum dipakai di Raspberry Pi Pico. Logika bloknya sama di keduanya, jadi begitu kamu menguasai satu, pindah ke yang lain butuh waktu jauh lebih sedikit.
Berapa lama waktu yang dibutuhkan untuk pindah dari coding blok ke kode Arduino?
Berbeda-beda untuk tiap orang, tapi orang yang mengerjakan beberapa proyek per minggu biasanya sudah bisa membaca program pendek dan membuat perubahan kecil dalam beberapa minggu. Membaca kode di samping blok lebih dulu, lalu mengubah satu nilai, dan akhirnya menambahkan baris baru membuat peralihan ini lebih mudah.
Bisakah aku memprogram Arduino Uno dengan Python?
Arduino Uno tidak bisa menjalankan MicroPython; board ini diprogram dengan C++ lewat Arduino IDE. Untuk MicroPython kamu butuh board yang lebih kuat seperti Raspberry Pi Pico. Meski begitu, kamu bisa mengirim perintah ke Uno lewat port serial dari program Python yang berjalan di komputermu.
Bisakah aku mengedit blok di BlueGrays lalu meng-upload-nya ke board?
Tidak. Blok di BlueGrays untuk membaca dan memahami kode; kamu tidak bisa mengedit blok di aplikasi, dan blok tidak di-upload ke board. Yang kamu upload selalu kode asli proyek, memakai Arduino IDE atau Thonny.
Apakah program blok itu kode sungguhan?
Blok adalah bentuk visual dari kode asli; setiap blok cocok dengan satu atau beberapa baris kode. Di proyek BlueGrays yang punya tampilan blok, blok dan kode Arduino C++ atau MicroPython yang kamu upload menggambarkan program yang sama.
Kenapa digitalRead mengembalikan 1 atau 0, dan apakah HIGH sama dengan 1?
Ya, di Arduino HIGH sama dengan 1 dan LOW sama dengan 0, dan digitalRead hanya mengembalikan salah satu dari dua nilai itu. Tombol yang dirangkai dengan INPUT_PULLUP terbaca LOW selama ditekan dan HIGH ketika dilepas. Di MicroPython, pin.value() juga memberi 1 atau 0.
Proyek untuk dibuat setelah membaca ini
Lihat semua proyek
Mengatur Frekuensi Buzzer
Kamu mengendalikan suara buzzer dengan empat tombol: satu memulai suara, satu membungkamnya, dan dua lainnya membuatnya lebih tinggi atau lebih rendah. Tahan tombol naik atau turun dan nadanya berubah

Lampu Tidur dengan LDR
Lampu tidur kecil yang menyala sendiri ketika gelap dan mati ketika pagi tiba. Sensor cahaya mengukur seberapa terang ruangan, dan Arduino menyalakan LED ketika cukup gelap lalu mematikannya lagi keti

Mengukur Intensitas Cahaya dengan LDR
Ingin melihat seberapa terang kamarmu dalam bentuk angka? LDR, komponen kecil yang bereaksi terhadap cahaya, mengukur cahaya di sekitarnya, dan Arduino menulis nilainya ke layar komputermu setiap sete

Kendali LED dengan Tombol Tekan (Tekan)
Persis seperti bel pintu: lampu tetap menyala selama kamu menekan, dan mati ketika kamu melepasnya. Arduino terus mendengarkan tombol; selama ditekan LED menyala, dan begitu jarimu terangkat LED mati.

Nyala/Mati LED dengan Tombol (On/Off)
Tekan tombol sekali dan lampu menyala, tekan lagi dan lampu mati, persis seperti sakelar lampu di kamarmu. Arduino menyadari setiap tekanan dan membalik LED ke keadaan sebaliknya, sambil menunggu sebe

LED Berjalan dengan Kecepatan yang Bisa Diatur
Enam LED menyala satu demi satu, sehingga cahayanya seolah berlari dari satu ujung ke ujung lainnya. Putar kenop potensiometer dan kecepatan larinya langsung berubah: ke satu arah cahayanya melesat, k

Pengukuran Jarak HC-SR04 (Tampilan Serial)
Sensor HC-SR04 bekerja persis seperti kelelawar yang mencari jalan dalam gelap: ia mengirim suara yang tidak bisa kamu dengar, mendengarkan pantulannya, dan mengukur seberapa jauh benda di depannya. A

Raspberry Pi Pico: Mengendalikan LED Eksternal (Breadboard)
Langkah berikutnya setelah LED bawaan Pico: menyambungkan LED eksternal ke breadboard dan mengendalikannya lewat pin GP14. Di proyek ini, kamu belajar memakai pin GPIO serbaguna Pico mana pun sebagai output, polaritas LED (kaki panjang = anoda/+, kaki pendek = katoda/–), dan kenapa resistor pembatas arus (220Ω) diperlukan. Tanpa resistor, arus berlebih mengalir melalui LED dan LED bisa terbakar. Rangkaiannya sangat sederhana: Pico GP14 → resistor 220Ω → LED → GND.
Artikel lainnya
Aplikasi BlueGrays
Rakit rangkaian ini langkah demi langkah di ponselmu
Skema pengkabelan, kode, dan daftar komponen dalam satu layar. 200+ proyek Arduino, ESP32, dan Pico siap dibuat.
Pindai dengan ponselmu
Arahkan kamera ke kode ini dan toko aplikasi di ponselmu akan terbuka.
atau buka toko aplikasi

