Temeller · 9 dk okuma

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.

Arduino Uno kartı: dijital pinler, ~ işaretli PWM pinleri ve A0–A5 analog girişleri
Arduino C++ yolunun ilk beş kartı bu kartın üç pin grubunu anlatır: dijital pinler, ~ işaretli PWM pinleri ve A0–A5 analog girişleri.

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ümNe anlatır?millis kartında
Ne işe yarar?Komutun tek cümlelik göreviKart açıldığından bu yana kaç milisaniye geçtiğini söyler.
Neden?Günlük hayattan bir benzetmeyle neden gerektiğiFırına kek koyup arada bir saate bakmak gibi: beklerken başka işlerini de yaparsın.
Söz dizimiKomutun yazılış kalıbıunsigned long now = millis();
ÖrnekKısa, çalışan bir program; Blok, Arduino ve MicroPython sekmeleriLED'i 500 ms'de bir ters çeviren kod; Pico'da aynı iş time.ticks_ms ile
Sık yapılan hataYeni başlayanın en çok düştüğü tuzakmillis değerini int değişkende tutmak: yaklaşık 33 saniye sonra sayı bozulur.
İpucuİşini kolaylaştıran küçük bir kuralKarşılaştırmayı hep şimdi - önceki >= süre biçiminde yaz.
Bu konuyu projede görKomutun geçtiği projeler, kolaydan zora50'yi aşkın proje; liste ücretsiz bir ESP32 buton projesiyle başlar
Mini testİki soru, her cevaptan sonra kısa açıklamamillis() 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ıraKartNe işe yarar?MicroPython karşılığı
1pinModePinin çıkış mı (LED, buzzer) giriş mi (buton, sensör) olacağını söylerPin(15, Pin.OUT) · Pin(14, Pin.IN, Pin.PULL_UP)
2digitalWriteÇıkış pinini açar (HIGH, 5 V) ya da kapatır (LOW, 0 V)led.value(1) · led.on() · led.off()
3digitalReadGiriş pininin HIGH mı LOW mu olduğunu okurbutton.value() → 1 ya da 0
4analogReadA0–A5'teki gerilimi 0–1023 arası bir sayıya çevirirADC(26).read_u16() → 0–65535
5analogWrite (PWM)~ işaretli pinde 0–255 arası değerle LED'i kısar, motoru yavaşlatırPWM(Pin(15)) · freq(1000) · duty_u16(0–65535)
6delayKodu verilen milisaniye kadar durdururtime.sleep(0.5) · time.sleep_ms(500)
7millisAçılıştan beri geçen milisaniye; kodu durdurmadan zamanlamatime.ticks_ms() · time.ticks_diff()
8Değişkenler ve türlerint, float, bool, unsigned long gibi türlerle değer saklarTür yazılmaz: count = 0, volts = 3.3
9if / else if / elseKoşula göre farklı kodu çalıştırırif / elif / else
10Karşılaştırma ve mantık operatörleri==, !=, <, >, &&, ||, ! ile koşul kurar==, !=, <, > · and, or, not
11for döngüsüBir işi belli sayıda tekrarlarfor i in range(10):
12while döngüsüKoşul doğru oldukça tekrarlarwhile koşul:
13Fonksiyonlar (void, parametre, return)Kodu adı olan, tekrar kullanılabilir parçalara bölerdef blink(times): … return
14DizilerAynı türden değerleri tek bir isim altında sıralarListe: pins = [2, 3, 4] · len(pins)
15Serial.begin / print / printlnBilgisayara yazı ve değer gönderir (Seri Monitör)print(x) · f-string; Serial.begin gerekmez
16mapBir sayı aralığını başka bir aralığa ölçeklerHazır komut yok: raw * 255 // 1023 ya da kendi fonksiyonun
17random / randomSeedRastgele sayı üretirimport random · random.randint(1, 6)
18tone / noToneBuzzer'dan belirli frekansta ses çıkarır, sustururPWM: freq(440) · duty_u16(32768); susturmak için duty_u16(0)
Karşılıklar birebir değildir, en büyük fark sayı aralıklarındadır. Uno'da analogRead 0–1023 verir, analogWrite 0–255 ister; Pico'da ADC.read_u16 de PWM.duty_u16 de 0–65535 aralığını kullanır. Pico'da yalnız GP26, GP27 ve GP28 analog okur ve en çok 3,3 V ölçer; potansiyometreyi 5 V'a değil 3V3 (OUT) ucuna bağla. MicroPython'da map ve tone gibi hazır bir komut da yoktur: ölçeklemeyi basit bir çarpma-bölmeyle, sesi PWM'in freq ayarıyla yaparsın.

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ıraKartNe işe yarar?Arduino'daki karşılığı
1import ve from … importmachine, time gibi modülleri programa eklerKütüphaneler için #include; pinMode, delay gibi temel komutlar hazır gelir
2print ve f-stringThonny kabuğuna yazı ve değer yazdırırSerial.begin(9600) + Serial.println()
3Pin çıkışı: Pin(15, Pin.OUT)GP pinini çıkış yapar; value(), on(), off(), toggle()pinMode(13, OUTPUT) + digitalWrite()
4Pin girişi: Pin.IN, PULL_UP, PULL_DOWNPini giriş yapar, iç direnci seçer, value() ile okurpinMode(2, INPUT_PULLUP) + digitalRead()
5time.sleep ve sleep_msProgramı saniye ya da milisaniye cinsinden bekletirdelay()
6while True: sonsuz döngüAltındaki satırları Pico açık kaldıkça tekrarlarloop()
7Girinti ve iki nokta (:)Hangi satırın hangi bloğa ait olduğunu belirlerSüslü parantez { } ve noktalı virgül ;
8Değişkenler: int, float, str, boolDeğer saklar; tür kendiliğinden belirlenirint, float, String, bool
9if / elif / else, and / or / notKoşula göre dallanır, koşulları birleştiririf / else if / else · &&, ||, !
10for ve rangeBelli sayıda tekrar; range(0, 10) 0'dan 9'a sayarfor (int i = 0; i < 10; i++)
11Listeler: [ ], sıra numarası, lenBirden çok değeri sırayla tutar; ilk eleman 0. sıradadırDiziler: int pins[] = {2, 3, 4};
12def ve return (fonksiyonlar)Tekrar kullanılan kodu adlandırır, sonuç döndürürvoid ya da dönüş türlü fonksiyonlar, return
13ADC: read_u16 ile analog okumaGP26, GP27, GP28'deki gerilimi 0–65535 arası okuranalogRead() → 0–1023
14PWM: freq ve duty_u16LED'i kısar, buzzer'dan nota çaldırıranalogWrite() ve tone()
15time.ticks_ms ve ticks_diffKodu durdurmadan geçen süreyi ölçermillis()
16Pin.irq: kesme ile butonButona basıldığı anda bir fonksiyonu çalıştırırattachInterrupt()
17try / except (hata yakalama)Hata çıkınca programın durmasını önlerArduino'da yaygın bir karşılığı yok; dönüş değeri kontrol edilir
18I2C ve scan()I2C hattındaki cihazların adreslerini bulurWire.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.

C++ (Arduino IDE)
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}
MicroPython
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.

C++ (Arduino IDE)
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}
MicroPython
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.

C++ (Arduino IDE)
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}
MicroPython
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)
KavramArduino C++MicroPython (Pico)
Bir kez çalışan kısımvoid setup() { … }while True: satırından önceki satırlar
Sürekli tekrarvoid loop() { … }while True: ve altındaki girintili satırlar
Kod bloğuSüslü parantez { } ve satır sonunda ;Satır sonunda : ve 4 boşluk girinti
Yorum satırı// yorum# yorum
Çıkış pinipinMode(13, OUTPUT); digitalWrite(13, HIGH);led = Pin(15, Pin.OUT) · led.value(1)
Giriş pinipinMode(2, INPUT_PULLUP); digitalRead(2)Pin(14, Pin.IN, Pin.PULL_UP) · button.value()
Analog okumaanalogRead(A0) → 0–1023ADC(26).read_u16() → 0–65535
PWM çıkışıanalogWrite(9, 0–255)PWM(Pin(15)).duty_u16(0–65535)
Beklemedelay(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.

HaftaArduino C++ kartlarıMicroPython kartlarıHaftanın ücretsiz projeleriHafta sonunda yapabildiğin
11–5: pinMode, digitalWrite, digitalRead, analogRead, analogWrite1–5: import, print, Pin çıkışı, Pin girişi, time.sleepLed 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
26–10: delay, millis, değişkenler, if / else, operatörler6–9: while True, girinti, değişkenler, if / elif / elseLdr İ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
311–14: for, while, fonksiyonlar, diziler10–13: for ve range, listeler, def, ADCKaraş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
415–18: Serial, map, random, tone14–18: PWM, ticks_ms, Pin.irq, try / except, I2CBuzzer 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

  1. 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.
  2. 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. 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.
  4. 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.
  5. 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.
  6. 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

HataBelirtiÇözümKart
pinMode'u unutmakLED hiç yanmaz ya da çok sönük yanarsetup() içinde pinMode(pin, OUTPUT) yaz; Pico'da pini Pin(15, Pin.OUT) ile oluşturpinMode · Pin çıkışı
Koşulda == yerine = yazmakif (x = 5) hep doğru çıkar, program hep aynı dalı çalıştırırKarşılaştırmada == kullan; Python'da if x = 5 doğrudan SyntaxError veririf / else · operatörler
Uzun delay ile kodu kilitlemekButona basıyorsun ama tepki gecikiyor ya da hiç gelmiyorBeklemeyi millis ile yap; Pico'da time.ticks_ms ve ticks_diff kullandelay · millis · ticks_ms
analogRead aralığını karıştırmakArduino'dan kopyalanan eşik Pico'da hiç tutmuyorUno'da analogRead 0–1023, Pico'da read_u16 0–65535 verir; eşiği yeni aralığa göre yeniden hesaplaanalogRead · ADC
analogWrite değerini duty_u16'ya taşımakPico'da duty_u16(255) yazınca LED neredeyse hiç yanmıyorduty_u16 0–65535 ister: yarı parlaklık 32768, tam parlaklık 65535analogWrite · PWM
millis değerini int'te tutmakUno'da yaklaşık 33 saniye sonra zamanlama bozuluyorZaman değişkenlerini unsigned long yap, karşılaştırmayı şimdi - önceki >= süre biçiminde yazmillis
INPUT_PULLUP mantığını ters beklemekButona basınca HIGH ya da 1 bekliyorsun, LOW ya da 0 geliyorPull-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) yazmakPico yarım saniye değil 500 saniye, yani 8 dakikadan fazla bekliyorsleep saniye alır: sleep(0.5) ya da sleep_ms(500) yaztime.sleep

Blok sekmesi: komutu görerek kavramak

Led Yakma projesinin Türkçe blokları: kurulumda 9 numaralı pini ÇIKIŞ olarak ayarla, sürekli tekrarla içinde YÜKSEK yaz, 100 ms bekle, DÜŞÜK yaz, 100 ms bekle
Ücretsiz Led Yakma projesinin blokları: "kurulum (bir kez çalışır)" bloğu setup()'a, "sürekli tekrarla" bloğu loop()'a karşılık gelir.

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.

Tüm projeleri gör
Led Yakma
#1Başlangıç

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

4.6(188)
1127
Buton İle Led Yakma (Push)
#9Başlangıç

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

4.8(113)
229
Ldr İle Gece Lambası
#12Başlangıç

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

4.8(102)
205
ESP32 Buton ile LED Kontrol (Toggle)
#105Başlangıç

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.

4.6(39)
57
Karaşimşek Led
#6Orta

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

4.8(106)
202
Raspberry Pi Pico Dahili LED Yakma (Pico ve Pico W)
#147Başlangıç

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

5.0(1)
10
Raspberry Pi Pico 2 LED Alternatif Yakma (Blink-Flip Pattern)
#149Başlangıç

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

5.0(2)
19
Raspberry Pi Pico Trafik Lambası (3 LED Sıralı)
#150Başlangıç

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

4.0(1)
12