Daftar Perintah Arduino: 36 Kartu, C++ dan MicroPython Berdampingan
Daftar perintah Arduino sesuai urutan belajar: 18 kartu dari pinMode sampai tone, padanannya di MicroPython, kode berdampingan, rencana 4 minggu, dan 8 kesalahan umum.
Cara paling andal untuk mempelajari perintah Arduino bukanlah menghafal daftar panjang, melainkan mempelajarinya secara berurutan, masing-masing dengan contoh kecil dan proyek sungguhan. Aplikasi BlueGrays punya Panduan kode persis untuk ini di bagian Pelajaran pada tab Belajar: 18 kartu di jalur Arduino C++, dari pinMode sampai tone, dan 18 kartu di jalur MicroPython, dari import sampai I2C, total 36 kartu. Setiap kartu memakai susunan yang sama: Fungsinya apa?, Kenapa?, Sintaks, Contoh (dengan tab Blok, Arduino, dan MicroPython), Kesalahan umum, Tips, Lihat di proyek, dan Tes mini berisi dua soal. Urutannya juga tetap: pin dulu (pinMode, digitalWrite, digitalRead, analogRead, analogWrite), lalu waktu (delay, millis), lalu variabel, kondisi, perulangan, dan fungsi, dan terakhir Serial, map, random, dan tone. Kalau kamu memakai Raspberry Pi Pico, kamu mempelajari ide yang sama di jalur MicroPython dengan Pin, Pin.value, time.sleep, ADC.read_u16, dan PWM.
Tulisan ini adalah peta panduan tersebut. Pertama kamu akan melihat apa isi sebuah kartu, lalu 18 kartu di setiap jalur sesuai urutan aslinya di aplikasi, beserta padanannya di bahasa lain. Setelah itu ada tiga contoh singkat yang menyandingkan versi C++ dan MicroPython dari program yang sama, cara kerja tes mini dan pelacakan progres, urutan belajar 4 minggu, rutinitas harian 20 menit, dan 8 kesalahan paling umum dengan perintah-perintah ini. Kalau kamu mencari penjelasan detail setiap perintah, tulisan Daftar Perintah Arduino beserta contohnya memberi setiap perintah bagiannya sendiri; tulisan ini membahas urutan mempelajarinya dan cara berlatih.

Di mana Panduan kode dan bagaimana cara kerjanya?
Kamu membuka panduan ini dari tab Belajar di bawah: di bagian Pelajaran di atas, ketuk kotak Panduan kode. Ketika panduan terbuka, kamu melihat dua tab di atas: Arduino C++ dan MicroPython; aplikasi mengingat jalur mana yang terakhir kamu buka. Di bawah tab ada penghitung Yang sudah kamu pelajari dan baris Kartu berikutnya, jadi kamu tidak perlu mencari di mana kamu berhenti. Kartu dikelompokkan per topik: Pin, Waktu, Variabel, Kondisi, Loop, Fungsi, Port serial, Matematika, dan Suara; jalur MicroPython menambahkan Struktur dasar dan Penanganan error. Panduan kode itu gratis: kamu tidak butuh Premium untuk membaca kartu, melihat contoh, atau mengerjakan tes mini. Kartunya tersedia dalam 10 bahasa, jadi kamu membaca penjelasannya dalam bahasa apa pun yang kamu pakai di aplikasi.
Apa isi sebuah kartu?
Setiap kartu memakai kerangka yang sama, jadi setelah kartu ketiga kamu sudah tahu persis harus melihat ke mana. Tabel di bawah menunjukkan bagian-bagiannya memakai kartu ke-7 di jalur Arduino, millis; kolom kanan adalah ringkasan singkat dari isi kartu itu. Urutan bagiannya sendiri sudah merupakan urutan belajar: pertama kamu mendengar dalam satu kalimat apa fungsi perintahnya, lalu memahami kenapa kamu membutuhkannya lewat perbandingan sehari-hari, melihat cara menulisnya, membaca contoh yang berjalan, mengenali jebakan paling umum, dan menguji dirimu dengan dua soal.
| Bagian | Yang dibahas | Di kartu millis |
|---|---|---|
| Fungsinya apa? | Tugas perintah dalam satu kalimat | Memberi tahu berapa milidetik yang sudah berlalu sejak board menyala. |
| Kenapa? | Kenapa kamu membutuhkannya, lewat perbandingan sehari-hari | Seperti memasukkan kue ke oven lalu sesekali melirik jam: kamu mengerjakan hal lain sambil menunggu. |
| Sintaks | Cara menulis perintahnya | Ditulis sebagai unsigned long now = millis(); |
| Contoh | Program singkat yang berjalan; tab Blok, Arduino, dan MicroPython | Kode yang membalik keadaan LED setiap 500 ms; di Pico, pekerjaan yang sama dengan time.ticks_ms |
| Kesalahan umum | Jebakan yang paling sering dialami pemula | Menyimpan millis di int: angkanya rusak setelah sekitar 33 detik. |
| Tips | Aturan kecil yang memudahkan hidup | Selalu tulis pengecekannya sebagai now - previous >= interval. |
| Lihat di proyek | Proyek yang memakai perintah ini, dari mudah ke sulit | Lebih dari 50 proyek; daftarnya diawali proyek tombol ESP32 yang gratis |
| Tes mini | Dua soal, penjelasan singkat setelah setiap jawaban | Apa yang dikembalikan millis()? Di tipe apa sebaiknya kamu menyimpan millis? |
Bagian Contoh terbuka di jalur kartu itu sendiri: di kartu Arduino, tab Arduino tampil lebih dulu, di kartu MicroPython tab MicroPython. Tapi tab yang lain selalu ada juga, dan itulah yang membuat panduan ini menjadi kamus. Misalnya, di kartu Pin output: Pin(15, Pin.OUT) pada jalur MicroPython, tab Arduino berisi kode yang melakukan pekerjaan yang sama dengan pinMode dan digitalWrite, dan komentarnya menjelaskan baris mana yang sesuai dengan apa (misalnya baris yang menggantikan led.toggle()). Hampir setiap kartu juga punya tab ketiga, Blok, yang menampilkan program contoh dalam bentuk blok. Kalau kamu pindah dari Arduino ke Pico, cara tercepatnya begini: buka kartu yang sudah kamu kenal, ganti tab, lalu cocokkan kedua program baris demi baris.
Jalur Arduino C++: 18 kartu dan padanannya di MicroPython
Tabel di bawah adalah urutan asli jalur Arduino di aplikasi; kolom terakhir menunjukkan cara melakukan pekerjaan yang sama di MicroPython pada Raspberry Pi Pico. Nomor pin sama dengan contoh di kartu: untuk LED, 13 atau 9 di Uno dan GP15 di Pico; untuk tombol, 2 di Uno dan GP14 di Pico; untuk pembacaan analog, A0 di Uno dan GP26 di Pico. Lima kartu pertama membahas pin, kartu 6 dan 7 membahas waktu, kartu 8 sampai 14 membahas dasar-dasar pemrograman, dan empat terakhir membahas port serial, penskalaan, angka acak, dan suara. Urutan ini disengaja: pertama kamu belajar bagaimana board bersentuhan dengan dunia luar, lalu kamu mengendalikan sentuhan itu dengan variabel, kondisi, dan perulangan.
| No. | Kartu | Fungsinya apa? | Padanan di MicroPython |
|---|---|---|---|
| 1 | pinMode | Memberi tahu board apakah sebuah pin adalah output (LED, buzzer) atau input (tombol, sensor) | Pin(15, Pin.OUT) · Pin(14, Pin.IN, Pin.PULL_UP) |
| 2 | digitalWrite | Menyalakan (HIGH, 5 V) atau mematikan (LOW, 0 V) pin output | led.value(1) · led.on() · led.off() (nyala / mati) |
| 3 | digitalRead | Membaca apakah pin input sedang HIGH atau LOW | button.value() → 1 atau 0 |
| 4 | analogRead | Mengubah tegangan di A0–A5 menjadi angka dari 0 sampai 1023 | ADC(26).read_u16() → 0–65535 |
| 5 | analogWrite (PWM) | Meredupkan LED atau memperlambat motor dengan nilai dari 0 sampai 255 di pin ~ | PWM(Pin(15)) · freq(1000) · duty_u16(0–65535) |
| 6 | delay | Menghentikan kode sejenak selama jumlah milidetik yang ditentukan | time.sleep(0.5) · time.sleep_ms(500) (detik / milidetik) |
| 7 | millis | Milidetik sejak board menyala; mengatur waktu tanpa menghentikan kode | time.ticks_ms() · time.ticks_diff() |
| 8 | Variabel dan tipe data | Menyimpan nilai dengan tipe seperti int, float, bool, unsigned long | Tipe tidak ditulis: count = 0, volts = 3.3 |
| 9 | if / else if / else | Menjalankan kode yang berbeda tergantung pada sebuah kondisi | if / elif / else |
| 10 | Operator perbandingan dan logika | Menyusun kondisi dengan ==, !=, <, >, &&, ||, ! | ==, !=, <, > · and, or, not |
| 11 | Loop for | Mengulang tugas sebanyak jumlah yang ditentukan | for i in range(10): |
| 12 | Loop while | Mengulang selama sebuah kondisi bernilai benar | while kondisi: |
| 13 | Fungsi (void, parameter, return) | Memecah kode menjadi potongan bernama yang bisa dipakai ulang | def blink(times): … return (fungsi) |
| 14 | Array | Menyimpan nilai bertipe sama secara berurutan di bawah satu nama | List: pins = [2, 3, 4] · len(pins) (panjang list) |
| 15 | Serial.begin / print / println (komunikasi serial) | Mengirim teks dan nilai ke komputer (Serial Monitor) | print(x) · f-string; tidak perlu Serial.begin |
| 16 | map | Menskalakan satu rentang angka ke rentang lain | Tidak ada perintah bawaan: raw * 255 // 1023 atau fungsimu sendiri |
| 17 | random / randomSeed | Menghasilkan angka acak | import random · random.randint(1, 6) (angka acak) |
| 18 | tone / noTone | Memainkan nada dengan frekuensi tertentu di buzzer lalu menghentikannya | PWM: freq(440) · duty_u16(32768); duty_u16(0) untuk membungkamnya |
Jalur MicroPython: 18 kartu dan padanannya di Arduino
Jalur MicroPython ditulis dengan Raspberry Pi Pico sebagai acuan; contoh di kartu adalah program singkat yang bisa kamu jalankan di Pico, misalnya dengan Thonny. Urutannya sedikit berbeda dari jalur Arduino, karena di Python kamu perlu lebih dulu terbiasa dengan aturan bahasanya sendiri: menambahkan modul dengan import, mencetak dengan print, serta aturan indentasi dan titik dua. Tab Arduino di setiap kartu MicroPython juga berisi versi C++ dari program yang sama, jadi kalau kamu sudah mengenal Arduino, kamu bisa membaca tabelnya dari kanan ke kiri. Kalau kamu baru pertama kali memakai Pico, tulisan Apa Itu Raspberry Pi Pico? adalah persiapan yang bagus untuk instalasi dan pin.
| No. | Kartu | Fungsinya apa? | Padanan di Arduino |
|---|---|---|---|
| 1 | import dan from … import | Menambahkan modul seperti machine dan time ke program | #include untuk library; perintah dasar seperti pinMode dan delay sudah bawaan |
| 2 | print dan f-string | Mencetak teks dan nilai ke shell Thonny | Serial.begin(9600) + Serial.println() |
| 3 | Pin output: Pin(15, Pin.OUT) | Menjadikan pin GP sebagai output; value(), on(), off(), toggle() | pinMode(13, OUTPUT) + digitalWrite() |
| 4 | Pin input: Pin.IN, PULL_UP, PULL_DOWN | Menjadikan pin sebagai input, memilih resistor internal, membacanya dengan value() | pinMode(2, INPUT_PULLUP) + digitalRead() |
| 5 | time.sleep dan sleep_ms | Menghentikan program sejenak dalam hitungan detik atau milidetik | delay() |
| 6 | while True: loop tanpa akhir | Mengulang baris di bawahnya selama Pico menyala | loop() |
| 7 | Indentasi dan titik dua (:) | Menentukan baris mana yang termasuk ke blok mana | Kurung kurawal { } dan titik koma ; |
| 8 | Variabel: int, float, str, bool | Menyimpan nilai; tipenya ditentukan otomatis | int, float, String, bool (tipe ditulis) |
| 9 | if / elif / else, serta and / or / not | Bercabang berdasarkan kondisi dan menggabungkan kondisi | if / else if / else · &&, ||, ! |
| 10 | for dan range | Mengulang sebanyak jumlah yang ditentukan; range(0, 10) menghitung dari 0 sampai 9 | for (int i = 0; i < 10; i++) |
| 11 | List: [ ], indeks, len | Menyimpan beberapa nilai secara berurutan; item pertama ada di indeks 0 | Array: int pins[] = {2, 3, 4}; |
| 12 | def dan return (fungsi) | Memberi nama pada kode yang bisa dipakai ulang dan mengembalikan hasil | Fungsi void atau bertipe, return |
| 13 | ADC: pembacaan analog dengan read_u16 | Membaca tegangan di GP26, GP27, GP28 sebagai 0–65535 | analogRead() → 0–1023 |
| 14 | PWM: freq dan duty_u16 | Meredupkan LED, memainkan nada di buzzer | analogWrite() dan tone() |
| 15 | time.ticks_ms dan ticks_diff | Mengukur waktu yang berlalu tanpa menghentikan kode | millis() |
| 16 | Pin.irq: tombol dengan interupsi | Menjalankan fungsi tepat pada momen tombol ditekan | attachInterrupt() |
| 17 | try / except (menangkap error) | Menjaga program agar tidak berhenti ketika terjadi error | Tidak ada padanan umum di Arduino; kamu mengecek nilai kembalian |
| 18 | I2C dan scan() | Menemukan alamat perangkat di bus I2C | Wire.begin() + kode scanner I2C |
Program yang sama dalam dua bahasa: 3 contoh berdampingan
Contoh pertama adalah “hello world” di setiap bahasa: membuat LED di board berkedip setiap setengah detik. Di Uno, LED bawaan terhubung ke pin 13, jadi kamu tidak perlu merakit rangkaian. Pico sedikit berbeda: di Pico biasa, LED onboard ada di GP25, tapi di Pico W LED-nya tersambung ke chip nirkabel dan Pin(25) tidak akan menyalakannya. Karena itu menulis Pin("LED", Pin.OUT) di MicroPython lebih aman; di versi MicroPython terbaru, nama ini menemukan LED onboard baik di Pico maupun Pico W. Kalau firmware di board-mu tidak mengenali nama “LED”, instal MicroPython versi terbaru di Pico. Proyek gratis Kedip LED Bawaan Raspberry Pi Pico (Pico dan Pico W) menjelaskan persis perbedaan ini.
1// Örnek 1: dahili LED'i yakıp söndür / Example 1: blink the built-in LED
2void setup() {
3 pinMode(13, OUTPUT); // Uno'da dahili LED 13. pinde / built-in LED is on pin 13 on the Uno
4}
5
6void loop() {
7 digitalWrite(13, HIGH); // LED yanar / LED on
8 delay(500); // 500 ms bekle / wait 500 ms
9 digitalWrite(13, LOW); // LED söner / LED off
10 delay(500); // 500 ms bekle / wait 500 ms
11}1# Örnek 1: dahili LED'i yakıp söndür / Example 1: blink the onboard LED
2from machine import Pin
3import time
4
5led = Pin("LED", Pin.OUT) # Pico ve Pico W'de dahili LED / onboard LED on Pico and Pico W
6# Pin(25, Pin.OUT) yalnız düz Pico'da çalışır / Pin(25, Pin.OUT) works only on the plain Pico
7
8while True: # Arduino'daki loop() gibi / like loop() in Arduino
9 led.on() # LED yanar / LED on
10 time.sleep_ms(500) # 500 ms bekle / wait 500 ms
11 led.off() # LED söner / LED off
12 time.sleep_ms(500) # 500 ms bekle / wait 500 msContoh kedua menambahkan input: LED menyala selama tombol ditekan. Tombol dipasang di antara pin 2 dan GND di Uno, dan di antara GP14 dan GND di Pico. Di Uno kita memakai lagi LED bawaan di pin 13; di Pico, sambungkan LED eksternal ke GP15 lewat resistor 220 Ω (alat kalkulator resistor LED menghitung nilai ini untuk LED-mu sendiri). Kedua bahasa menyalakan resistor pull-up internal: INPUT_PULLUP di Arduino, Pin.PULL_UP di MicroPython. Dengan pengkabelan ini logikanya terbalik: menekan tombol menarik pin ke GND, jadi Arduino membaca LOW dan Pico membaca 0. Jeda 20 ms di akhir tidak sepenuhnya mengatasi pantulan mekanis tombol, tapi mengurangi kedipan yang sangat singkat. Detail pengkabelan tombol ada di tulisan cara menghubungkan tombol ke Arduino.
1// Örnek 2: butona basılıyken LED yanar / Example 2: LED on while the button is pressed
2const int BUTTON_PIN = 2; // buton: 2. pin ile GND arasında / button between pin 2 and GND
3const int LED_PIN = 13; // dahili LED / built-in LED
4
5void setup() {
6 pinMode(BUTTON_PIN, INPUT_PULLUP); // iç pull-up direnci açık / internal pull-up on
7 pinMode(LED_PIN, OUTPUT);
8}
9
10void loop() {
11 if (digitalRead(BUTTON_PIN) == LOW) { // basılıyken LOW okunur / reads LOW while pressed
12 digitalWrite(LED_PIN, HIGH);
13 } else {
14 digitalWrite(LED_PIN, LOW);
15 }
16 delay(20); // kısa bekleme / short pause
17}1# Örnek 2: butona basılıyken LED yanar / Example 2: LED on while the button is pressed
2from machine import Pin
3import time
4
5button = Pin(14, Pin.IN, Pin.PULL_UP) # buton: GP14 ile GND arasında / button between GP14 and GND
6led = Pin(15, Pin.OUT) # LED: GP15 + 220 ohm direnç / LED on GP15 with 220 ohm
7
8while True:
9 if button.value() == 0: # basılıyken 0 okunur / reads 0 while pressed
10 led.value(1)
11 else:
12 led.value(0)
13 time.sleep_ms(20) # kısa bekleme / short pauseContoh ketiga menunjukkan perbedaan terpenting di antara kedua bahasa: rentang angka. Pin tengah potensiometer masuk ke A0 di Uno dan GP26 di Pico; pin luarnya masuk ke 5V dan GND di Uno, dan ke 3V3 (OUT) dan GND di Pico. LED dipasang di pin 9 (bertanda ~) di Uno dan di GP15 di Pico, masing-masing dengan resistor 220 Ω. Di Arduino, analogRead mengembalikan 0–1023 tapi analogWrite mengharapkan 0–255, karena itulah map(raw, 0, 1023, 0, 255) ada di tengahnya. Di Pico, read_u16 dan duty_u16 sama-sama memakai 0–65535, jadi kamu bisa langsung meneruskan hasil pembacaan ke PWM. Cara kerja PWM ada di tulisan Apa Itu PWM?, dan cara memantau nilai secara langsung ada di panduan Serial Monitor.
1// Örnek 3: potansiyometreyle LED parlaklığı / Example 3: LED brightness with a potentiometer
2const int POT_PIN = A0; // potansiyometrenin orta ucu / potentiometer wiper
3const int LED_PIN = 9; // ~ işaretli PWM pini / PWM pin marked with ~
4
5void setup() {
6 pinMode(LED_PIN, OUTPUT);
7 Serial.begin(9600);
8}
9
10void loop() {
11 int raw = analogRead(POT_PIN); // 0-1023
12 int brightness = map(raw, 0, 1023, 0, 255); // 0-255 aralığına ölçekle / scale to 0-255
13 analogWrite(LED_PIN, brightness);
14 Serial.println(raw); // Seri Monitör'de izle / watch in the Serial Monitor
15 delay(50);
16}1# Örnek 3: potansiyometreyle LED parlaklığı / Example 3: LED brightness with a potentiometer
2from machine import Pin, ADC, PWM
3import time
4
5pot = ADC(26) # GP26 = ADC0, orta uç / wiper on GP26 (ADC0)
6led = PWM(Pin(15)) # LED: GP15 + 220 ohm direnç / LED on GP15 with 220 ohm
7led.freq(1000) # saniyede 1000 aç-kapa / 1000 cycles per second
8
9while True:
10 raw = pot.read_u16() # 0-65535
11 led.duty_u16(raw) # aynı aralık, ölçekleme gerekmez / same range, no scaling needed
12 print(raw) # Thonny kabuğunda izle / watch in the Thonny shell
13 time.sleep_ms(50)| Konsep | Arduino C++ | MicroPython (Pico) |
|---|---|---|
| Berjalan sekali | void setup() { … } | Baris-baris sebelum while True: |
| Berulang selamanya | void loop() { … } | while True: dan baris menjorok di bawahnya |
| Blok kode | Kurung kurawal { } dan ; di akhir baris | : di akhir baris dan indentasi 4 spasi |
| Komentar | // komentar | # komentar |
| Pin output | pinMode(13, OUTPUT); digitalWrite(13, HIGH); | led = Pin(15, Pin.OUT) · led.value(1) (nyala) |
| Pin input | pinMode(2, INPUT_PULLUP); digitalRead(2) | Pin(14, Pin.IN, Pin.PULL_UP) · button.value() |
| Pembacaan analog | analogRead(A0) → 0–1023 | ADC(26).read_u16() → 0–65535 |
| Output PWM | analogWrite(9, 0–255) | PWM(Pin(15)).duty_u16(0–65535) |
| Menunggu | delay(500) | time.sleep_ms(500) atau time.sleep(0.5) |
| Mencetak | Serial.begin(9600); Serial.println(x); | print(x) |
Tes mini, “Paham”, dan progresmu di Level-ku
- Tes mini: Setiap kartu diakhiri dua soal, dan judulnya berbunyi Tes mini · 1 / 2. Ketika kamu mengetuk sebuah pilihan, kamu langsung mendapat Benar. atau Belum tepat. beserta penjelasan singkat; kamu lanjut dengan Soal berikutnya.
- Skor: Setelah kedua soal selesai, kamu melihat skor seperti 2 / 2 benar. Kartu tidak bisa dituntaskan tanpa tes; di tempat tombolnya tertulis Selesaikan tes mini untuk menuntaskan kartu ini.
- Paham: Begitu tes selesai, tombol Paham, kartu berikutnya muncul (di kartu terakhir sebuah jalur, tombolnya hanya Paham). Mengetuknya menyimpan kartu sebagai sudah dipelajari di akunmu, sebuah perayaan singkat menunjukkan progresmu, seperti Mantap! 5 / 18 kartu, lalu kartu berikutnya terbuka.
- Tanda dan penghitung: Kartu yang sudah kamu pelajari menampilkan tanda Dipelajari di daftar, dan penghitung Yang sudah kamu pelajari di bagian atas panduan bertambah. Ketika kamu menuntaskan semua kartu di sebuah jalur, kamu melihat Kamu sudah mempelajari semua kartu di jalur ini.
- Level-ku: Di layar Level-ku pada bagian Belajar, di bawah judul Panduan kode dan catatan Kartu yang sudah kamu pelajari, ada dua bilah terpisah: Arduino C++ x/18 dan MicroPython x/18. Bilah ini hanya menghitung kartu di panduan kode.
- Aturan jujur untuk dirimu sendiri: Aplikasi tidak menghentikanmu setelah jawaban yang salah; tombol Paham muncul begitu tes selesai. Jadi sebelum mengetuknya, pastikan kamu bisa menjelaskan dengan suara keras kenapa kedua jawaban itu benar; kalau belum bisa, kembali ke bagian Contoh dan baca kodenya baris demi baris sekali lagi.
Lihat di proyek: menemukan perintah di kode sungguhan
Langkah terakhir mempelajari sebuah perintah adalah mengenalinya di proyek yang berjalan dan ditulis orang lain. Bagian Lihat di proyek di sebuah kartu menampilkan beberapa proyek pilihan dengan satu kalimat di bawahnya yang menyebutkan berapa proyek yang memakai perintah itu di kodenya; tautan Semua membuka daftar lengkapnya. Daftar ini diurutkan dari mudah ke sulit dan bisa dipersempit dengan filter Semua, Gratis, dan Premium. Misalnya, millis muncul di kode lebih dari 50 proyek: daftarnya diawali proyek gratis Kendali LED dengan Tombol Tekan ESP32 (Toggle), berlanjut ke proyek Pico tingkat pemula seperti Piano Tombol Raspberry Pi Pico (5 Tombol + Buzzer + Perekam Melodi) dan Sensor Parkir Raspberry Pi Pico (HC-SR04 + 3 LED + Buzzer), lalu naik ke proyek tingkat menengah seperti Lampu Lalu Lintas Raspberry Pi Pico dengan Pemilih 4 Mode lewat Tombol (State Machine, GP11-13 + GP4) yang menggabungkan tombol dengan pengaturan waktu. Saran kami: buka proyek gratis dari daftar, temukan perintahnya di kode, ubah satu nilai, dan tebak dulu hasilnya. Untuk melihat apa yang dilakukan setiap baris kode, tab Pahami kode di proyek itu adalah langkah berikutnya yang paling wajar.
Urutan belajar yang disarankan: rencana 4 minggu
Anggap kamu bisa meluangkan sekitar 20 menit sehari, 5 hari seminggu. Untuk menuntaskan satu jalur dalam 4 minggu, satu kartu di sebagian besar hari sudah cukup; di hari lainnya kamu mengulang dan mengerjakan proyek, bukan kartu baru. Kalau kamu punya Arduino, ikuti kolom Arduino saja; kalau punya Pico, ikuti kolom MicroPython. Kalau punya keduanya, tuntaskan jalur Arduino dulu lalu pindah ke MicroPython di bulan kedua; konsepnya sama, jadi jalur kedua berjalan jauh lebih cepat. Semua proyek di tabel ini gratis di BlueGrays. Kalau kamu ingin rencana yang lebih luas, peta jalan 30 hari di tulisan aplikasi belajar Arduino cocok dipakai bersama tabel ini; kalau kamu mengajar dengan Pico, rencana pelajaran Raspberry Pi Pico menyebarkan kartu MicroPython ke dalam 6 minggu pelajaran.
| Minggu | Kartu Arduino C++ | Kartu MicroPython | Proyek gratis minggu ini | Yang bisa kamu lakukan di akhir minggu |
|---|---|---|---|---|
| 1 | 1–5: pinMode, digitalWrite, digitalRead, analogRead, analogWrite | 1–5: import, print, Pin output, Pin input, dan time.sleep | LED Berkedip, Kendali LED dengan Tombol Tekan (Tekan); Pico: Kedip LED Bawaan Raspberry Pi Pico (Pico dan Pico W) | Membuat LED berkedip, membaca tombol; di Arduino, melihat nilai analog |
| 2 | 6–10: delay, millis, variabel, if / else, operator | 6–9: while True, indentasi, variabel, if / elif / else | Lampu Tidur dengan LDR, Kendali LED dengan Tombol Tekan ESP32 (Toggle); Pico: Dua LED Bergantian Raspberry Pi Pico (Pola Kedip Bergantian, GP14 + GP13) | Mengambil keputusan berdasarkan hasil pembacaan, mengatur waktu tanpa menghentikan program |
| 3 | 11–14: for, while, fungsi, array | 10–13: for dan range, list, def, ADC | Efek LED Knight Rider, LED Berjalan; Pico: Simulator Lampu Lalu Lintas Raspberry Pi Pico (3 LED Berurutan, GP11/GP12/GP13) | Memakai perulangan untuk pengulangan, array untuk pin, dan fungsi untuk tugas |
| 4 | 15–18: Serial, map, random, dan tone | 14–18: PWM, ticks_ms, Pin.irq, try / except, dan I2C | Menggunakan Buzzer, Mengukur Intensitas Cahaya dengan LDR; Pico: Lampu Lalu Lintas Raspberry Pi Pico dengan Pemilih 4 Mode lewat Tombol (State Machine, GP11-13 + GP4) | Mencetak nilai, mengatur suara dan kecerahan, membuat proyek kecil dari nol |
Rutinitas harian 20 menit
- 3 menit, pemanasan: Kerjakan soal harian di bagian Belajar atau ulangi tes mini kemarin. Tujuannya mengecek apakah perintah kemarin masih kamu ingat hari ini.
- 5 menit, kartu baru: Baca bagian Fungsinya apa?, Kenapa?, dan Sintaks. Salin sintaksnya ke kertas dengan tangan; menulisnya membuat matamu lebih sulit melewatkan tanda kurung dan titik koma.
- 3 menit, contoh: Jelaskan contohnya ke dirimu sendiri baris demi baris, lalu ganti tab. Di kartu Arduino lihat tab MicroPython, di kartu MicroPython tab Arduino, lalu cocokkan baris yang melakukan pekerjaan yang sama di kedua program.
- 2 menit, tes mini: Jawab kedua soal dan baca penjelasan soal yang salah. Lirik sekali lagi kotak Kesalahan umum dan Tips di tahap ini.
- 6 menit, proyek: Buka proyek gratis yang mudah dari daftar Lihat di proyek, temukan perintahnya di kode, dan ubah satu nilai saja: delay, nomor pin, atau ambang. Kalau rangkaianmu sudah siap, upload ke board; kalau belum, tebak hasilnya lalu cek dengan Pahami kode.
- 1 menit, catatan: Tulis satu baris di buku catatanmu: nama perintah, artinya dalam satu kalimat, dan padanannya di bahasa lain. Di akhir empat minggu, halaman itu menjadi kamus perintahmu sendiri.
8 kesalahan umum dengan perintah-perintah ini
| Kesalahan | Gejala | Solusi | Kartu |
|---|---|---|---|
| Lupa pinMode | LED sama sekali tidak menyala atau sangat redup | Tulis pinMode(pin, OUTPUT) di setup(); di Pico buat pin-nya dengan Pin(15, Pin.OUT) | pinMode · Pin output |
| Menulis = alih-alih == di dalam kondisi | if (x = 5) selalu benar, jadi program selalu menjalankan cabang yang sama | Pakai == untuk membandingkan; di Python if x = 5 langsung memberi SyntaxError | if / else · operator |
| Mengunci kode dengan delay yang panjang | Kamu menekan tombol tapi reaksinya terlambat atau tidak pernah datang | Lakukan penantian dengan millis; di Pico pakai time.ticks_ms dan ticks_diff | delay · millis · ticks_ms |
| Salah memakai rentang analogRead | Ambang yang disalin dari Arduino tidak pernah terpicu di Pico | analogRead memberi 0–1023 di Uno, read_u16 memberi 0–65535 di Pico; hitung ulang ambangnya untuk rentang baru | analogRead · ADC |
| Membawa nilai analogWrite ke duty_u16 | Di Pico, duty_u16(255) membuat LED hampir gelap | duty_u16 mengharapkan 0–65535: setengah kecerahan adalah 32768, kecerahan penuh 65535 | analogWrite · PWM |
| Menyimpan millis di int | Di Uno, pengaturan waktu rusak setelah sekitar 33 detik | Jadikan variabel waktu unsigned long dan tulis pengecekannya sebagai now - previous >= interval | millis |
| Mengira logika INPUT_PULLUP kebalikannya | Kamu mengharapkan HIGH atau 1 ketika menekan tombol, tapi mendapat LOW atau 0 | Dengan pull-up, ditekan berarti LOW (0) dan dilepas berarti HIGH (1) | digitalRead · Pin input |
| Menulis sleep(500) di Pico | Pico menunggu 500 detik, lebih dari 8 menit, bukan setengah detik | sleep memakai satuan detik: tulis sleep(0.5) atau sleep_ms(500) | time.sleep |
Tab Blok: memahami perintah dengan melihatnya

Tab Blok memungkinkanmu melihat apa yang dilakukan sebuah perintah tanpa menulis kode, terutama di kartu-kartu pertama sebuah jalur. Di gambar di atas, pinMode menjadi blok “atur pin 9 sebagai OUTPUT”, digitalWrite menjadi “tulis HIGH ke pin 9”, dan delay menjadi “tunggu 100 ms”; di kartu pinMode, catatan di bawah tampilan blok juga mendaftar pilihan dropdown-nya: OUTPUT, INPUT, dan INPUT_PULLUP. Blok ditampilkan dalam bahasa aplikasi dan gunanya untuk dibaca: di aplikasi kamu tidak menyeret blok untuk menulis program, dan board selalu menerima kode aslinya. Cara pakai yang disarankan: tebak dulu apa yang akan dilakukan program di tab Blok, lalu pindah ke tab Arduino dan temukan baris mana yang sesuai dengan setiap blok. Di proyek yang punya tampilan blok, sakelar Tampilkan sebagai blok di halaman proyek memungkinkanmu melakukan pencocokan yang sama untuk seluruh proyek; dasar-dasarnya ada di tulisan Apa Itu Coding Blok?
Singkatnya, kamu tidak butuh daftar panjang untuk mempelajari perintah Arduino: urutan yang tepat, contoh kecil yang berjalan untuk setiap perintah, pengecekan dua soal, dan proyek sungguhan yang memakai perintah itu sudah cukup. Kalau kamu mulai dengan kartu pinMode hari ini, dalam empat minggu kamu akan menuntaskan ke-18 kartu dan melihat setiap perintah di minimal satu proyek dengan matamu sendiri; ketika pindah ke Pico, kamu akan melewati konsep yang sama di jalur MicroPython jauh lebih cepat. Kalau ingin mencoba kartu-kartunya dan proyek di dalamnya, instal BlueGrays di ponselmu dan buka kartu pertama di bagian Belajar.
Pertanyaan umum
Apa saja perintah dasar Arduino?
Perintah Arduino yang paling sering dipakai adalah perintah pin (pinMode, digitalWrite, digitalRead, analogRead, analogWrite), perintah waktu (delay, millis), perintah port serial di bawah Serial, dan perintah bantu seperti map, random, dan tone. Di samping itu, struktur C++ seperti if, for, dan while, ditambah fungsi, membangun alur program. Jalur Arduino C++ di Panduan kode BlueGrays membahas topik-topik ini secara berurutan dalam 18 kartu.
Perintah Arduino mana yang sebaiknya kupelajari pertama kali?
Mulailah dengan pinMode dan digitalWrite, karena dua perintah itu sudah cukup untuk menyalakan LED dan kamu langsung melihat hasilnya. Lalu tambahkan pengaturan waktu dengan delay dan pembacaan tombol dengan digitalRead. analogRead, millis, if, dan for semuanya dibangun di atas keempat perintah ini.
Apa bedanya perintah Arduino dan MicroPython?
Konsepnya sama, penulisannya berbeda: Pin(15, Pin.OUT) dan led.value(1) menggantikan pinMode dan digitalWrite, time.sleep_ms menggantikan delay, dan while True menggantikan loop(). Rentang angka juga berubah; analogRead mengembalikan 0–1023 di Uno, sedangkan read_u16 mengembalikan 0–65535 di Pico. Di Python, indentasi dan titik dua menggantikan kurung kurawal dan titik koma di C++.
Apakah ada perintah delay di MicroPython?
Tidak ada perintah bernama delay; sleep (detik), sleep_ms (milidetik), dan sleep_us (mikrodetik) dari modul time melakukan pekerjaan yang sama. delay(500) di Arduino menjadi time.sleep_ms(500) atau time.sleep(0.5) di Pico. Untuk mengatur waktu tanpa menghentikan kode, time.ticks_ms dan time.ticks_diff menggantikan millis.
LED onboard Raspberry Pi Pico ada di pin mana?
Di Pico biasa, LED onboard terhubung ke GP25. Di Pico W, LED-nya tersambung ke chip nirkabel, jadi Pin(25) tidak akan menyalakannya. Di versi MicroPython terbaru, Pin("LED", Pin.OUT) menemukan LED onboard di kedua board.
Apakah Panduan kode BlueGrays gratis?
Ya, Panduan kode itu gratis: kamu bisa membaca ke-36 kartu, melihat contohnya, dan mengerjakan tes mini. Daftar Lihat di proyek di kartu-kartunya berisi proyek gratis dan Premium; filter Gratis hanya menampilkan yang gratis.
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

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.

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

Kendali LED dengan Tombol Tekan ESP32 (Toggle)
Setiap kali tombol ditekan, keadaan LED berubah: jika menyala jadi mati, jika mati jadi menyala. Pola toggle klasik. Dengan debounce, kita membersihkan derau mekanis tombol tekan agar satu tekanan menghasilkan satu kali toggle.

Efek LED Knight Rider
Lampu pemindai klasik: sebuah titik cahaya meluncur dari satu ujung enam LED ke ujung lainnya lalu kembali. Arduino menyalakan setiap LED selama sepersepuluh detik sebelum pindah, berbalik di setiap u

Kedip LED Bawaan Raspberry Pi Pico (Pico dan Pico W)
Proyek pembuka seri Raspberry Pi Pico! Kita mengedipkan LED hijau bawaan untuk memastikan board bekerja; percobaan "Hello World" klasik. TANPA komponen eksternal, hanya Pico dan kabel USB. Kodenya ditulis dalam MicroPython (bahasa resmi dari Raspberry Pi Foundation). Pelajari kelas machine.Pin, mode Pin.OUT, metode led.on()/off(), dan time.sleep() di Thonny IDE, dan ikuti setiap perubahan di output Serial (REPL). Juga pas untuk menguji firmware MicroPython.

Dua LED Bergantian Raspberry Pi Pico (Pola Kedip Bergantian)
Langkah berikutnya setelah satu LED di Pico: dua LED berkedip bergantian dengan pola flip-flop klasik. Ketika satu mati, yang lain menyala; contoh paling dasar koordinasi beberapa GPIO. Dua LED berbeda warna (merah di GP14, hijau di GP13) bertukar status setiap 500 ms, dan metode Pin.toggle() MicroPython membuat kodenya singkat. Logika yang sama menjadi dasar lampu lalu lintas, lampu polisi, dan LED berjalan. Setiap LED memakai resistor 220Ω-nya sendiri.

Simulator Lampu Lalu Lintas Raspberry Pi Pico (3 LED Berurutan)
Kita menyimulasikan lampu lalu lintas sungguhan dengan LED merah, kuning, dan hijau; proyek 3 LED pertama di seri Pico! Hijau 4 detik "jalan", kuning 1,5 detik "siap", merah 3 detik "berhenti", dan merah+kuning 1 detik "bersiap" (pola Eropa). Pelajari pendefinisian fungsi (def all_off()), logika state machine, dan sinkronisasi beberapa GPIO. 3 LED di GP11 (Hijau), GP12 (Kuning), GP13 (Merah), masing-masing dengan resistor 220Ω, berdampingan di board.
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

