İlk program: yanıp sönen LED
Aşağıdaki program kartın üzerindeki LED'i yarım saniye arayla yakıp söndürür. Pin işlemleri ve bekleme, Donanım biriminden gelir.
program YanıpSönenLED
kullan Donanım
değişken
i: tamsayı
yanık: mantıksal
başla
PinKipi(YerleşikLED, Çıkış)
yanık := yanlış
1'den 6'ya kadar her i için
başla
yanık := değil yanık
PinYaz(YerleşikLED, yanık)
yaz(Biçimle('{:5} ms LED {}', Milisaniye, eğer yanık ise 'yanık' değilse 'sönük'), 1)
Bekle(500)
bitir
yaz('Bitti.', 1)
bitir.
Benzetimde çalıştırma
Kartı bağlamadan önce programı bilgisayarınızda deneyebilirsiniz. --calistir seçeneği programı C++'a derler ve sanal saatli bir benzetimde çalıştırır; Bekle(500) gerçekten beklemez, çıktı hemen gelir.
yontem gomulu led.y --calistir
0 ms LED yanık
500 ms LED sönük
1000 ms LED yanık
…
Bitti.
Bunun için Yöntem'in yanında bir C++17 derleyicisi (g++ ya da clang++) gerekir. Aynı programı oyun alanında da çalıştırabilirsiniz; oradaki "Pin izi" seçeneği pin değişikliklerini zaman damgasıyla gösterir.
Karta yükleme
yontem gomulu led.y komutu led/ adında bir proje klasörü üretir. Klasörde Arduino için bir .ino dosyası, PlatformIO için hazır bir platformio.ini ve kısa bir BENIOKU.txt bulunur. Üç yoldan birini seçebilirsiniz:
- Arduino IDE: Espressif'in "esp32" çekirdeğini (3.x önerilir) kurduktan sonra
.inodosyasını açıp kartınızı ve portu seçerek yükleyebilirsiniz. - arduino-cli:
arduino-cli compilevearduino-cli uploadkomutlarıyla. - PlatformIO: klasörün içinde
pio run -t uploadkomutuyla.
Programın yaz çıktısı ve oku girdisi seri port üzerinden, 115200 baud hızında akar. Adımların ayrıntılarını kurulum sayfasının gömülü bölümünde bulabilirsiniz.
Donanım birimi
| Grup | Adlar |
|---|---|
| Pinler | PinKipi, PinYaz, PinOku, AnalogOku, PWMYaz, YerleşikLED |
| Zaman | Bekle, BekleMikro, Milisaniye, Mikrosaniye |
| Kesmeler | KesmeBağla, KesmeÇöz |
| Zamanlayıcılar | ZamanlayıcıKur, ZamanlayıcıTek, ZamanlayıcıDurdur |
| Seri | SeriBaşlat, SeriVarMı, SeriBaytOku, SeriBaytYaz |
| I2C ve SPI | I2CBaşlat, I2CYaz, I2COku, I2CYazOku, SPIBaşlat, SPIAktar |
Benzetim sabiti bilgisayarda doğru, kartta yanlış değerini alır; böylece aynı programın içinde benzetime özel sınama kodu yazabilirsiniz. Kesme ve zamanlayıcı prosedürleri ESP32'de ayrı bir görevde sırayla çalışır; bu prosedürleri kısa tutmanız gerekir.
Alt küme kuralları
Gömülü arka uç, her değerin tipini derleme anında bilmek ister. Kurala uymayan her kullanım derleme sırasında açık bir hata mesajıyla bildirilir.
tamsayı64 bittir,ondalıkçift duyarlıklıdır.liste,sözlükveherhangiolarak bildirilen değişkenlerin tipi ilk kullanımdan çıkarılır. Çıkarılamadığında tipi açıkça yazmanız gerekir:tamsayı listesi.- Lambdalar dış değişkenleri kopyalar; lambda içinden dış değişkene atama yapılamaz.
- Yerleşik birimlerden yalnızca
Matematik,YZ(eğitilmiş modelle tahmin için) veDonanımkullanılabilir; Yöntem ile yazdığınız kendi birimleriniz de derlenir. Öteki yerleşik birimler, otomatik türev ve model eğitimi kartta desteklenmez.
Eğitilmiş modeli karta taşımak
Model eğitimi kartta yapılmaz; modeli bilgisayarınızda eğitir, sonra karta taşırsınız. ModeliDışaAktar(model, 'XorModeli.y') çağrısı, ağırlıkları içinde taşıyan saf bir Yöntem birimi yazar. Kart programında kullan XorModeli deyip Tahmin(…) fonksiyonunu çağırmanız yeterlidir.
Hazır örnekleri Yöntem deposunun gomulu_ornekler klasöründe bulabilirsiniz: düğme kesmesi, zamanlayıcılar, I2C sıcaklık algılayıcısı, seri konsol ve XOR modelinin kartta çalıştırılması.
Sınırlar
- Gömülü arka uç şimdilik yalnızca ESP32'yi hedefler.
- Wi-Fi ve Bluetooth birimleri henüz yoktur.
- Masaüstü benzetimi Windows'ta henüz sınanmamıştır.
- Örnekler ESP32 için derlenmiş ve Espressif'in QEMU öykünücüsünde doğrulanmıştır; kendi kartınızda ilk kez çalıştırırken basit bir programla başlamanızı öneririz.