Search Code

Kurs Ders 2/10: Raspberry Pi Pico 4WD Akıllı Araba Kiti'ni sürmek için Temel Python

Bu ders, bir parçasıdır: Raspberry Pi Pico 4WD Akıllı Araba

Kurs Ders 2/10: Raspberry Pi Pico 4WD Akıllı Araba Kiti'ni sürmek için Temel Python

Bu Robojax Raspberry Pi Pico 4WD Akıllı Araba kursunun ikinci dersinde, robotunuzu kontrol etmenizi sağlayacak temel Python programlama kavramlarına dalıyoruz. Bu rehber, sıfır kodlama deneyiminden donanımı kontrol eden komut dosyalarını güvenle yazmaya kadar sizi taşımak için tasarlanmıştır. Sadece sözdizimini ezberlemek yerine, her kavramın arkasındaki "neden"i keşfedeceğiz ve size kendi projelerinizi oluşturmak ve özelleştirmek için araçlar vereceğiz. Bu dersin sonunda, tüm gelecekteki projelerin yapı taşları olan değişkenler, kontrol akışı, fonksiyonlar ve listeler hakkında sağlam bir anlayışa sahip olacaksınız.

Bu bilgi sadece akıllı bir araba için değildir. Burada öğreneceğiniz ilkeler, sayısız gerçek dünya uygulamasında kullanılanlarla aynıdır. Bu becerileri şu şekilde uygulayabilirsiniz:

  • Sensor verilerine dayalı olarak fanları, pompaları ve ışıkları kontrol etmek için bir ev serasını otomatikleştirme.
  • Alarmları tetikleyen veya bildirimler gönderen özel bir güvenlik sistemi oluşturma.
  • Çevreye tepki veren etkileşimli sanat enstalasyonları yaratma.
  • Önceden programlanmış davranışların ötesinde kendi özel robot davranışlarınızı geliştirme.

Donanım/Bileşenler

Bu dersteki donanım örneklerini takip etmek için aşağıdaki bileşenlere ihtiyacınız olacaktır. Bunların tümü SunFounder Raspberry Pi Pico 4WD Akıllı Araba Kiti'nin parçasıdır, ancak bağımsız deneyler için ayrı ayrı satın alınabilir.

  • Raspberry Pi Pico: Projenin mikrodenetleyici beyni.
  • Bir LED: Dijital çıkış kontrolünü göstermek için kullanılır.
  • Bir Direnç (150Ω - 330Ω): Akımı sınırlamak ve LED'i korumak için.
  • Jumper Kablolar: Bir breadboard üzerinde bağlantılar yapmak için.
  • Bir Breadboard: Devrenizi prototiplemek için.

Bağlantı Rehberi

Bu dersteki donanım gösterimi için, Raspberry Pi Pico ile bir LED'i kontrol etmek üzere basit bir devre kuracağız. Bağlantı basittir ve fiziksel hesaplamada klasik bir ilk adımdır. Anahtar, LED'in yanmasını önlemek için akım sınırlayıcı bir direnç kullanmaktır. Direnç, LED ile seri olarak bağlanır. LED'in uzun bacağı (anot) pozitif bağlantıdır ve kısa bacak (katot) negatif bağlantıdır.

Videoda, eğitmen toprak pinine ve LED'in kısa bacağına bağlı bir direnç kullanır. Uzun bacak, GPIO pin 22'ye bağlıdır. Bu kurulum, Pico'nun LED'i açmak için pine yüksek (3.3V) bir sinyal ve kapatmak için düşük (0V) bir sinyal göndermesini sağlar.

Not: Bağlantı şeması videoda gösterilmektedir. Tam yerleşim için görsel rehbere bakınız.

Kod Açıklaması

Bu ders, robotunuzu kontrol etmek için gerekli olan temel Python sözdizimi ve mantığına odaklanır. Videoda ele alınan ana kavramları inceleyelim. Kod örnekleri, Raspberry Pi Pico gibi mikrodenetleyicilerde çalışmak üzere tasarlanmış bir Python sürümü olan MicroPython'da yazılmıştır.

Değişkenler ve Veri Türleri

Değişkenler, bilgiyi sakladığınız etiketli kutular gibidir. Python'da bir değişkenin türünü bildirmeniz gerekmez; atadığınız değerden çıkarılır. (videoda 03:33'te)


age = 23  # Bu bir tam sayıdır
name = "Ahmad"  # Bu bir dizedir (metin)
pi = 3.14  # Bu bir ondalık sayıdır (float)

Bu değişkenleri hesaplamalarda kullanabilir ve değerlerini yazdırabilirsiniz. Örneğin, belirli bir yaştaki gün sayısını hesaplamak için days = age * 365 kullanabilirsiniz. print() fonksiyonu, çıktıyı konsola görüntülemek için kullanılır.

Koşullu İfadeler (If/Else)

Koşullu ifadeler, kodunuzun kararlar almasını sağlar. Bu, bir robotun bir engel algıladığında durması gibi çevresine tepki vermesi için çok önemlidir. (videoda 07:39'da)


age = 16
if age >= 17:
    print("Araba kullanabilirsin")
else:
    print("Araba kullanmak için çok genç")

if ifadesi bir koşulu kontrol eder. Koşul True ise, altındaki girintili kod bloğu çalıştırılır. False ise, else ifadesinin altındaki kod çalışır. Girinti (satırın başındaki boşluklar) Python'da kritiktir; hangi kodun hangi bloğa ait olduğunu tanımlar.

Döngüler (For ve While)

Döngüler, bir kod bloğunu tekrarlamak için kullanılır. Bu, sensör değerlerini taramak veya bir motoru bir dizi adım boyunca hareket ettirmek gibi görevler için idealdir. (videoda 09:04'te)

For Döngüsü: Bu döngü belirli bir sayıda yinelenir.


for x in range(5):  # x, 0, 1, 2, 3, 4 olacaktır
    print(x)

While Döngüsü: Bu döngü, bir koşul doğru olduğu sürece devam eder. Bu, belirli bir olay gerçekleşene kadar sonsuza kadar çalışan bir ana program döngüsü oluşturmak için kullanışlıdır. (videoda 12:13'te)


x = 9
while x > 5:
    print("x'in değeri:", x)
    x = x - 1  # x'i azalt
print("Döngü bitti")

while True: döngülerine dikkat edin. Döngüden çıkmak için bir break ifadesi kullanmadığınız veya programı durdurmadığınız sürece sonsuza kadar çalışırlar.

Fonksiyonlar

Fonksiyonlar, belirli bir görevi yerine getiren yeniden kullanılabilir kod bloklarıdır. Kodunuzu düzenli tutmaya ve tekrarı önlemeye yardımcı olurlar. (videoda 14:52'de)


def calculate_days(years):
    days = years * 365
    return days

# Şimdi bu fonksiyonu birden çok kez kullanabiliriz
days_in_10_years = calculate_days(10)
print("10 yıldaki gün sayısı:", days_in_10_years)

Burada calculate_days, bir argüman alan (years) ve bir değer döndüren bir fonksiyondur. Bu, aynı hesaplamayı tekrar tekrar yazmaktan daha verimlidir. Video ayrıca bir fonksiyonun başka bir fonksiyonu nasıl çağırabileceğini gösterir; bu sayede basit, test edilebilir parçalardan karmaşık işlemler oluşturabilirsiniz.

Listeler

Listeler, sıralı bir öğe koleksiyonunu depolamak için kullanılır. Bu, robotunuz için "ileri", "geri", "sol" ve "sağ" gibi bir komut dizisini saklamak için idealdir. (videoda 19:15'te)


move = ["ileri", "geri", "sol", "sağ", "dur"]
print(len(move))  # Listedeki öğe sayısını yazdırır (5)
print(move[0]) # İlk öğeyi yazdırır, "ileri"

# Öğe ekleyebilirsiniz
move.append("uçurum")
# Öğe kaldırabilirsiniz
move.pop()  # "uçurum"u kaldırır
# Öğeleri değiştirebilirsiniz
move[2] = "uç"  # Üçüncü öğeyi "uç" olarak değiştirir

Listeler sıfır tabanlıdır, yani ilk öğe 0 indeksindedir. len() fonksiyonu listenin uzunluğunu verir ve tüm öğelerde gezinmek için bir for döngüsü kullanabilirsiniz. Ayrıca, bir döngü sırasında hem indeksi hem de değeri veren enumerate() fonksiyonu tanıtılır; bu, birden fazla pin veya sensörle çalışırken kullanışlıdır.

Pinler ve Zamanla Çalışma

Python mantığını fiziksel dünyaya bağladığınız yer burasıdır. Pico'nun GPIO pinlerini kontrol etmek için machine kütüphanesini kullanırsınız. (videoda 25:16'da)


from machine import Pin
import time

# Pin 22'yi çıkış olarak ayarlayın
led = Pin(22, Pin.OUT)

# LED'i açıp kapatın
led.on()
time.sleep(1)
led.off()
time.sleep(1)

Ayrıca bir pini Pin(2, Pin.IN) ile giriş olarak ayarlayarak okuyabilirsiniz. time kütüphanesi, gecikmeler eklemek (time.sleep()) ve time.ticks_ms() ile geçen süreyi ölçmek veya time.localtime() ve time.mktime() ile zaman formatları arasında dönüşüm yapmak için gereklidir. Bu, motor hızını kontrol etmek için darbe genişliği modülasyonu (PWM) sinyali oluşturmak gibi zamana dayalı mantık için çok önemlidir.

Canlı Proje/Gösterim

Videoda eğitmen bu kavramların canlı bir gösterimini sunar. Bir Python yorumlayıcısında basit print() ifadeleri ve değişken atamaları göstererek başlar. Ardından, if ifadelerinin bir değişkenin değerine göre programın akışını nasıl değiştirdiğini görsel olarak gösteren daha karmaşık örneklere geçer.

Eğitmen daha sonra Raspberry Pi Pico'ya bir LED bağlayarak pratik bir donanım örneği gösterir. LED'i bir saniyelik gecikmeyle açıp kapatan basit bir MicroPython betiği yazar ve kodla fiziksel bir çıktıyı kontrol etmenin doğrudan sonucunu gösterir. Bu uygulamalı örnek, programlama mantığı ile gerçek dünya eylemi arasındaki bağlantıyı pekiştirir. Ders, birden fazla pini yönetmek için enumerate kullanımını ve daha gelişmiş zamanlama ve zamanlama işlemleri için time modülünün nasıl kullanılacağını göstererek sona erer.

Bölümler

  • [00:00] Raspberry Pi Pico Akıllı Araba Kursuna Giriş
  • [01:31] Kurs Genel Bakışı ve Kit Özellikleri
  • [03:33] Python'da Değişkenler ve Veri Türleri
  • [07:39] Koşullu İfadeler (If/Else)
  • [09:04] For Döngülerini Anlama
  • [12:13] While Döngülerini Keşfetme
  • [14:52] Fonksiyonları Tanımlama ve Kullanma
  • [19:15] Listeler ve Veri Yapılarıyla Çalışma
  • [25:16] MicroPython ile GPIO Pinlerini Kontrol Etme
  • [29:54] Pratik Örnek: LED Yakıp Söndürme
  • [31:15] Enumerate ile Gelişmiş Pin Kontrolü
  • [31:24] Zaman Fonksiyonlarıyla Çalışma
Kod eklenmemiş.

Kaynaklar ve referanslar

Henüz kaynak yok.

Dosyalar📁

Dosya mevcut değil.