Arduino ve MicroPython Komutları Yan Yana: 36 Kartlık Kod Rehberi
Arduino komutları hangi sırayla öğrenilir? pinMode'dan tone'a 18 kart, MicroPython karşılıkları, yan yana örnekler, 4 haftalık plan ve 8 sık hata.
Arduino komutlarını öğrenmenin en düzenli yolu, onları uzun bir listeden ezberlemek yerine sırayla, her birini küçük bir örnekle ve bir projede görerek ilerlemektir. BlueGrays uygulamasında bunun için Öğren sekmesinin Dersler bölümünde Kod rehberi var: Arduino C++ yolunda pinMode'dan tone'a 18 kart, MicroPython yolunda import'tan I2C'ye 18 kart, toplam 36 kart. Her kart aynı düzende ilerler: Ne işe yarar?, Neden?, Söz dizimi, Örnek (Blok, Arduino ve MicroPython sekmeleri), Sık yapılan hata, İpucu, Bu konuyu projede gör ve iki soruluk Mini test. Sıra da bellidir: önce pinler (pinMode, digitalWrite, digitalRead, analogRead, analogWrite), sonra zaman (delay, millis), ardından değişken, koşul, döngü ve fonksiyon, en sonda Serial, map, random ve tone. Raspberry Pi Pico kullanıyorsan aynı kavramları MicroPython yolunda Pin, Pin.value, time.sleep, ADC.read_u16 ve PWM ile öğrenirsin.
Bu yazı rehberin haritası. Önce bir kartın içinde ne olduğunu, sonra iki yolun 18'er kartını uygulamadaki gerçek sırasıyla ve öbür dildeki karşılığıyla tablo hâlinde göreceksin. Ardından aynı programın C++ ve MicroPython hâllerini yan yana koyan üç kısa örnek, mini testin ve ilerleme kaydının nasıl işlediği, 4 haftalık bir öğrenme sırası, günlük 20 dakikalık bir rutin ve komutlarda en sık yapılan 8 hata geliyor. Komutların tek tek ayrıntılı anlatımını arıyorsan Arduino komutları ve anlamları yazısı her komutu ayrı bir başlıkta açıyor; bu yazı ise onları hangi sırayla ve nasıl çalışacağını anlatıyor.

Kod rehberi nerede, nasıl ilerler?
Rehbere alttaki Öğren sekmesinden girersin: üstteki Dersler bölümünde Kod rehberi kutucuğuna dokun. Rehber açılınca üstte iki sekme görürsün: Arduino C++ ve MicroPython; uygulama en son hangi yolu açtığını hatırlar. Sekmelerin altında Öğrendiklerin sayacı ve Sıradaki kart satırı var, böylece kaldığın yeri aramazsın. Kartlar konularına göre gruplanır: Pinler, Zaman, Değişkenler, Koşullar, Döngüler, Fonksiyonlar, Seri port, Matematik ve Ses; MicroPython yolunda bunlara Temel yapı ve Hata yakalama eklenir. Kod rehberi ücretsizdir: kartları okumak, örnekleri görmek ve mini testleri çözmek için Premium gerekmez. Kartlar 10 dilde hazır, yani uygulamayı hangi dilde kullanıyorsan açıklamaları o dilde okursun.
Bir kartın içinde neler var?
Her kart aynı iskeleti kullanır, bu yüzden üçüncü karttan sonra nereye bakacağını ezberden bilirsin. Aşağıdaki tabloda bölümleri Arduino yolunun 7. kartı olan millis üzerinden gösteriyoruz; sağ sütundaki metinler kartta yazanların kısa özetidir. Bölümlerin sırası da bir öğrenme sırasıdır: önce komutun ne yaptığını tek cümleyle duyarsın, sonra neden gerektiğini bir benzetmeyle kavrarsın, yazılış kalıbını görürsün, çalışan bir örneği okursun, en sık düşülen tuzağı öğrenirsin ve iki soruyla kendini sınarsın.
| Bölüm | Ne anlatır? | millis kartında |
|---|---|---|
| Ne işe yarar? | Komutun tek cümlelik görevi | Kart açıldığından bu yana kaç milisaniye geçtiğini söyler. |
| Neden? | Günlük hayattan bir benzetmeyle neden gerektiği | Fırına kek koyup arada bir saate bakmak gibi: beklerken başka işlerini de yaparsın. |
| Söz dizimi | Komutun yazılış kalıbı | unsigned long now = millis(); |
| Örnek | Kısa, çalışan bir program; Blok, Arduino ve MicroPython sekmeleri | LED'i 500 ms'de bir ters çeviren kod; Pico'da aynı iş time.ticks_ms ile |
| Sık yapılan hata | Yeni başlayanın en çok düştüğü tuzak | millis değerini int değişkende tutmak: yaklaşık 33 saniye sonra sayı bozulur. |
| İpucu | İşini kolaylaştıran küçük bir kural | Karşılaştırmayı hep şimdi - önceki >= süre biçiminde yaz. |
| Bu konuyu projede gör | Komutun geçtiği projeler, kolaydan zora | 50'yi aşkın proje; liste ücretsiz bir ESP32 buton projesiyle başlar |
| Mini test | İki soru, her cevaptan sonra kısa açıklama | millis() ne döndürür? millis değerini hangi türde saklamalısın? |
Örnek bölümü kartın kendi yoluyla açılır: Arduino kartında Arduino sekmesi, MicroPython kartında MicroPython sekmesi önde gelir. Ama öbür sekme de hep oradadır ve bu, rehberi bir sözlüğe çevirir. Örneğin MicroPython yolundaki Pin çıkışı: Pin(15, Pin.OUT) kartının Arduino sekmesinde aynı işi pinMode ve digitalWrite ile yapan kod durur; satır yorumları da hangi satırın neye karşılık geldiğini yazar (led.toggle() karşılığı gibi). Kartların neredeyse hepsinde üçüncü bir sekme olarak Blok da var ve örnek programı blok görünümünde gösterir. Arduino'dan Pico'ya geçen biri için en hızlı yöntem şudur: bildiğin kartı aç, sekmeyi değiştir, iki kodu satır satır eşleştir.
Arduino C++ yolu: 18 kart ve MicroPython karşılıkları
Aşağıdaki tablo Arduino yolunun uygulamadaki gerçek sırasıdır; son sütunda aynı işin Raspberry Pi Pico'da MicroPython ile nasıl yapıldığı var. Pin numaraları kartlardaki örneklerle aynı: LED için Uno'da 13 ya da 9, Pico'da GP15; buton için Uno'da 2, Pico'da GP14; analog okuma için Uno'da A0, Pico'da GP26. İlk beş kart pinleri, 6 ve 7 zamanı, 8–14 programlamanın temelini, son dördü de seri port, ölçekleme, rastgele sayı ve sesi anlatır. Sıra bilinçli: önce kartın dış dünyaya nasıl dokunduğunu öğrenir, sonra bu dokunuşları değişken, koşul ve döngüyle yönetirsin.
| Sıra | Kart | Ne işe yarar? | MicroPython karşılığı |
|---|---|---|---|
| 1 | pinMode | Pinin çıkış mı (LED, buzzer) giriş mi (buton, sensör) olacağını söyler | Pin(15, Pin.OUT) · Pin(14, Pin.IN, Pin.PULL_UP) |
| 2 | digitalWrite | Çıkış pinini açar (HIGH, 5 V) ya da kapatır (LOW, 0 V) | led.value(1) · led.on() · led.off() |
| 3 | digitalRead | Giriş pininin HIGH mı LOW mu olduğunu okur | button.value() → 1 ya da 0 |
| 4 | analogRead | A0–A5'teki gerilimi 0–1023 arası bir sayıya çevirir | ADC(26).read_u16() → 0–65535 |
| 5 | analogWrite (PWM) | ~ işaretli pinde 0–255 arası değerle LED'i kısar, motoru yavaşlatır | PWM(Pin(15)) · freq(1000) · duty_u16(0–65535) |
| 6 | delay | Kodu verilen milisaniye kadar durdurur | time.sleep(0.5) · time.sleep_ms(500) |
| 7 | millis | Açılıştan beri geçen milisaniye; kodu durdurmadan zamanlama | time.ticks_ms() · time.ticks_diff() |
| 8 | Değişkenler ve türler | int, float, bool, unsigned long gibi türlerle değer saklar | Tür yazılmaz: count = 0, volts = 3.3 |
| 9 | if / else if / else | Koşula göre farklı kodu çalıştırır | if / elif / else |
| 10 | Karşılaştırma ve mantık operatörleri | ==, !=, <, >, &&, ||, ! ile koşul kurar | ==, !=, <, > · and, or, not |
| 11 | for döngüsü | Bir işi belli sayıda tekrarlar | for i in range(10): |
| 12 | while döngüsü | Koşul doğru oldukça tekrarlar | while koşul: |
| 13 | Fonksiyonlar (void, parametre, return) | Kodu adı olan, tekrar kullanılabilir parçalara böler | def blink(times): … return |
| 14 | Diziler | Aynı türden değerleri tek bir isim altında sıralar | Liste: pins = [2, 3, 4] · len(pins) |
| 15 | Serial.begin / print / println | Bilgisayara yazı ve değer gönderir (Seri Monitör) | print(x) · f-string; Serial.begin gerekmez |
| 16 | map | Bir sayı aralığını başka bir aralığa ölçekler | Hazır komut yok: raw * 255 // 1023 ya da kendi fonksiyonun |
| 17 | random / randomSeed | Rastgele sayı üretir | import random · random.randint(1, 6) |
| 18 | tone / noTone | Buzzer'dan belirli frekansta ses çıkarır, susturur | PWM: freq(440) · duty_u16(32768); susturmak için duty_u16(0) |
MicroPython yolu: 18 kart ve Arduino karşılıkları
MicroPython yolu Raspberry Pi Pico düşünülerek hazırlanmış; kartlardaki örnekler Pico'da, örneğin Thonny ile çalıştırabileceğin kısa programlar. Sıra Arduino yolundan biraz farklıdır, çünkü Python'da önce dilin kendi kurallarına alışmak gerekir: import ile modül eklemek, print ile ekrana yazmak, girinti ve iki nokta kuralı. Her MicroPython kartının Arduino sekmesinde aynı programın C++ hâli de durur; yani Arduino biliyorsan tabloyu sağdan sola okuyabilirsin. Pico'yu ilk kez kullanacaksan kurulum ve pinler için Raspberry Pi Pico nedir yazısı iyi bir ön hazırlık olur.
| Sıra | Kart | Ne işe yarar? | Arduino'daki karşılığı |
|---|---|---|---|
| 1 | import ve from … import | machine, time gibi modülleri programa ekler | Kütüphaneler için #include; pinMode, delay gibi temel komutlar hazır gelir |
| 2 | print ve f-string | Thonny kabuğuna yazı ve değer yazdırır | Serial.begin(9600) + Serial.println() |
| 3 | Pin çıkışı: Pin(15, Pin.OUT) | GP pinini çıkış yapar; value(), on(), off(), toggle() | pinMode(13, OUTPUT) + digitalWrite() |
| 4 | Pin girişi: Pin.IN, PULL_UP, PULL_DOWN | Pini giriş yapar, iç direnci seçer, value() ile okur | pinMode(2, INPUT_PULLUP) + digitalRead() |
| 5 | time.sleep ve sleep_ms | Programı saniye ya da milisaniye cinsinden bekletir | delay() |
| 6 | while True: sonsuz döngü | Altındaki satırları Pico açık kaldıkça tekrarlar | loop() |
| 7 | Girinti ve iki nokta (:) | Hangi satırın hangi bloğa ait olduğunu belirler | Süslü parantez { } ve noktalı virgül ; |
| 8 | Değişkenler: int, float, str, bool | Değer saklar; tür kendiliğinden belirlenir | int, float, String, bool |
| 9 | if / elif / else, and / or / not | Koşula göre dallanır, koşulları birleştirir | if / else if / else · &&, ||, ! |
| 10 | for ve range | Belli sayıda tekrar; range(0, 10) 0'dan 9'a sayar | for (int i = 0; i < 10; i++) |
| 11 | Listeler: [ ], sıra numarası, len | Birden çok değeri sırayla tutar; ilk eleman 0. sıradadır | Diziler: int pins[] = {2, 3, 4}; |
| 12 | def ve return (fonksiyonlar) | Tekrar kullanılan kodu adlandırır, sonuç döndürür | void ya da dönüş türlü fonksiyonlar, return |
| 13 | ADC: read_u16 ile analog okuma | GP26, GP27, GP28'deki gerilimi 0–65535 arası okur | analogRead() → 0–1023 |
| 14 | PWM: freq ve duty_u16 | LED'i kısar, buzzer'dan nota çaldırır | analogWrite() ve tone() |
| 15 | time.ticks_ms ve ticks_diff | Kodu durdurmadan geçen süreyi ölçer | millis() |
| 16 | Pin.irq: kesme ile buton | Butona basıldığı anda bir fonksiyonu çalıştırır | attachInterrupt() |
| 17 | try / except (hata yakalama) | Hata çıkınca programın durmasını önler | Arduino'da yaygın bir karşılığı yok; dönüş değeri kontrol edilir |
| 18 | I2C ve scan() | I2C hattındaki cihazların adreslerini bulur | Wire.begin() + I2C tarayıcı kodu |
Aynı program iki dilde: 3 yan yana örnek
İlk örnek her dilin "merhaba dünya"sı: kartın üzerindeki LED'i yarım saniyede bir yakıp söndürmek. Uno'da dahili LED 13. pine bağlıdır, devre kurman gerekmez. Pico'da durum biraz farklıdır: düz Pico'da dahili LED GP25'e bağlıdır, ama Pico W'de bu LED kablosuz çipe bağlıdır ve Pin(25) ile yanmaz. Bu yüzden MicroPython'da Pin("LED", Pin.OUT) yazmak daha güvenlidir; güncel MicroPython sürümlerinde bu ad hem Pico'da hem Pico W'de dahili LED'i bulur. Kartındaki sürüm "LED" adını tanımazsa Pico'ya güncel MicroPython yükle. Ücretsiz Raspberry Pi Pico Dahili LED Yakma (Pico ve Pico W) projesi tam olarak bu farkı anlatır.
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 msİkinci örnek girişi ekler: butona basılıyken LED yanar. Buton Uno'da 2. pin ile GND arasına, Pico'da GP14 ile GND arasına bağlanır. Uno'da LED olarak yine dahili 13. pini kullanıyoruz; Pico'da harici bir LED'i 220 Ω'luk dirençle GP15'e bağla (LED direnci aracı bu değeri kendi LED'ine göre hesaplar). İki dilde de iç pull-up direnci açılır: Arduino'da INPUT_PULLUP, MicroPython'da Pin.PULL_UP. Bu bağlantıda mantık terstir: butona basınca pin GND'ye çekilir, Arduino LOW, Pico 0 okur. Sondaki 20 ms bekleme butonun mekanik titreşimini tamamen çözmez ama çok kısa yanıp sönmeleri azaltır. Buton bağlantısının ayrıntıları Arduino'ya buton nasıl bağlanır yazısında.
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 pauseÜçüncü örnek iki dil arasındaki en önemli farkı gösterir: sayı aralıkları. Potansiyometrenin orta ucu Uno'da A0'a, Pico'da GP26'ya gider; dış uçlar Uno'da 5V ve GND'ye, Pico'da 3V3 (OUT) ve GND'ye bağlanır. LED Uno'da ~ işaretli 9. pine, Pico'da GP15'e 220 Ω dirençle takılır. Arduino'da analogRead 0–1023 verir, analogWrite ise 0–255 ister; bu yüzden araya map(raw, 0, 1023, 0, 255) girer. Pico'da read_u16 da duty_u16 da 0–65535 kullandığı için okunan değeri doğrudan PWM'e verebilirsin. PWM'in nasıl çalıştığını PWM nedir yazısında, değerleri canlı izlemeyi Serial Monitor rehberinde bulabilirsin.
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)| Kavram | Arduino C++ | MicroPython (Pico) |
|---|---|---|
| Bir kez çalışan kısım | void setup() { … } | while True: satırından önceki satırlar |
| Sürekli tekrar | void loop() { … } | while True: ve altındaki girintili satırlar |
| Kod bloğu | Süslü parantez { } ve satır sonunda ; | Satır sonunda : ve 4 boşluk girinti |
| Yorum satırı | // yorum | # yorum |
| Çıkış pini | pinMode(13, OUTPUT); digitalWrite(13, HIGH); | led = Pin(15, Pin.OUT) · led.value(1) |
| Giriş pini | pinMode(2, INPUT_PULLUP); digitalRead(2) | Pin(14, Pin.IN, Pin.PULL_UP) · button.value() |
| Analog okuma | analogRead(A0) → 0–1023 | ADC(26).read_u16() → 0–65535 |
| PWM çıkışı | analogWrite(9, 0–255) | PWM(Pin(15)).duty_u16(0–65535) |
| Bekleme | delay(500) | time.sleep_ms(500) ya da time.sleep(0.5) |
| Ekrana yazı | Serial.begin(9600); Serial.println(x); | print(x) |
Mini test, Öğrendim ve Seviyem'deki ilerleme
- Mini test: Her kartın sonunda iki soru var, başlıkta Mini test · 1 / 2 yazar. Bir seçeneğe dokununca hemen Doğru. ya da Olmadı. ve kısa bir açıklama gelir; Sonraki soru ile devam edersin.
- Skor: İki soru bitince 2 / 2 doğru gibi bir skor görürsün. Test çözülmeden kart bitmez; düğmenin yerinde Kartı bitirmek için mini testi çöz yazar.
- Öğrendim: Test bitince Öğrendim, sıradaki kart düğmesi açılır (yolun son kartında yalnız Öğrendim). Dokununca kart hesabına öğrenildi olarak kaydedilir, kısa bir kutlamayla Harika! 5 / 18 kart gibi ilerlemen görünür ve sıradaki kart açılır.
- Rozet ve sayaç: Öğrendiğin kartlar listede Öğrendin işaretiyle görünür, rehberin üstündeki Öğrendiklerin sayacı artar. Bir yolun bütün kartlarını bitirince Bu yoldaki bütün kartları öğrendin yazısı çıkar.
- Seviyem: Öğren bölümündeki Seviyem ekranında Kod rehberi başlığı ve Öğrendiğin kartlar açıklaması altında iki ayrı çubuk durur: Arduino C++ x/18 ve MicroPython x/18. Bu çubuklar yalnız kod rehberindeki kartları sayar.
- Kendine dürüst kural: Uygulama yanlış cevapta seni durdurmaz, Öğrendim düğmesi test bitince açılır. Bu yüzden basmadan önce iki sorunun da neden doğru olduğunu yüksek sesle açıklayabildiğinden emin ol; açıklayamıyorsan Örnek bölümüne dön ve kodu bir kez daha satır satır oku.
Bu konuyu projede gör: komutu gerçek kodda bulmak
Bir komutu öğrenmenin son adımı, onu başkasının yazdığı çalışan bir projede tanımaktır. Kartın Bu konuyu projede gör bölümünde seçilmiş birkaç proje durur ve altında komutun kaç projenin kodunda geçtiğini söyleyen bir cümle yazar; Tümü bağlantısı bütün listeyi açar. Liste kolaydan zora sıralıdır ve Tümü, Ücretsiz, Premium süzgeçleriyle daraltılır. Örneğin millis 50'yi aşkın projenin kodunda geçer: liste ücretsiz ESP32 Buton ile LED Kontrol (Toggle) ile başlar, Pico'da Raspberry Pi Pico Buton Piyano (5 Buton + Buzzer + Melodi Kaydı) ve Raspberry Pi Pico Park Sensörü (HC-SR04 + 3 LED + Buzzer) gibi başlangıç projeleriyle sürer, orta seviyede Raspberry Pi Pico Trafik Lambası 4 Mod Buton Seçici (State Machine, GP11-13 + GP4) gibi buton ile zamanlamayı birleştiren projelere çıkar. Önerimiz şu: listeden ücretsiz bir proje aç, kodda komutu ara, bir değeri değiştir ve sonucu önceden tahmin et. Kodun her satırının ne yaptığını görmek için projenin Kodu anla sekmesi bu adımın doğal devamıdır.
Önerilen öğrenme sırası: 4 haftalık plan
Haftada 5 gün, günde yaklaşık 20 dakika ayırabildiğini varsayalım. Bir yolu 4 haftada bitirmek için çoğu gün bir kart yeter; kalan günlerde yeni kart yerine tekrar ve proje yaparsın. Arduino'n varsa yalnız Arduino sütununu, Pico'n varsa MicroPython sütununu izle. İki kartın da varsa önce Arduino yolunu bitirip MicroPython'a ikinci ayda geç; kavramlar aynı olduğu için ikinci yol çok daha hızlı gider. Tablodaki projelerin hepsi BlueGrays'te ücretsiz. Daha geniş bir plan istersen Arduino öğrenme uygulaması yazısındaki 30 günlük yol haritası bu tabloyla birlikte kullanılabilir; sınıfta Pico ile çalışıyorsan Raspberry Pi Pico ders planı MicroPython kartlarını 6 haftalık derslere yayar.
| Hafta | Arduino C++ kartları | MicroPython kartları | Haftanın ücretsiz projeleri | Hafta sonunda yapabildiğin |
|---|---|---|---|---|
| 1 | 1–5: pinMode, digitalWrite, digitalRead, analogRead, analogWrite | 1–5: import, print, Pin çıkışı, Pin girişi, time.sleep | Led Yakma, Buton İle Led Yakma (Push); Pico: Raspberry Pi Pico Dahili LED Yakma (Pico ve Pico W) | LED yakıp söndürmek, butonu okumak; Arduino'da analog değeri görmek |
| 2 | 6–10: delay, millis, değişkenler, if / else, operatörler | 6–9: while True, girinti, değişkenler, if / elif / else | Ldr İle Gece Lambası, ESP32 Buton ile LED Kontrol (Toggle); Pico: Raspberry Pi Pico 2 LED Alternatif Yakma (Blink-Flip Pattern, GP14 + GP13) | Ölçüme göre karar vermek, programı durdurmadan zamanlamak |
| 3 | 11–14: for, while, fonksiyonlar, diziler | 10–13: for ve range, listeler, def, ADC | Karaşimşek Led, Yürüyen Led; Pico: Raspberry Pi Pico Trafik Lambası (3 LED Sıralı, GP11/GP12/GP13) | Tekrarı döngüye, pinleri diziye, işleri fonksiyona toplamak |
| 4 | 15–18: Serial, map, random, tone | 14–18: PWM, ticks_ms, Pin.irq, try / except, I2C | Buzzer Kullanımı, Ldr İle Işık Şiddeti Okuma; Pico: Raspberry Pi Pico Trafik Lambası 4 Mod Buton Seçici (State Machine, GP11-13 + GP4) | Değerleri ekrana yazdırmak, ses ve parlaklığı ayarlamak, küçük bir projeyi baştan kurmak |
Günlük 20 dakikalık rutin
- 3 dakika, ısınma: Öğren bölümünde günün sorularını çöz ya da dünkü kartın mini testini yeniden yap. Amaç dünkü komutu bugün de hatırladığını görmek.
- 5 dakika, yeni kart: Ne işe yarar?, Neden? ve Söz dizimi bölümlerini oku. Söz dizimini bir kâğıda elle yaz; elle yazmak, parantezleri ve noktalı virgülü gözünün kaçırmasını zorlaştırır.
- 3 dakika, örnek: Örneği satır satır kendine anlat, sonra sekmeyi değiştir. Arduino kartındaysan MicroPython, MicroPython kartındaysan Arduino sekmesine bak ve iki kodda aynı işi yapan satırları eşleştir.
- 2 dakika, mini test: İki soruyu çöz, yanlış yaptığın sorunun açıklamasını oku. Sık yapılan hata ve İpucu kutularına bu noktada bir kez daha göz at.
- 6 dakika, proje: Bu konuyu projede gör listesinden ücretsiz ve kolay bir proje aç, komutu kodda bul ve tek bir değeri değiştir: bekleme süresi, pin numarası ya da eşik değeri. Devren hazırsa karta yükle, değilse sonucu tahmin edip Kodu anla ile kontrol et.
- 1 dakika, not: Defterine tek satır yaz: komutun adı, bir cümlelik anlamı ve öbür dildeki karşılığı. Dört haftanın sonunda bu sayfa kendi komut sözlüğün olur.
Komutlarda sık yapılan 8 hata
| Hata | Belirti | Çözüm | Kart |
|---|---|---|---|
| pinMode'u unutmak | LED hiç yanmaz ya da çok sönük yanar | setup() içinde pinMode(pin, OUTPUT) yaz; Pico'da pini Pin(15, Pin.OUT) ile oluştur | pinMode · Pin çıkışı |
| Koşulda == yerine = yazmak | if (x = 5) hep doğru çıkar, program hep aynı dalı çalıştırır | Karşılaştırmada == kullan; Python'da if x = 5 doğrudan SyntaxError verir | if / else · operatörler |
| Uzun delay ile kodu kilitlemek | Butona basıyorsun ama tepki gecikiyor ya da hiç gelmiyor | Beklemeyi millis ile yap; Pico'da time.ticks_ms ve ticks_diff kullan | delay · millis · ticks_ms |
| analogRead aralığını karıştırmak | Arduino'dan kopyalanan eşik Pico'da hiç tutmuyor | Uno'da analogRead 0–1023, Pico'da read_u16 0–65535 verir; eşiği yeni aralığa göre yeniden hesapla | analogRead · ADC |
| analogWrite değerini duty_u16'ya taşımak | Pico'da duty_u16(255) yazınca LED neredeyse hiç yanmıyor | duty_u16 0–65535 ister: yarı parlaklık 32768, tam parlaklık 65535 | analogWrite · PWM |
| millis değerini int'te tutmak | Uno'da yaklaşık 33 saniye sonra zamanlama bozuluyor | Zaman değişkenlerini unsigned long yap, karşılaştırmayı şimdi - önceki >= süre biçiminde yaz | millis |
| INPUT_PULLUP mantığını ters beklemek | Butona basınca HIGH ya da 1 bekliyorsun, LOW ya da 0 geliyor | Pull-up bağlantıda basılı hâl LOW (0), bırakılmış hâl HIGH (1) | digitalRead · Pin girişi |
| Pico'da sleep(500) yazmak | Pico yarım saniye değil 500 saniye, yani 8 dakikadan fazla bekliyor | sleep saniye alır: sleep(0.5) ya da sleep_ms(500) yaz | time.sleep |
Blok sekmesi: komutu görerek kavramak

Blok sekmesi, özellikle yolun ilk kartlarında komutun ne yaptığını kod yazmadan görmeni sağlar. Yukarıdaki görselde pinMode "9 numaralı pini ÇIKIŞ olarak ayarla", digitalWrite "9 numaralı pine YÜKSEK yaz", delay de "100 ms bekle" bloğuna dönüşür; pinMode kartında blok görünümünün altında açılır menüdeki seçenekler de yazar: ÇIKIŞ, GİRİŞ ve GİRİŞ (PULLUP). Bloklar uygulamanın diliyle gösterilir ve okumak içindir: uygulamada blok sürükleyip program yazmazsın, karta her zaman gerçek kod yüklenir. Önerilen kullanım şu: önce Blok sekmesinde programın ne yapacağını tahmin et, sonra Arduino sekmesine geçip her bloğun hangi satır olduğunu bul. Blok görünümü olan projelerde proje sayfasındaki Bloklarla göster anahtarı aynı eşleştirmeyi bütün bir proje için yapmanı sağlar; konunun temeli blok kodlama nedir yazısında.
Kısacası Arduino komutlarını öğrenmek için uzun bir listeye ihtiyacın yok: doğru sıra, her komut için çalışan küçük bir örnek, iki soruluk bir kontrol ve o komutun geçtiği gerçek bir proje yeter. Bugün pinMode kartıyla başlarsan dört hafta sonra 18 kartın tamamını bitirmiş ve her komutu en az bir projede kendi gözünle görmüş olursun; Pico'ya geçtiğinde de aynı kavramları MicroPython yolunda çok daha hızlı tamamlarsın. Kartları ve içlerindeki projeleri denemek istersen BlueGrays'i telefonuna indirip Öğren bölümünden ilk kartı açman yeterli.
Sıkça sorulan sorular
Arduino komutları nelerdir?
En çok kullanılan Arduino komutları pin komutları (pinMode, digitalWrite, digitalRead, analogRead, analogWrite), zaman komutları (delay, millis), Serial ile seri port komutları ve map, random, tone gibi yardımcı komutlardır. Bunların yanında if, for, while gibi C++ yapıları ve fonksiyonlar programın akışını kurar. BlueGrays Kod rehberinin Arduino C++ yolu bu konuları 18 kartta sırayla anlatır.
Arduino öğrenmeye hangi komutla başlanır?
pinMode ve digitalWrite ile başla, çünkü bir LED'i yakmak için ikisi yeter ve sonucu hemen görürsün. Ardından delay ile zamanlamayı, digitalRead ile buton okumayı ekle. analogRead, millis, if ve for bu dört komutun üzerine kurulur.
Arduino ile MicroPython komutları arasındaki fark nedir?
Kavramlar aynıdır, yazılış farklıdır: pinMode ve digitalWrite yerine Pin(15, Pin.OUT) ve led.value(1), delay yerine time.sleep_ms, loop() yerine while True kullanılır. Sayı aralıkları da değişir; Uno'da analogRead 0–1023 verirken Pico'da read_u16 0–65535 verir. C++'taki süslü parantez ve noktalı virgülün yerini Python'da girinti ve iki nokta alır.
MicroPython'da delay komutu var mı?
delay adında bir komut yoktur; aynı işi time modülündeki sleep (saniye), sleep_ms (milisaniye) ve sleep_us (mikrosaniye) yapar. Arduino'daki delay(500), Pico'da time.sleep_ms(500) ya da time.sleep(0.5) olur. Kodu durdurmadan zamanlamak için millis yerine time.ticks_ms ve time.ticks_diff kullanılır.
Raspberry Pi Pico'da dahili LED hangi pinde?
Düz Pico'da dahili LED GP25'e bağlıdır. Pico W'de bu LED kablosuz çipe bağlı olduğu için Pin(25) ile yanmaz. Güncel MicroPython sürümlerinde Pin("LED", Pin.OUT) yazmak iki kartta da dahili LED'i bulur.
BlueGrays Kod rehberi ücretli mi?
Hayır, Kod rehberi ücretsizdir: 36 kartın tamamını okuyabilir, örnekleri görebilir ve mini testleri çözebilirsin. Kartlardaki Bu konuyu projede gör listesinde hem ücretsiz hem Premium projeler bulunur; Ücretsiz süzgeciyle yalnız ücretsiz olanları listeleyebilirsin.
Bu yazıdan sonra yapabileceğin projeler
Tüm projeleri gör
Led Yakma
Elektroniğin ilk merhabası: tek bir LED'i yakıp söndürmek. Arduino LED'i çok kısa aralıklarla yakıp söndürür, ışık hızlı hızlı göz kırpar. Kartın bir ışığı nasıl yönettiğini en sade haliyle görür, son

Buton İle Led Yakma (Push)
Kapı zili gibi: bastığın sürece ışık yanar, bırakınca söner. Arduino butonu sürekli dinler; butona basılıyken LED'i yakar, elini çektiğin an söndürür. Kartın dışarıdan gelen bir dokunuşu nasıl hissett

Ldr İle Gece Lambası
Hava karardığında kendiliğinden yanan, sabah olunca sönen küçük bir gece lambası. Işık sensörü odadaki aydınlığı ölçer; Arduino ortam yeterince karanlıksa LED'i yakar, aydınlanınca söndürür. Sokak lam

ESP32 Buton ile LED Kontrol (Toggle)
Butona her basıldığında LED'in durumu değişir: açıksa kapanır, kapalıysa açılır. Klasik toggle (geçiş) pattern'i. Debounce (sıçrama önleme) ile butonun mekanik gürültüsünü temizleyerek tek basışta tek değişim sağlarız.

Karaşimşek Led
Karaşimşek ışığı adıyla bilinen efekt: ışık altı LED'in üzerinde bir uçtan öbür uca kayar, sonra geri döner. Arduino her LED'i saniyenin onda biri kadar yakıp sıradakine geçer; uca varınca yön değişti

Raspberry Pi Pico Dahili LED Yakma (Pico ve Pico W)
Raspberry Pi Pico serisinin açılış projesi! Pico'nun üzerindeki yeşil dahili LED'i yakıp söndürerek kartın çalıştığını doğruluyoruz — klasik "Hello World" tarzı ilk deney. Harici bileşene ihtiyaç YOK, sadece Pico ve USB kablosu yeterli. Kod MicroPython ile yazıldı (Raspberry Pi Vakfı'nın resmi olarak desteklediği dil). Thonny IDE ile Pico'yu programlarken machine.Pin sınıfı, Pin.OUT mode, led.on()/off() metodları ve time.sleep() fonksiyonlarını kavrarsın. Seri

Raspberry Pi Pico 2 LED Alternatif Yakma (Blink-Flip Pattern)
Pico'nun tek LED'inden sonraki adım: iki LED'i alternatif yakıp söndürerek klasik flip-flop animasyonu. Bir LED sönerken diğeri yanıyor — çoklu GPIO yönetiminin en temel örneği. Bu projede iki farklı renk LED (kırmızı GP14, yeşil GP13) her 500 ms'de yer değiştiriyor. MicroPython'un Pin.toggle() metoduyla kod çok kısa ve okunaklı. Aynı temel mantık trafik lambası, polis çakar efekti, yürüyen LED (Karaşimşek) gibi tüm çok-LED animasyonlarının temeli. Devre çok basit: her LED için 220Ω direnç + P

Raspberry Pi Pico Trafik Lambası (3 LED Sıralı)
Kırmızı, sarı ve yeşil LED'lerle gerçek trafik ışığı mantığını simüle ediyoruz — Pico serisinin 3 LED'e geçen ilk projesi! Yeşil 4 saniye "geç", sarı 1.5 saniye "hazırlan", kırmızı 3 saniye "dur" ve kırmızı+sarı 1 saniye "kalkış" (Avrupa trafik lambası pattern'i). Bu proje ile fonksiyon tanımlama (def all_off()), durum makinesi mantığı (sequence) ve coklu GPIO senkronizasyonu kavramlarını öğreneceksin. Devre çok basit: GP11 (Yeşil), GP12 (Sarı), GP13 (Kırmızı) pinlerine 3 LE
Diğer yazılar
BlueGrays uygulaması
Bu devreyi telefonunda adım adım kur
Devre şeması, kod ve parça listesi tek ekranda. 200'den fazla Arduino, ESP32 ve Pico projesi seni bekliyor.
Telefonunla tara
Kamerayı koda tut; telefonunun uygulama mağazası açılır.
ya da mağazada aç

