Bu eğitimde, ESP32 Arduino programlamada dizilerin nasıl kullanılacağını keşfedeceğiz. Diziler, birden fazla değeri tek bir değişkende saklamanıza olanak tanır; bu da özellikle benzer öğelerden oluşan koleksiyonlarla çalışırken veri yönetimini kolaylaştırır. Bu eğitim, dizileri tanımlama, erişme ve değiştirmenin yanı sıra, onlarla etkili bir şekilde etkileşim kurmak için döngüleri kullanma konusunda size rehberlik edecektir. Bu kavramları anlamak, ESP32 ile programlama yeteneğinizi büyük ölçüde artıracaktır.
Özellikle, dizi öğeleri arasında gezinmek için for, while ve do while gibi farklı döngü türlerinin kullanımını ele alacağız. Bu, görevleri otomatikleştirmenize ve programlarınızı daha verimli hale getirmenize yardımcı olacaktır. Bu kavramları uygulamalı olarak görmek için, pratik bir gösterim için videoyu 2:30'da kontrol ettiğinizden emin olun.
Donanım Açıklaması
Bu eğitimde kullanacağımız ana donanım bileşeni ESP32 mikrodenetleyicisidir. ESP32, hem Wi-Fi hem de Bluetooth özelliklerine sahip, güçlü ve düşük maliyetli bir mikrodenetleyicidir; bu da onu geniş bir IoT uygulama yelpazesi için uygun hale getirir. Kart, Arduino Uno'ya benzer görevleri yerine getirebilirken bulut bağlantısı gibi ek işlevler de sunar.
Bu özel eğitimde, dijital pinler aracılığıyla çıkışları kontrol etmek için bir dizi kullanacağız. Her pin yüksek veya düşük olarak ayarlanabilir; bu da dizide saklanan verilere dayalı olarak çeşitli desenler veya davranışlar oluşturmamıza olanak tanır. ESP32'nin GPIO pinleri çıkış için yapılandırılacak ve bağlı cihazları veya bileşenleri kontrol etmemizi sağlayacaktır.
Bağlantı Talimatları
ESP32-07_74HC595_walking_light_wiring
ESP32'nizi bu eğitim için bağlamak için dijital pinleri bağlayarak başlayın. STcp pinini (27) vardiya kaydınızın ST_CP pinine bağlayın. SHcp pini (26), vardiya kaydının SH_CP pinine bağlanmalıdır. Son olarak, DS pinini (25) vardiya kaydının DS pinine bağlayın. Ortak bir referans sağlamak için ESP32'nin toprağının vardiya kaydının toprağına bağlı olduğundan emin olun.
ESP32'yi sabit bir 3,3 V güç kaynağıyla beslediğinizden emin olun. Ek bileşenler kullanıyorsanız, bunların da ESP32'nin voltaj seviyeleriyle uyumlu olduğundan emin olun. Sistemi açmadan önce bağlantılarınızı iki kez kontrol etmeniz önemlidir; böylece olası hasarların önüne geçilir (videoda 4:10'da).
Kod Örnekleri ve Açıklama
Sağlanan kod parçacığında, ikili değerler tutan datArray adında bir dizi tanımlıyoruz. Dizideki her değer, GPIO pinlerinden çıkarılabilen farklı bir desene karşılık gelir. Dizi şu şekilde tanımlanır:
Bu dizi, her bitin bir pin durumuna (açık veya kapalı) karşılık geldiği ikili gösterimler içerir. loop() fonksiyonunda, bir for döngüsü kullanarak bu desenleri çıkarmak için dizi üzerinde yineleme yaparız:
for(int num = 0; num < 10; num++) {
digitalWrite(STcp, LOW);
shiftOut(DS, SHcp, MSBFIRST, datArray[num]);
digitalWrite(STcp, HIGH);
delay(1000);
}
Bu döngüde, datArray'dan vardiya kaydına sürekli olarak veri göndererek yürüyen ışık efekti oluştururuz. delay(1000), her desen arasında bir duraklama sağlayarak değişikliklerin görünür olmasını sağlar. Tam kod için lütfen aşağıya bakın; dinamik olarak yüklenecektir.
Gösterim / Beklentiler
Bağlantıyı tamamladıktan ve kodu yükledikten sonra, bağlı cihazlarda yürüyen bir ışık efekti görmelisiniz. Dizideki her bit sırayla yanarak görsel olarak ilgi çekici bir desen oluşturacaktır. Ters bağlantılara dikkat edin; çünkü bunlar beklenmeyen davranışlara yol açabilir (videoda 8:15'te).
807-ESP32 Tutorial 7/55 - Walking Light using 74HC595 and learn array
Dil: C++
const int STcp = 27;//ST_CP
const int SHcp = 26;//SH_CP
const int DS = 25; //DS
int datArray[] = {B00000000, B00000001, B00000011, B00000111, B00001111, B00011111, B00111111, B01111111, B11111111};
void setup ()
{
//set pins to output
pinMode(STcp,OUTPUT);
pinMode(SHcp,OUTPUT);
pinMode(DS,OUTPUT);
}
void loop()
{
for(int num = 0; num <10; num++)
{
digitalWrite(STcp,LOW); //ground ST_CP and hold low for as long as you are transmitting
shiftOut(DS,SHcp,MSBFIRST,datArray[num]);
digitalWrite(STcp,HIGH); //pull the ST_CPST_CP to save the data
delay(1000);
}
}