Tutorial mBlock Arduino: Instalasi, Mode Live vs Upload, dan Blok
Tutorial mBlock Arduino: instal mBlock 5, tambahkan Arduino Uno dan firmware-nya, pahami mode Live vs Upload, blok LED, tombol, dan sensor, kode Arduino C, plus 9 aktivitas.
Memprogram Arduino dengan mBlock adalah salah satu cara termudah untuk membuat Arduino Uno mengedipkan LED atau membaca tombol dan sensor tanpa menulis satu baris kode pun. mBlock 5, yang dikembangkan secara gratis oleh Makeblock, adalah lingkungan coding berbasis blok yang dibangun di atas Scratch 3.0: kamu menyusun blok-blok berwarna seperti puzzle, lalu mBlock diam-diam mengubahnya menjadi kode Arduino C, mengompilasinya, dan meng-upload-nya ke board-mu. Kamu juga bisa menjalankan blok langsung di board dan membuatnya berinteraksi dengan karakter di panggung (stage). Karena itu mBlock jadi salah satu alat paling populer di kelas coding robotika sekolah, di proyek lomba sains, dan sebagai langkah pertama mengenal Arduino.
Di panduan ini kamu akan belajar langkah demi langkah cara menginstal mBlock di komputer atau memakainya di browser, menambahkan dan menghubungkan Arduino Uno sebagai perangkat, meng-upload firmware untuk mode Live, perbedaan mode Live dan mode Upload, blok LED, tombol, dan sensor, baris Arduino C apa yang dihasilkan dari blok-blok itu, sembilan aktivitas yang bisa dipakai di kelas, cara pindah ke Arduino IDE, serta cara memperbaiki masalah koneksi yang paling sering muncul.

Apa itu mBlock dan bagaimana cara kerjanya dengan Arduino?
mBlock adalah lingkungan pemrograman yang dibangun di atas Scratch 3.0, yang dikembangkan di MIT. Perbedaan terbesarnya dari Scratch adalah selain karakter di layar (sprite), mBlock juga bisa memprogram hardware sungguhan. Antarmukanya punya dua tab terpisah: di tab Sprites kamu memprogram karakter di panggung, dan di tab Devices (perangkat) kamu memprogram board seperti Arduino, micro:bit, atau robot Makeblock. Ketika kamu memilih perangkat, kategori khusus board itu ditambahkan ke palet blok; untuk Arduino Uno, ini adalah blok pin dan port serial. Di mode Upload, skrip blokmu diterjemahkan ke Arduino C, dikompilasi menjadi kode mesin, dan ditulis ke memori flash board lewat USB. Dengan kata lain, mBlock melakukan pekerjaan yang sama dengan Arduino IDE lewat antarmuka blok, dan karena menunjukkan kode yang dihasilkannya, mBlock juga memudahkan peralihan ke kode teks.
| Fitur | mBlock 5 |
|---|---|
| Pengembang | Makeblock |
| Berbasis | Scratch 3.0 (bisa membuka proyek Scratch dan mBlock 3) |
| Harga | Gratis |
| Versi | Desktop Windows dan macOS, browser (Chrome atau Edge), aplikasi Android dan iOS |
| Board Arduino | Uno, Nano, Nano (old), Mega 2560; Leonardo, Micro, dan Yun di versi desktop atau lewat mLink |
| Bahasa teks | Arduino C di board Arduino, Python di board Makeblock dan panggung |
| File proyek | .mblock |
| Bahasa antarmuka | Puluhan bahasa, termasuk bahasa Inggris |
Menginstal mBlock: versi desktop dan web
- Di browser, buka mblock.cc dan unduh versi desktop mBlock 5 untuk sistem operasimu dari halaman Download. Ketika artikel ini ditulis, rilis terbarunya V5.6; versi ini mendukung Windows 7 64-bit ke atas dan macOS 10.12 ke atas, dengan installer terpisah untuk Mac Apple seri M.
- Di Windows, jalankan installer dan ikuti wizard-nya. Kalau selama instalasi muncul tawaran menginstal driver CH340, terima saja: sebagian besar board Arduino klon memakai chip USB-ke-serial ini, dan tanpa driver itu port-nya tidak akan muncul.
- Di macOS, kalau installer tidak mau terbuka, klik kanan file-nya lalu pilih Open, atau pakai tombol Open Anyway di Privacy & Security pada System Settings.
- Buka mBlock dan pilih bahasamu dari ikon bola dunia di menu atas. Sejak itu, menu dan nama blok tampil dalam bahasa tersebut.
- Di komputer sekolah yang tidak mengizinkan instalasi software, buka ide.mblock.cc di browser; untuk koneksi Arduino, pakai Chrome atau Edge versi terbaru.
Untuk waktu yang lama, versi web terhubung ke board lewat program pembantu kecil bernama mLink. Di versi yang lebih baru, metode bawaannya adalah koneksi langsung yang memakai fitur port serial browser: ketika kamu klik connect, browser membuka jendela, kamu memilih port Arduino, dan langsung terhubung tanpa menginstal apa pun. Cara ini bekerja dengan Uno, Nano, Nano (old), dan Mega 2560; board yang memakai USB dengan cara berbeda, seperti Leonardo, Micro, dan Yun, tetap butuh mLink. Selama mLink berjalan, ikon panda kecil muncul di taskbar. Jangan membuka versi desktop dan web, atau dua tab mBlock, secara bersamaan; keduanya mencoba memakai port yang sama dan koneksinya gagal.
| Fitur | Versi desktop | Versi web |
|---|---|---|
| Instalasi | Wajib (Windows, macOS) | Tidak perlu, terbuka di browser |
| Syarat browser | Tidak ada | Chrome atau Edge (untuk dukungan port serial) |
| Koneksi Arduino | Kabel USB dan driver sudah cukup | Koneksi langsung atau mLink |
| Leonardo, Micro, Yun | Didukung | Hanya dengan mLink |
| Chromebook dan Linux | Tidak ada versi desktop | Jalan dengan Chrome |
| Menyimpan proyek | File .mblock di komputer | Ke akunmu atau diunduh ke komputer |
| Kecocokan untuk sekolah | Lebih lancar di jaringan yang lambat atau dibatasi | Praktis di komputer tanpa hak instalasi |
Menambahkan perangkat: menghubungkan Arduino Uno ke mBlock
- Colokkan Arduino ke komputer dengan kabel USB; LED ON (daya) di board harus menyala.
- Di mBlock, pindah ke tab Devices di bawah panggung. Hapus perangkat Makeblock yang ada secara bawaan (Codey Rocky atau CyberPi, tergantung versinya) dengan tanda silang di sudutnya.
- Klik + Add, ketik “Arduino” di kotak pencarian Device Library yang terbuka, pilih Arduino Uno, lalu klik OK. Kalau kamu klik bintang di sudut kiri atas board itu, mBlock akan menyiapkannya lagi ketika dibuka berikutnya.
- Klik Connect. Di tab USB pada jendela yang terbuka, pilih port yang ditemukan mBlock: di Windows kamu akan melihat nama seperti COM3 atau COM4, di macOS kira-kira /dev/cu.usbmodem… atau, di board dengan CH340, /dev/cu.wchusbserial…. Kalau port-nya tidak ada di daftar, centang Show all connectable devices (tampilkan semua perangkat yang bisa dihubungkan).
- Klik Connect lagi. Kalau muncul pesan “Device connected”, kamu sudah siap; blok pin dan port serial khusus Arduino muncul di palet blok.
Memilih perangkat yang tepat sudah setengah jalan. Entah board-nya asli atau klon, pilih Arduino Uno untuk Uno dan Arduino Mega2560 untuk Mega. Sebagian besar Arduino Nano klon yang murah memakai bootloader lama; di board ini upload gagal dengan pilihan Arduino Nano, sedangkan pilihan Arduino Nano (old) berhasil. Board baru dengan prosesor berbeda, seperti Arduino Uno R4, tidak bisa diprogram dengan perangkat Uno di mBlock; untuk board itu, pakai Arduino IDE langsung. Kalau kamu belum memutuskan board mana yang akan dibeli, baca Arduino Mana yang Sebaiknya Kubeli?, dan untuk susunan pin Nano, lihat panduan Pinout Arduino Nano.

Mode Live vs mode Upload: apa bedanya?
mBlock menawarkan dua mode untuk memprogram perangkat, dan kamu berpindah di antara keduanya dengan sakelar di tab Devices. Di mode Live, program sebenarnya berjalan di komputer: mBlock membaca tiap blok secara berurutan dan mengirim perintah seperti “nyalakan pin 13” atau “baca A0 lalu kirim hasilnya” ke Arduino lewat USB. Untuk itu Arduino butuh firmware khusus yang memahami perintah-perintah ini. Kamu langsung melihat hasilnya, bisa memantau nilai sensor di panggung dan membuat Arduino berinteraksi dengan sprite, tapi begitu kabel USB dicabut atau mBlock ditutup, program berhenti. Di mode Upload, blok diterjemahkan ke Arduino C, dikompilasi, dan ditulis permanen ke board; walaupun kabel dicabut, program tetap berjalan dengan baterai atau adaptor. Di mode ini programmu harus berada di bawah hat block when Arduino Uno starts up (ketika Arduino Uno mulai); event panggung seperti bendera hijau tidak ikut dipindahkan ke board.
| Fitur | Mode Live | Mode Upload |
|---|---|---|
| Di mana program berjalan? | Di komputer, perintah dikirim lewat USB | Di prosesor Arduino itu sendiri |
| Blok awal | Event seperti when green flag clicked (ketika bendera hijau diklik) atau when key pressed (ketika tombol keyboard ditekan) | when Arduino Uno starts up (ketika Arduino Uno mulai) |
| Kabel USB | Harus tetap tercolok | Hanya perlu ketika meng-upload |
| Software di Arduino | Firmware mBlock | Program hasil kompilasimu |
| Pewaktuan | Lebih lambat dan tidak teratur, karena setiap perintah bolak-balik lewat USB | Presisi sampai milidetik, bahkan mikrodetik |
| Interaksi dengan sprite | Langsung lewat blok variabel dan broadcast | Hanya dengan ekstensi Upload Mode Broadcast di perangkat yang mendukungnya |
| Paling cocok untuk | Uji coba, debugging, game di panggung | Robot, alarm, proyek jadi bertenaga baterai |
Meng-upload firmware: menyiapkan Arduino untuk mode Live
- Hubungkan Arduino (Connect) dan pindahkan sakelar mode ke Live.
- Kalau board belum punya firmware mBlock, biasanya mBlock menawarkan untuk memperbaruinya. Kalau tidak, pilih Update Firmware dari menu Setting di sebelah tombol koneksi, lalu mulai pembaruan di jendela yang terbuka.
- Selama upload, LED TX dan RX di board berkedip cepat; jangan cabut kabel atau menutup mBlock sampai progress bar selesai.
- Untuk mengujinya, seret blok set digital pin (13) output as (high) dari blok pin ke area skrip lalu klik sekali. Kalau LED L di board langsung menyala, mode Live sudah bekerja; klik blok yang sama dengan pilihan (low) dan LED padam.
Blok dasar Arduino: LED, tombol, dan sensor
Setelah Arduino Uno ditambahkan, palet blok mendapat kategori pin dan port serial khusus board di samping kategori Events, Control, Operators, Variables, dan My Blocks yang sudah kamu kenal dari Scratch. Tabel di bawah mencantumkan blok-blok itu dengan nama bahasa Inggrisnya beserta kegunaannya. Nama blok bisa sedikit berbeda antarversi; kalau kamu klik kanan blok mana pun lalu pilih Help, mBlock menampilkan penjelasan blok itu. Di Uno, PWM hanya bekerja di pin 3, 5, 6, 9, 10, dan 11; peta pin lengkapnya bisa kamu lihat di alat diagram pin.
| Blok (nama bahasa Inggris) | Kegunaannya | Contoh pemakaian |
|---|---|---|
| when Arduino Uno starts up (ketika Arduino Uno mulai) | Hat block tempat program dimulai di mode Upload | Setiap program yang di-upload ke board |
| set digital pin (13) output as (high) (atur output pin digital) | Membuat pin HIGH (5 V) atau LOW (0 V) | LED, buzzer aktif, relay |
| read digital pin (2) (baca pin digital) | Membaca level di pin sebagai true atau false | Tombol, PIR, sensor rintangan inframerah |
| read analog pin (A) (0) (baca pin analog) | Mengubah tegangan di pin A0–A5 menjadi angka 0 sampai 1023 | LDR, potensiometer, sensor kelembapan tanah |
| set pwm pin (5) output as (128) (atur output PWM) | Menghasilkan sinyal PWM dari 0 sampai 255 | Kecerahan LED, kecepatan motor DC |
| set servo pin (9) angle as (90) (atur sudut servo) | Menggerakkan servo ke sudut antara 0 dan 180 derajat | Palang SG90, lengan robot |
| play pin (8) with note (C4) for (0.25) beat (mainkan nada) | Memainkan nada di buzzer pasif | Melodi, bel pintu |
| forever / repeat (10) / if … then … else (selamanya / ulangi / jika … maka … jika tidak) | Blok perulangan dan kondisi | Pengecekan terus-menerus, menghitung, pengambilan keputusan |
| wait (1) seconds (tunggu 1 detik) | Menjeda program selama waktu yang ditentukan | Lampu kedip, lampu lalu lintas |







Tabel pengkabelan: satu kit pelajaran untuk semua aktivitas
Merakit ulang rangkaian setiap minggu membuang waktu pelajaran. Kalau kamu merakit pengkabelan di bawah ini di breadboard sekali saja, kesembilan aktivitas bisa dikerjakan tanpa menyentuh kabelnya. Resistor untuk LED bisa kamu cek dengan kalkulator resistor LED, dan tegangan yang dihasilkan pembagi LDR dengan kalkulator pembagi tegangan. Kalau kamu baru pertama kali memakai komponen ini, artikel LED, tombol, LDR, dan motor servo menjelaskan setiap sambungan secara detail.
| Komponen | Arduino Uno | ESP32 | Raspberry Pi Pico | Catatan |
|---|---|---|---|---|
| LED + resistor 220 Ω | D5 | GPIO 18 | GP14 | Kaki panjang (anoda) ke pin, kaki pendek ke GND |
| Tombol + pull-down 10 kΩ | D2 | GPIO 4 | GP2 | Sisi lain tombol ke 5V di Uno, ke 3V3 di ESP32 dan Pico |
| LDR + resistor 10 kΩ | A0 | GPIO 34 | GP26 (ADC0) | LDR di antara catu daya dan pin, resistor di antara pin dan GND |
| Potensiometer (pin tengah) | A1 | GPIO 35 | GP27 (ADC1) | Pin luar ke catu daya dan GND |
| Servo SG90 (sinyal) | D9 | GPIO 13 | GP16 | Kabel merah ke 5 V (VIN di ESP32, VBUS di Pico), cokelat ke GND |
| Buzzer pasif | D8 | GPIO 25 | GP15 | Pin lainnya ke GND |
| HC-SR04 Trig / Echo | D11 / D12 | GPIO 26 / 27 | GP17 / GP18 | Di ESP32 dan Pico, turunkan jalur Echo ke 3,3 V dengan pembagi tegangan |
Program pertama: LED berkedip di mode Upload
- Pindahkan sakelar mode ke Upload.
- Seret blok when Arduino Uno starts up dari kategori Events ke area skrip.
- Pasang blok forever (selamanya) dari kategori Control di bawahnya.
- Di dalam blok forever, taruh set digital pin (13) output as (high), wait (1) seconds, set digital pin (13) output as (low), dan satu lagi wait (1) seconds, sesuai urutan itu.
- Klik Upload. mBlock mengompilasi kode dan mengirimnya ke board; beberapa detik kemudian muncul pesan bahwa upload sudah selesai.
- LED L di board mulai berkedip sekali per detik. Kalau kabel USB kamu cabut lalu board diberi daya dari power bank atau adaptor 7–12 V, program tetap berjalan; pilihan catu dayanya kami bahas di menjalankan Arduino dengan baterai.
Bagaimana blok berubah menjadi kode Arduino C?
Di mode Upload, klik tombol kode Arduino C di tepi kanan (ikon kurung siku), lalu mBlock menampilkan kode yang sesuai dengan blok-blokmu di sebuah panel. Setiap perubahan yang kamu buat di blok langsung memperbarui kodenya; ini cara termudah untuk mempelajari blok mana yang menghasilkan baris mana. Kalau kamu menambahkan variabel bernama sayac (penghitung) ke program Blink di atas dan menaikkannya 1 di setiap putaran, kode yang dihasilkan kira-kira seperti ini. Baris komentarnya kami tambahkan sendiri; spasi dan posisi beberapa baris, seperti pinMode, bisa sedikit berbeda antarversi.
1// generated by mBlock5 for <your product>
2// codes make you happy
3// mBlock'un ürettiği kodun yapısı: Blink + sayaç / Structure of mBlock-generated code: Blink + counter
4
5#include <Arduino.h>
6#include <Wire.h>
7#include <SoftwareSerial.h>
8
9float sayac = 0; // mBlock değişkenleri float olur / mBlock variables become float
10
11void _loop(); // ön bildirim, Arduino IDE de ekler / forward declaration, the Arduino IDE adds it too
12
13void _delay(float seconds) { // "wait (1) seconds" bloğu / the "wait (1) seconds" block
14 long endTime = millis() + seconds * 1000;
15 while (millis() < endTime) _loop();
16}
17
18void setup() { // "when Arduino Uno starts up" altındaki bloklar / blocks under "when Arduino Uno starts up"
19 pinMode(13, OUTPUT);
20 while (1) { // "forever" bloğu / the "forever" block
21 digitalWrite(13, 1); // pin 13 HIGH: dahili L LED'i yanar / pin 13 HIGH: the built-in L LED turns on
22 _delay(1);
23 digitalWrite(13, 0); // pin 13 LOW: LED söner / pin 13 LOW: the LED turns off
24 _delay(1);
25 sayac += 1; // "change sayac by 1" bloğu / the "change sayac by 1" block
26 _loop();
27 }
28}
29
30void _loop() { // uzantıların sürekli çalışan kodu buraya eklenir / extensions add their recurring code here
31}
32
33void loop() {
34 _loop();
35}Ada empat hal yang perlu diperhatikan di kode ini. Pertama, blok forever tidak menjadi fungsi loop() Arduino, melainkan perulangan tanpa akhir while(1) di dalam setup(); loop() hanya memanggil fungsi _loop(). Kedua, blok wait memakai fungsi _delay() sebagai ganti delay(); selama menunggu, fungsi ini terus memanggil _loop(), sehingga pekerjaan latar belakang yang dibutuhkan sebagian ekstensi tidak tertahan. Ketiga, setiap variabel yang kamu buat di mBlock dideklarasikan sebagai float (bilangan desimal); di Uno masing-masing memakan 4 byte RAM dan bisa menimbulkan galat pembulatan kecil dalam perbandingan kesamaan. Misalnya, variabel yang kamu naikkan dengan kelipatan 0.1 mungkin tidak tepat bernilai 1 setelah sepuluh langkah, jadi perbandingan “lebih besar dari” atau “lebih kecil dari” lebih aman daripada “sama dengan”. Keempat, library Wire dan SoftwareSerial di bagian atas biasanya tetap disertakan walaupun tidak kamu pakai; programnya tetap jalan, tapi bisa memakan sedikit lebih banyak ruang dibanding versi yang ditulis tangan.
| Blok | Padanan Arduino C |
|---|---|
| when Arduino Uno starts up (ketika Arduino Uno mulai) | Kode di dalam void setup() { … } |
| forever | while(1) { … _loop(); } |
| repeat (10) | for (int count = 0; count < 10; count++) { … } (perulangan for) |
| wait (1) seconds | _delay(1); |
| wait until (kondisi) (tunggu sampai) | while (!(kondisi)) { _loop(); } |
| if (kondisi) then … else … (jika … maka … jika tidak) | if (kondisi) { … } else { … } |
| set digital pin (13) output as (high) (atur output pin digital) | pinMode(13, OUTPUT); digitalWrite(13, 1); |
| read digital pin (2) (baca pin digital) | digitalRead(2) |
| read analog pin (A) (0) (baca pin analog) | analogRead(A0) |
| set pwm pin (5) output as (128) (atur output PWM) | analogWrite(5, 128); |
| set servo pin (9) angle as (90) (atur sudut servo) | Library Servo: attach(9) dan write(90) |
| set [sayac] to (0) / change [sayac] by (1) (atur / ubah variabel) | sayac = 0; / sayac += 1; |
Contoh aktivitas untuk kelas coding robotika
Sembilan aktivitas di bawah diurutkan dari yang termudah sampai tersulit untuk pelajaran 40 menit, dan semuanya bisa dikerjakan dengan satu kit pengkabelan di atas. Memulai setiap aktivitas di mode Live adalah pendekatan yang bagus: siswa mengklik blok dan langsung melihat hasilnya, memantau nilai sensor di panggung, dan menemukan kesalahan mereka sendiri. Begitu program bekerja sesuai rencana, memindahkan blok yang sama ke mode Upload dan menuliskannya permanen ke board mengajarkan konsep “perangkat yang bekerja tanpa komputer”. Konsep pemrograman di balik aktivitas ini juga bisa kamu temukan dalam bentuk kode teks di artikel dasar pemrograman Arduino.
| Pelajaran | Aktivitas | Blok yang dipakai | Konsep yang dipelajari |
|---|---|---|---|
| 1 | Lampu sinyal berkedip (D13 atau D5) | Blok set digital pin, wait, forever | Urutan, perulangan tanpa akhir |
| 2 | Lampu lalu lintas (tiga LED di D5, D6, dan D7) | Blok set digital pin, wait | Pewaktuan, urutan keadaan |
| 3 | Menyalakan dan mematikan LED dengan tombol | Blok read digital pin, if … else | Input dan output, kondisi |
| 4 | Lampu tidur otomatis | Blok read analog pin, operator lebih kecil dari | Nilai analog, ambang |
| 5 | Peredup LED dengan potensiometer | Blok read analog pin, set pwm pin, pembagian | Penskalaan, PWM |
| 6 | Palang pintu servo | Blok set servo pin, perkalian dan pembagian | Perbandingan, sudut |
| 7 | Bel pintu dan melodi | Blok play pin with note, repeat | Frekuensi, nada, pengulangan |
| 8 | Sensor parkir (ekstensi HC-SR04) | Blok ekstensi, if … else, buzzer | Menambahkan ekstensi, mengukur jarak |
| 9 | Game paddle di panggung dengan potensiometer | Mode Live, variabel, gerakan sprite | Interaksi hardware dan software |
Konversi angka adalah bagian paling mendidik dari pelajaran ini. Potensiometer memberi nilai 0 sampai 1023, sedangkan PWM mengharapkan 0 sampai 255, jadi di aktivitas 5 kamu membagi hasil bacaan dengan 4 (1023 ÷ 4 ≈ 255). Untuk mengubah nilai yang sama menjadi sudut servo, kamu menyusun nilai × 180 ÷ 1023 dengan blok operator. Di aktivitas 9, kamu memberi Arduino skrip “when green flag clicked, forever, set [pot] to (read analog pin A1)” di mode Live; di sprite, variabel yang sama kamu pakai di blok set x to (pot × 480 ÷ 1023 − 240) untuk menyebarkan paddle di sepanjang lebar panggung dari −240 sampai 240. Kalau kamu tidak mencentang pilihan “for all sprites” (untuk semua sprite) ketika membuat variabel, perangkat dan sprite tidak bisa melihat variabel yang sama. Untuk sensor parkir, buka Extension Center dengan tombol + extension di bagian bawah palet blok lalu tambahkan ekstensi sensor ultrasonik; sebagian besar ekstensi ini dibuat oleh pengembang komunitas, jadi nama blok dan pin yang didukung berbeda dari satu ekstensi ke ekstensi lain. Cara kerja sensornya ada di artikel sensor jarak HC-SR04, dan frekuensi nada di artikel buzzer.
Pindah ke Arduino IDE: dari blok ke kode asli
Pada suatu titik, blok tidak lagi cukup: ketika program makin besar area skrip jadi berantakan, kamu butuh library sensor yang tidak ada di Extension Center, atau kamu ingin menjalankan beberapa tugas sekaligus tanpa delay. Itulah waktunya untuk instalasi Arduino IDE dan pindah ke kode teks; menambahkan library untuk sensor baru pun jadi sepenuhnya di tanganmu. Cara terbaik untuk memperhalus peralihan ini adalah menulis ulang proyek yang kamu buat di mBlock di Arduino IDE, sehingga kamu melihat dua tampilan dari logika yang sama berdampingan.
- Di mBlock, pilih dan salin kode di panel Arduino C; buka sketch baru di Arduino IDE lalu tempelkan.
- Pilih board (Arduino Uno) dan port dari menu Tools, lalu klik Verify dulu dan Upload setelahnya. Kodenya harus bekerja sama seperti di mBlock.
- Lalu sederhanakan kodenya: kumpulkan baris pinMode di setup(), pindahkan isi perulangan while(1) ke loop(), dan pakai delay() atau millis() sebagai ganti _delay().
- Ganti variabel float menjadi int atau bool kalau memang cocok, dan beri nomor pin nama yang bermakna dengan const int.
- Cetak variabel ke Serial Monitor untuk mengikuti apa yang dikerjakan program; itulah padanan pemantauan langsung di mBlock dalam kode teks.
Di bawah ini program yang menggabungkan aktivitas 3 dan 4, yaitu lampu tidur otomatis yang kamu nyalakan dan matikan dengan tombol, ditulis di Arduino IDE. Nomor pinnya sesuai dengan tabel pengkabelan di atas.
1// mBlock gece lambası etkinliğinin Arduino IDE ile yazılmış hali
2// The mBlock night-light activity rewritten for the Arduino IDE
3const int LED_PIN = 5; // LED + 220 ohm direnç (PWM pini) / LED + 220 ohm resistor (PWM pin)
4const int BUTON_PIN = 2; // buton 5V'a, 10k pull-down GND'ye / button to 5V, 10k pull-down to GND
5const int LDR_PIN = A0; // LDR + 10k gerilim bölücü / LDR + 10k voltage divider
6const int ESIK = 400; // bu değerin altı "karanlık" sayılır / below this value counts as "dark"
7
8bool sistemAcik = true; // butonla açılıp kapanır / toggled with the button
9int oncekiButon = LOW; // önceki buton durumu / previous button state
10unsigned long sonYazma = 0; // son Seri Monitör yazma zamanı / last Serial Monitor print time
11
12void setup() {
13 pinMode(LED_PIN, OUTPUT);
14 pinMode(BUTON_PIN, INPUT); // harici pull-down olduğu için INPUT / INPUT because of the external pull-down
15 Serial.begin(9600); // Seri Monitör 9600 baud / Serial Monitor at 9600 baud
16}
17
18void loop() {
19 int buton = digitalRead(BUTON_PIN);
20 if (buton == HIGH && oncekiButon == LOW) { // yalnız basıldığı an / only at the moment of the press
21 sistemAcik = !sistemAcik;
22 delay(30); // basit debounce / simple debounce
23 }
24 oncekiButon = buton;
25
26 int isik = analogRead(LDR_PIN); // 0 karanlık, 1023 aydınlık / 0 dark, 1023 bright
27 if (sistemAcik && isik < ESIK) {
28 int parlaklik = map(isik, 0, ESIK, 255, 40); // karardıkça daha parlak / brighter as it gets darker
29 analogWrite(LED_PIN, parlaklik);
30 } else {
31 analogWrite(LED_PIN, 0);
32 }
33
34 if (millis() - sonYazma >= 500) { // delay olmadan yarım saniyede bir yaz / print every half second without delay
35 sonYazma = millis();
36 Serial.print("Isik: ");
37 Serial.print(isik);
38 Serial.print(" Sistem: ");
39 Serial.println(sistemAcik ? "acik" : "kapali");
40 }
41}Perhatikan bedanya dengan versi mBlock: setup() hanya berjalan sekali dan menyiapkan pin, sedangkan loop() berulang dengan sendirinya, jadi while(1) tidak diperlukan. Tombol dibandingkan dengan keadaan sebelumnya dan hanya dicatat pada momen ditekan; kalau tidak, selama jarimu masih di tombol, sistem akan menyala-mati ratusan kali per detik. Fungsi map() menskalakan nilai LDR ke antara 255 dan 40, sehingga LED menyala makin terang ketika ruangan makin gelap. Pencetakan ke Serial Monitor terjadi setiap setengah detik dengan millis() sebagai ganti delay(), jadi program tidak melewatkan tekanan tombol selama menunggu. Detail teknik ini ada di millis vs delay, dan cara mencetak data lebih lanjut ada di artikel Serial Monitor Arduino.
Program yang sama di ESP32 dan Raspberry Pi Pico
Device library mBlock berisi board berbasis ESP32 buatan Makeblock sendiri seperti CyberPi dan HaloCode, tapi tidak ada perangkat resmi untuk board pengembangan ESP32 biasa atau Raspberry Pi Pico; ekstensi komunitas yang kadang kamu lihat juga berubah dari versi ke versi. Kabar baiknya, logika yang kamu pelajari dengan blok tidak berubah dari board ke board. Ketika memprogram ESP32 dengan Arduino IDE, kamu memakai kode yang hampir sama; yang berubah hanya nomor pin, tegangan kerja 3,3 V, dan skala ADC 12-bit 0–4095. Karena itu ambang gelapnya menjadi sekitar 1600, bukan 400.
1// Aynı gece lambası ESP32'de (Arduino IDE) / The same night light on the ESP32 (Arduino IDE)
2const int LED_PIN = 18; // LED + 220 ohm direnç / LED + 220 ohm resistor
3const int BUTON_PIN = 4; // buton 3V3'e, 10k pull-down GND'ye / button to 3V3, 10k pull-down to GND
4const int LDR_PIN = 34; // ADC1 girişi, LDR + 10k bölücü (3V3) / ADC1 input, LDR + 10k divider (3V3)
5const int ESIK = 1600; // ESP32 ADC 12 bit: 0-4095 / ESP32 ADC is 12-bit: 0-4095
6
7bool sistemAcik = true; // butonla açılıp kapanır / toggled with the button
8int oncekiButon = LOW; // önceki buton durumu / previous button state
9unsigned long sonYazma = 0; // son yazma zamanı / last print time
10
11void setup() {
12 pinMode(LED_PIN, OUTPUT);
13 pinMode(BUTON_PIN, INPUT); // harici pull-down / external pull-down
14 Serial.begin(115200); // ESP32 için yaygın hız / common speed for the ESP32
15}
16
17void loop() {
18 int buton = digitalRead(BUTON_PIN);
19 if (buton == HIGH && oncekiButon == LOW) { // yalnız basıldığı an / only at the moment of the press
20 sistemAcik = !sistemAcik;
21 delay(30); // basit debounce / simple debounce
22 }
23 oncekiButon = buton;
24
25 int isik = analogRead(LDR_PIN); // 0 karanlık, 4095 aydınlık / 0 dark, 4095 bright
26 if (sistemAcik && isik < ESIK) {
27 analogWrite(LED_PIN, map(isik, 0, ESIK, 255, 40)); // karardıkça daha parlak / brighter as it gets darker
28 } else {
29 analogWrite(LED_PIN, 0);
30 }
31
32 if (millis() - sonYazma >= 500) { // yarım saniyede bir yaz / print every half second
33 sonYazma = millis();
34 Serial.printf("Isik: %d Sistem: %s\n", isik, sistemAcik ? "acik" : "kapali");
35 }
36}Di Raspberry Pi Pico, jalur yang paling umum adalah MicroPython. Program di bawah, yang kamu jalankan di editor Thonny, melakukan pekerjaan yang sama: read_u16() mengembalikan nilai ADC dari 0 sampai 65535, dan duty_u16() mengharapkan duty cycle PWM dalam skala yang sama. Kenapa Python adalah langkah kedua yang bagus setelah coding blok kami jelaskan di artikel dasar-dasar MicroPython.
1# Aynı gece lambası Raspberry Pi Pico'da (MicroPython) / The same night light on Raspberry Pi Pico (MicroPython)
2from machine import Pin, ADC, PWM
3import time
4
5led = PWM(Pin(14)) # LED + 220 ohm direnç / LED + 220 ohm resistor
6led.freq(1000) # PWM frekansı 1 kHz / PWM frequency 1 kHz
7buton = Pin(2, Pin.IN, Pin.PULL_DOWN) # buton 3V3'e, pull-down / button to 3V3, pull-down
8ldr = ADC(26) # GP26 = ADC0, LDR + 10k bölücü / GP26 = ADC0, LDR + 10k divider
9ESIK = 25000 # 0-65535 arası karanlık eşiği / darkness threshold on 0-65535
10
11sistem_acik = True # butonla açılıp kapanır / toggled with the button
12onceki = 0 # önceki buton durumu / previous button state
13son_yazma = time.ticks_ms() # son yazma zamanı / last print time
14
15while True:
16 b = buton.value()
17 if b == 1 and onceki == 0: # yalnız basıldığı an / only at the moment of the press
18 sistem_acik = not sistem_acik
19 time.sleep_ms(30) # basit debounce / simple debounce
20 onceki = b
21
22 isik = ldr.read_u16() # 0 karanlık, 65535 aydınlık / 0 dark, 65535 bright
23 if sistem_acik and isik < ESIK:
24 # karardıkça daha parlak / brighter as it gets darker
25 led.duty_u16(65535 - isik * 55000 // ESIK)
26 else:
27 led.duty_u16(0)
28
29 if time.ticks_diff(time.ticks_ms(), son_yazma) >= 500: # yarım saniyede bir / every half second
30 son_yazma = time.ticks_ms()
31 print("Isik:", isik, " Sistem:", "acik" if sistem_acik else "kapali")Membuka proyek yang sama sebagai blok di ponselmu
Kalau kamu ingin melanjutkan logika blok yang kamu bangun di mBlock ketika sedang jauh dari komputer, coba lihat aplikasi BlueGrays. Kode lebih dari 100 proyek Arduino, ESP32, dan Raspberry Pi Pico di aplikasi ini juga tersedia dalam blok buatan kami sendiri yang berbasis Blockly. Aktifkan Tampilkan sebagai blok di sebuah proyek dan kodenya berganti menjadi program yang sama dalam bentuk blok; tab Pahami blok lalu menjelaskan fungsi setiap blok langkah demi langkah. Aktivitas LED, lampu lalu lintas, LED dengan tombol, lampu tidur LDR, buzzer, sensor parkir, dan servo dengan potensiometer dari panduan ini semuanya ada di sana, baik sebagai blok maupun sebagai kode Arduino C, dan kamu bisa berpindah di antara keduanya dengan sekali ketuk. Membandingkan urutan yang kamu susun di mBlock dengan blok di aplikasi adalah cara mudah untuk melihat bagaimana logika yang sama dibangun di dua alat yang berbeda.
Untuk ESP32 dan Pico, yang seperti disebut di atas tidak punya perangkat resmi di mBlock, aplikasi ini juga punya proyek dengan blok: lihat dulu versi bloknya, lalu lanjut ke kode Arduino C atau MicroPython dari proyek yang sama. Di Panduan kode aplikasi, contoh perintah dasar seperti digitalWrite, if/else, dan perulangan juga ditampilkan sebagai blok. Kalau kamu ingin memperkuat apa yang sudah dipelajari, Soal harian memberimu 5 soal setiap hari sesuai level dari A1 sampai C2, ditambah peringkat mingguan dan lencana.
Masalah koneksi yang umum dan solusinya
| Gejala | Kemungkinan penyebab | Solusi |
|---|---|---|
| Daftar port kosong | Kabel khusus pengisian daya atau driver CH340 belum ada | Pakai kabel data dan instal driver CH340; Device Manager harus menampilkan baris seperti “USB-SERIAL CH340 (COM3)” |
| Port muncul tapi tidak mau terhubung | Ada program lain yang memakai port | Tutup Serial Monitor Arduino IDE, jendela mBlock kedua, atau tab web |
| Sudah terhubung, tapi upload gagal | Board yang dipilih di Device Library salah | Pilih model board yang tepat; untuk Nano klon, coba Arduino Nano (old) |
| Daftar port tidak terbuka di versi web | Browser tidak mendukung port serial | Pakai Chrome atau Edge versi terbaru |
| Leonardo tidak mau terhubung di versi web | Koneksi langsung tidak mendukung Leonardo, Micro, dan Yun | Instal mLink atau pakai versi desktop |
| Blok tidak merespons di mode Live | Firmware belum ada, atau terhapus oleh program yang di-upload | Upload ulang firmware lewat Setting > Update Firmware |
| Upload selesai tapi program tidak jalan | Blok tidak berada di bawah when Arduino Uno starts up | Pasang program ke hat block; blok yang lepas tidak diubah menjadi kode |
| Program macet atau board terus reset | Servo atau motor menarik arus terlalu besar dari USB | Beri daya servo dan motor dari catu 5 V eksternal dan satukan GND-nya |
| mLink tidak mau terinstal atau terbuka | Antivirus atau firewall memblokirnya | Izinkan instalasinya dan tambahkan mLink ke daftar tepercaya |
Cara cepat untuk mengetahui apakah masalahnya dari mBlock atau dari board adalah mencoba meng-upload contoh Blink ke board yang sama dengan Arduino IDE. Kalau Arduino IDE juga menampilkan error seperti avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x00, berarti board dan komputer tidak bisa berkomunikasi: masalahnya ada di port, kabel, jenis board, atau bootloader. Semua penyebab error ini kami bahas di panduan kode Arduino gagal di-upload; untuk chip CH340 dan driver-nya, lihat artikel konverter USB-TTL. Kalau board me-reset dirinya sendiri ketika servo terhubung, tips catu daya di Arduino terus reset akan membantu.
Ide proyek yang bisa kamu buat dengan mBlock
- Lampu lalu lintas dengan tombol penyeberang: tekan tombol dan lampu kendaraan berubah merah sementara lampu hijau penyeberang menyala; untuk rangkaian dan kodenya, lihat artikel Lampu Lalu Lintas Arduino.
- Sensor parkir: bunyi bip yang makin cepat dan LED yang menyala makin banyak ketika HC-SR04 mengukur jarak yang makin pendek.
- Robot penghindar rintangan: mobil dengan dua motor dan sensor jarak yang melihat rintangan di depan lalu berbelok; detailnya ada di panduan robot penghindar rintangan.
- Robot pengikut garis: robot lomba yang mengikuti lakban hitam memakai sensor inframerah (robot pengikut garis).
- Pengendali panggung: game di mode Live tempat potensiometer atau joystick mengemudikan pesawat luar angkasa di panggung.
- Penyiraman tanaman otomatis: sistem yang menyalakan pompa kecil ketika sensor kelembapan tanah mendeteksi tanah yang kering.
- Radar servo: proyek yang memindai sekelilingnya dengan sensor jarak yang dipasang di servo dan menggambar layar radar di panggung (Proyek Radar Arduino).
- Mobil robot: bawa logika motor dan sensor yang kamu pelajari di mBlock ke proyek Mobil Robot Arduino.
mBlock adalah cara paling ramah untuk memprogram Arduino sungguhan dengan kenyamanan coding blok, lalu pindah ke kode teks ketika kamu sudah siap. Kalau belum punya board, kamu bisa mencoba aktivitas yang sama di browser dengan simulasi Arduino di Tinkercad. Di aplikasi BlueGrays kamu akan menemukan skema rangkaian dan kode langkah demi langkah untuk proyek LED, lampu lalu lintas, LED dengan tombol, lampu tidur LDR, buzzer, sensor parkir HC-SR04, dan servo dengan potensiometer, dan kamu juga bisa membuka proyek yang sama sebagai blok, sehingga versi blok dan versi kode teks dari setiap aktivitas yang kamu buat di mBlock bisa dibandingkan dengan sekali ketuk.
Pertanyaan umum
Apakah mBlock gratis?
Ya. Versi desktop, web, dan mobile mBlock 5 gratis, dan kamu bahkan tidak butuh akun untuk memprogram Arduino. Hanya beberapa ekstensi yang memakai AI dan layanan cloud yang punya batas pemakaian harian dan memintamu masuk ke akun.
Kenapa mBlock tidak mendeteksi Arduino-ku?
Penyebab paling umum adalah kabel USB khusus pengisian daya atau driver CH340 yang belum terinstal; sebagian besar board klon memakai chip ini. Colokkan board langsung ke komputer dengan kabel data, instal driver CH340, dan tutup program yang memakai port, seperti Serial Monitor Arduino IDE. Kalau port-nya muncul, centang Show all connectable devices di jendela koneksi dan pilih port yang benar secara manual.
Apa perbedaan mode Live dan mode Upload di mBlock?
Di mode Live, program berjalan di komputer dan mengirim perintah ke Arduino lewat USB; kamu langsung melihat hasilnya, tapi program berhenti ketika kabel dicabut, dan board butuh firmware mBlock. Di mode Upload, blok diterjemahkan ke Arduino C dan ditulis permanen ke board; program berjalan tanpa kabel dan harus dimulai dengan blok when Arduino Uno starts up.
Apakah kode mBlock bisa dipakai di Arduino IDE?
Bisa. Di mode Upload, buka panel kode Arduino C di sebelah kanan, salin kodenya, lalu tempel dan kompilasi di Arduino IDE. mBlock mengubah blok forever menjadi perulangan while(1) di dalam setup() dan mendeklarasikan variabel sebagai float; kodenya bisa jalan apa adanya, tapi sebaiknya disederhanakan ke struktur loop() yang biasa supaya lebih mudah dibaca.
Apakah mBlock mendukung ESP32 atau Raspberry Pi Pico?
mBlock bisa memprogram board berbasis ESP32 buatan Makeblock seperti CyberPi dan HaloCode, tapi tidak ada dukungan perangkat resmi untuk board pengembangan ESP32 biasa atau Raspberry Pi Pico. Untuk board itu, lebih baik pakai Arduino IDE untuk ESP32 dan MicroPython di Thonny untuk Pico; logika yang kamu pelajari dengan blok tetap berlaku.
Sebaiknya pakai mBlock 3 atau mBlock 5?
Kalau kamu baru mulai, pakai mBlock 5. Editor web mBlock 3 yang berbasis Flash sudah tidak jalan di browser masa kini, dan versi Mac 32-bit-nya tidak bisa dibuka di macOS 10.15 ke atas. mBlock 5 berbasis Scratch 3.0, bisa membuka proyek mBlock 3 dan Scratch, dan board serta ekstensi baru terus ditambahkan ke dalamnya.
Proyek untuk dibuat setelah membaca ini
Lihat semua proyek
LED Berkedip
"Halo" pertama di dunia elektronika: menyalakan dan mematikan satu LED. Arduino menyalakan dan mematikan LED dengan jeda singkat, sehingga cahayanya berkedip cepat. Kamu melihat dengan cara paling sed

Lampu Lalu Lintas
Tiruan mini lampu lalu lintas yang kamu lihat di jalan setiap hari. Merah menyala dua detik, kuning menyala sebentar, hijau menyala dua detik, lalu kembali ke merah lewat kuning lagi, terus berulang.

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

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

Menggunakan Buzzer
Pernah penasaran bagaimana bel pintu atau alarm mengeluarkan suaranya? Arduino membuat buzzer kecil berbunyi bip dengan jeda singkat: bip, jeda, bip, jeda. Kamu melihat bagaimana suara dibuat dengan l

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

Menggerakkan Motor Servo dengan Potensiometer
Ketika kamu memutar kenop potensiometer, lengan motor servo ikut berputar: satu ujung kenop berarti nol derajat, ujung lainnya berarti setengah putaran. Arduino terus membaca posisi kenop dan servo la

Sensor Parkir dengan HC-SR04
Versi mini sensor parkir mobil: makin dekat sesuatu, makin cepat bunyi bipnya. Sensor jarak mengukur benda di depannya; jika jaraknya lebih dari 20 sentimeter LED hijau tetap menyala, dan begitu lebih
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

