İçindekiler:
- Gereçler
- Adım 1: Nasıl Çalıştığını Tanımlayın: Yaya Trafik Işığı
- Adım 2: Devreyi Oluşturun
- Adım 3: Durum Makinesini Oluşturma
- Adım 4: Örneği Çalıştırma
- Adım 5: Oluşturulan C++ Kodu
- Adım 6: Örneği Alın
Video: Arduino Üzerindeki Durum Makinesi - Yaya Trafik Işığı: 6 Adım (Resimli)
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:18
Merhabalar!Size YAKINDU Statechart Tools kullanarak sonlu durum makinesi ile C++'da Arduino için bir yaya trafik ışığını nasıl programlayacağınızı göstereceğim. Bu, durum makinelerinin gücünü gösterecek ve daha sonraki projeler için bir plan olarak kullanılabilir.
Gereçler
Sadece bir Arduino'ya, bazı butonlara, LED'lere, Jumper'a ve dirençlere ihtiyacınız var.
Donanım
- 2x Buton
- 2 adet Trafik Işığı veya 220 Ohm dirençli LED'ler kullanabilirsiniz
- 2x 10k Ohm dirençler
- ekmek tahtası
- Tulum
- Arduino Uno/Mega (veya en az 8 GPIO'su olan herhangi biri)
Yazılım
- YAKINDU Durum Çizelgesi Araçları
- Arduino için Eclipse C++ IDE
Adım 1: Nasıl Çalıştığını Tanımlayın: Yaya Trafik Işığı
Öncelikle yaya trafik ışığının nasıl çalışması gerektiğini belirlememiz gerekiyor. Madde işaretlerini özetlemeye çalıştım:
- Biri arabalar için, diğeri yayalar için olmak üzere iki trafik ışığı kullanılır.
- Bir düğme kullanılarak trafik ışığı açılabilir
- Yaya bir düğmeye basarak karşıdan karşıya geçmeyi talep edebilir
- Kapalı trafik ışığı, her iki sarı LED'in de yanıp sönmesiyle gösterilir
- Açıldıktan sonra trafik ışığı güvenli modda 10 saniye bekler
- Güvenli moddan sonra, bir yaya bir istek başlatana kadar arabalar her zaman yeşil bir aşamaya sahiptir.
- Yaya geçiş talebi, sarı LED'in değiştirilmesiyle belirtilir
Ek olarak, trafik ışığının çalışma şekline bağlı olarak bazı zaman olayları vardır.
Adım 2: Devreyi Oluşturun
Devreyi kurmaya başlayalım. Örneğimde, önizleme görüntüsünde görebileceğiniz gibi, bir Arduino Mega 2560 kullandım, ancak en az sekiz GPIO'lu diğer tüm Arduino'lar iyi olmalı. Ek olarak, Amazon'dan bazı 5V trafik ışıkları satın aldım. Sadece Trafik Işığı Arduino'yu arayın. Aksi takdirde, altı farklı LED kullanabilirsiniz. Ayrıca, iki adet basmalı düğmeye ve iki adet 10k Ohm rezistöre ihtiyacınız var.
Soldaki üç LED araç trafiği için, üç sağ LED ise yayalar için kullanılır, burada sarı olan bir talebi belirtebilir.
Adım 3: Durum Makinesini Oluşturma
Gördüğünüz gibi, bileşik üyeli iki ana durum vardır - durum açık ve durum kapalı. ON/OFF düğmesine bağlı olan onOff olayını kullanarak her iki durum arasında geçiş yapabilirsiniz. İlk durumda, kapalı durumda, her iki sarı LED de her saniye yanıp sönmeye başlar. Trafik ışığı açıldıktan sonra Güvenli Durumda başlar. 10 saniye sonra trafik ışıklarının tipik davranışı ele alınacaktır. StreetPrepare durumunda kırmızı ve sarı LED yanar ve 2 saniye daha sonra trafik ışığı yeşile döner. Şu andan itibaren durum makinesi, ikinci düğmeye bağlı olan yaya İsteği olayını bekliyor. Olayı gönderdikten sonra istek, PedWating durumunda her saniye sarı LED'in değiştirilmesiyle belirtilecektir. 7 saniye sonra, yayalar Yaya Yeşili durumuna geçme sinyali alana kadar trafik ışığı önce sarıya, sonra kırmızıya çevrilecektir. Bundan sonra PedestrianRed etkinleştirilir ve döngü tekrarlanır. Bu, ancak trafik ışığı tekrar kapatılarak durdurulabilir.
Adım 4: Örneği Çalıştırma
Adım 5: Oluşturulan C++ Kodu
Oluşturulan C++ kodu, durum makinesinin mantığını işlemek için klasik bir geçiş durumudur. Bu sadece nasıl göründüğünün bir kod parçacığıdır:
void TrafficLightCtrl::runCycle(){ clearOutEvents(); for (stateConfVectorPosition = 0; stateConfVectorPosition < maxOrthogonalStates; stateConfVectorPosition++) { anahtar (stateConfVector[stateConfVectorPosition]) { case main_region_on_r1_StreetGreen: { main_region_on_r1_Street(true); kırmak; } durum main_region_on_r1_PedWaiting_r1_waitOn: { main_region_on_r1_PedWaiting_r1_waitOn_react(true); kırmak; } varsayılan: ara; } clearInEvents(); }
Adım 6: Örneği Alın
Tüm örnek derlemeye ve çalıştırmaya hazır. Ticari olmayan kullanım için ücretsiz olan YAKINDU Statechart Tools ile birlikte gelir. İndirdikten sonra örneği doğrudan araca aktarabilirsiniz:
Dosya -> Yeni -> Örnek -> YAKINDU Durum Şeması Örnekleri -> Sonraki -> Arduino için Trafik Işığı (C++)
> BURADAN YAKINDU Statechart Araçlarını indirebilirsiniz <<
30 günlük deneme ile başlayabilirsiniz. Daha sonra, ticari olmayan kullanım için ücretsiz olan bir lisans almalısınız!
Önerilen:
Sonlu Durum Makinesi Kullanan Arduino Üzerindeki Dijital Saat: 6 Adım
Arduino'da Sonlu Durum Makinesi Kullanarak Dijital Saat: Merhaba, YAKINDU Statechart Tools ile bir dijital saatin nasıl oluşturulabileceğini ve LCD Tuş Takımı Kalkanı kullanan bir Arduino'da nasıl çalıştırılacağını göstereceğim.Dijital saatin orijinal modeli saat David Harel'den alınmıştır. Hakkında bir makale yayınladı
Arduino Trafik Işığı: 3 Adım (Resimli)
Arduino Trafik Işığı: Bu talimat şu kaynaktan türetilmiştir: Arduino-Traffic-Light-SimulatorAyrı bir trafik ışığı oluşturmak için bu talimattaki çizimi kullandım. Aşağıdaki değişiklikleri yaptım: LED'ler için delikler daha küçük, 5 mm LED'ler için (10 mm LED'ler yerine).
SPI Genişleticilerle Arduino Üzerinde Durum Makinesi ve Çoklu Görev: 3 Adım
SPI Genişleticilerle Arduino'da Durum Makinesi ve Çoklu Görev: Geçen hafta, bir arduino ile havai fişek pilotluğu yapmak için bir sistem oluşturmak istiyordum. Yangınları kontrol etmek için yaklaşık 64 çıkışa ihtiyaç vardı. Bunu yapmanın bir yolu, IC genişleticileri kullanmaktır. Bu nedenle 2 çözüm mevcuttur: - bir I2C genişletici, ancak giriş yaptığınızda invertöre ihtiyaç duyar
Arduino Trafik Işığı: 8 Adım (Resimli)
Arduino Trafik Işığı: Bu proje, daha iyi görselleştirme için 5mm LED'ler ve Led Montaj Donanımı T1-3/4 Clear Standard ile yapılmıştır ve bu nedenle kırmızı, sarı ve renklerini ayrı ayrı göstermek için 3 LED kullanılmıştır. sırasıyla yeşil
Acil Durum Güç Bankası - DIY Araç Kutusu Solar: Radyo+ Şarj Cihazı+ Acil Durum için Işık!: 4 Adım
Acil Durum Güç Bankası - Kendin Yap Araç Kutusu Solar: Radyo+ Şarj Cihazı+ Acil Durum için Işık!: Ekle 28 Mart 2015: Alet kutumu acil durumlar için yaptım ve şimdi şehrim çamura gömüldüğü için kullanıyorum. Tecrübe olarak telefon şarj etmek ve radyo dinlemek için hizmet ettiğimi söyleyebilirim. Eski bir alet çantası mı? eski bir bilgisayar hoparlörü? kullanılmayan 12 voltluk bir pil mi? Yapabilirsiniz