Şimdi Ara

Arduino WS211 led flaş effecti yapamıyorum.

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
3 Misafir - 3 Masaüstü
5 sn
12
Cevap
2
Favori
216
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhaba


    ben 3. fren lambami arduino ile effectli hale getirmek istiyorum.

    2 haftadır arduino ile ilgileniyorum. mevcut yazılan kodları inceliyorum. zaman buldukca video derslere bakıyorum. bir şeyler yapmaya çalıştım. bir yerde tıkandı olay.


    flash effecti yapıp ardından ışığın sabit bir şekilde pinden sinyal geldiği sürece yanmasını istiyorum. void FRENONS kısmına ne yaptıysam 3 kere yakıp söndürüp ardından sabit bir renk yakamadım.


    Yardım ederseniz sevinirim.


    @rafet32

    @japon_japon

    @ipli jeton




     


    Ayrıca hem devreyi hemde kodu canlı yürütmek için similasyon sitesindede düzenledim. isteyene link atarım.


    Kod

    Yığını:
    Kod Bloğu #include "Arduino.h" #include <FastLED.h> #define LED_PIN 2 //Bilgi pin #define park 3 //park ledi #define fren 5 //fren ledi #define acil 7 //fordan çık #define NUM_LEDS 21 //toplam led int durum=0; CRGB leds[NUM_LEDS]; void setup() { FastLED.addLeds<WS2811, LED_PIN, GRB>(leds, NUM_LEDS); pinMode(park, INPUT); pinMode(fren, INPUT); pinMode(7, INPUT); } void loop() { if(digitalRead(fren)==0) // fren ledi söndür { if(digitalRead(park)==0) {   FRENOFF(); } } if(digitalRead(fren)==1) { if(digitalRead(park)==0) // fren ledini yak {   FRENONS(); } } if(digitalRead(park)==1) { if(digitalRead(fren)==1) //Fren ledini yak {   FRENONS(); } } if(digitalRead(park)==1) { if(digitalRead(fren)==0) // park ledini yak {   PARKON(); } } } void ALLOFF() // hepsini söndür. {   for (int i = 0; i > NUM_LEDS; i++)   {     leds[i] = CRGB(0, 0, 0);   }     FastLED.show();   } void FRENONS() // FREN LEDİNİ YAK {   for (int i = 0; i < NUM_LEDS; i++)   {     leds[i].setRGB(255, 0, 0);     FastLED.show();   }     delay(80);       for (int i = 0; i < NUM_LEDS; i++)   {     leds[i].setRGB(0, 0, 0);     FastLED.show();   }     delay(80);       for (int i = 0; i < NUM_LEDS; i++)   {     leds[i].setRGB(255, 0, 0);     FastLED.show();   }     delay(80);       for (int i = 0; i < NUM_LEDS; i++)   {     leds[i].setRGB(255, 0, 0);     FastLED.show();   }     delay(80);          for (int i = 21; i >=0; i++)   {     leds[i] = CRGB(255, 0, 0);   }     FastLED.show();     } void FRENOFF() // fren söndür. {   for (int i = 0; i < NUM_LEDS; i++)   {     leds[i] = CRGB(0, 0, 0);   }     FastLED.show();   } void PARKON() // PARK lambasini yak { for (int i = 4; i < 16; i++) { leds[i].setRGB(0, 0, 0); leds[i+1].setRGB(255, 0, 0); leds[i+2].setRGB(255, 0,0 );    delay(100);     durum = digitalRead(7);    if(durum == HIGH) // fordan yedi piniyle çık    {     break;     }          FastLED.show();     } for (int j = 16; j > 4; j--) { leds[j].setRGB(255, 0, 0); leds[j+1].setRGB(255, 0, 0); leds[j+2].setRGB(0, 0,0 );    delay(100);      durum = digitalRead(7);    if(durum == HIGH) // fordan 7 piniyle çık    {     break;     }          FastLED.show();       } }




    Arduino WS211 led flaş effecti yapamıyorum.



    < Bu mesaj bu kişi tarafından değiştirildi Emreöztrk -- 17 Haziran 2023; 12:47:31 >







  • https://forum.donanimhaber.com/onemli-konular-onemli-uyeler-onemli-bilgiler--155252903 konusundan alakalı uzman üyelerden etiketleyebilirsiniz.


    Kod

    Yığını:
    #include "Arduino.h" #include <FastLED.h>

    Yukarıdaki pencereyi kopyalalayıp yapıştırıp içindekileri değiştirerek kod ekranı gibi yazabilirsiniz komutlarınızı.




    < Bu mesaj bu kişi tarafından değiştirildi karafetva -- 16 Haziran 2023; 21:59:17 >
  • karafetva K kullanıcısına yanıt

    teşekkür ederim . düzenledim

  • Emreöztrk E kullanıcısına yanıt

    Helal olsun.

    AMa maalesef bu ekran düzgün çalışmıyor belki sadece bu bölümde. Renkler karışık çıkıyor.

    Diğer taraftan fazlaca çıkan boşluklar silinebilir, gereksiz uzaması engellenebilir.

  • Bahsettiginiz gibi olabilir. Ben simulasyon sitesinde çalıştırdım. Fakat renk karışmasından kastınızı anlamadim. Cevap verdiğiniz için teşekkürler. Umarim etiketledigim kişilerde cevap verir. @karafetva




    < Bu mesaj bu kişi tarafından değiştirildi Emreöztrk -- 17 Haziran 2023; 8:30:18 >
  • Emreöztrk E kullanıcısına yanıt

    Sadece bu konudaki siyah ekranlardan bahsediyorum. Satırlar arası fazlaca boşluk var belki kopyalayıp-yapıştırılınca kendi kendine oldu. Yine bu ekranda renkler karışık çıkmış harflerin, takibini zorlaştırıyor.

    Tamamen görsel konu...

  • Anladim. Evet duzenliyim onuda tesekkurler

    @karafetva




    < Bu mesaj bu kişi tarafından değiştirildi Emreöztrk -- 17 Haziran 2023; 9:36:25 >
  • İlk başta park, fren ve acilde tek LED olacak şekilde ana fonksiyonu bir yazın. Ana fonksiyonun sorunsuz çalıştığından emin olduktan sonra efektleri yapan alt fonksiyona geçip orayı yazmaya başlayın.

    Daha kısa anlatırsam projeyi iki alt proje ile iki alt fonksiyona bölün. Lambaları yakıp söndüren ana fonksiyon ve efekt yapan alt fonksiyon. İki fonksiyonu da olgunlaştırdıktan sonra projeye include ederek kullanabilirsiniz.

    Hepsini tek fonksiyonda yapmaya çalışırsanız sorunun nerde olduğunu bulmak zor olur.



    < Bu mesaj bu kişi tarafından değiştirildi ipli jeton -- 17 Haziran 2023; 15:52:29 >
  • ipli jeton kullanıcısına yanıt

    teşekkür ederim. deneyeceğim.

  • Arduinoyu aktif olarak kullanmıyorum ama aşağıdaki pseude code (sözde kod) örneği kurmanız gereken algoritma konusunda size fikir verebilir.



    Kod

    Yığını:
    int step=0; // 0 : ledler sondu 1: ledler animasyon 2: ledler sabit yansın int ani_index = 0; // animasyon index void loop() { //fren pedalına basıldı ilk stepden başla if (fren_pini == 1) and (step == 0) step = 1; //fren pedalı bırakıldı if fren_pini == 0) step = 0; switch(step) { default: case 0: led_sondur(); ani_index = 0; //sonraki pedala basmada animasyon tekrar 0 dan başlasın break; case 1: animasyon(ani_index); ani_index++; //20x100ms = 2sn animasyon kısmı çalışsın if (ani_index > 20) step = 2; break; case 2: ledler_sabit_yan(); break; } delay(100); // animasyon lar arası geçiş ve // fren pedalını bırakında ledlerin sönme gecikmesi. // Çok fazla uzun olmaması iyi olur. } void led_sondur() { // ledleri söndürmek için gerekli kodlar } void ledler_sabit_yan() { // sabit yanması için gerekli kodlar } void animasyon(ax) { if (ax % 2 == 0) { //animasyon 1. frame için ledleri uygun şekilde yak } else { //animasyon 2. frame için ledleri uygun şekilde yak } // 2 frame haricinde başaka bir animasyon için bu yapı uygun şekilde düzenlenebir. }




  • rafet32 kullanıcısına yanıt

    çok teşekkür ederim. paylaştığınız kod üzerinde değişiklikler yapıcam. sanırım bu yapı benimkinden daha sade ve anlaşılır.

  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.