Şimdi Ara

Arduino Delay sorunu

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

    Rgb ledle flasör devresi yaptım aradaki bekleme süresini potansiyometreden ayarlıyorum ama pot değerini değiştirince anlık tepki vermiyor ve bekleme süreleri bittikten sonra değeri değiştiriyor.Bekleme süresine takılmadan nasıl yapabilirim.


    quote:



    const int kirmizi =9;
    const int yesil =10;
    const int mavi =11;
    int ayar;
    int r,g,b;
    int bekle;
    void setup() {

      Serial.begin(9600);
    }

    void loop() {
      ayar= analogRead(A0);
      ayar=map(ayar,0,1023,0,255);
      bekle=ayar;
      Serial.println(bekle);
      
      
       
       for(int i=1;i<=3;i++){
        r=0;
        g=0;
        b=255;
        analogWrite(kirmizi,255-r);
        analogWrite(yesil,255-g);
        analogWrite(mavi,255-b);


        delay(bekle);
        r=0;
        g=0;
        b=0;
        analogWrite(kirmizi,255-r);
        analogWrite(yesil,255-g);
        analogWrite(mavi,255-b);

        delay(bekle);
      }



      for(int i=1;i<=3;i++){
        r=255;
        g=0;
        b=0;
        analogWrite(kirmizi,255-r);
        analogWrite(yesil,255-g);
        analogWrite(mavi,255-b);

        delay(bekle);
        r=0;
        g=0;
        b=0;
        analogWrite(kirmizi,255-r);
        analogWrite(yesil,255-g);
        analogWrite(mavi,255-b);

        delay(bekle);
      }

    }









  • Hocam map komutunu illa 0-255 arası yapmak zorunda değilsin. 0-1023 okunan değeri oranlamak için o. Bununla en fazla 255ms yaparsın.O değeri kafanda belirlediğin maksimum değerle değiştir.

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • Pwm çıkışa vermediğim için mi istediğim değer kadar yapabilirim.Benim bildiğim 10 bit giriş 8 bit çıkış.Birde sorduğum soruyla ilgili bir fikriniz varmı.Çok teşekkür ederim.



    < Bu mesaj bu kişi tarafından değiştirildi c0zer -- 25 Mayıs 2015; 1:04:48 >
  • bi' dener misin



    quote:

    const int kirmizi =9;
    const int yesil =10;
    const int mavi =11;
    int ayar;
    int r,g,b;
    int bekle;

    void Read() {
    ayar= analogRead(A0);
    ayar=map(ayar,0,1023,0,255);
    bekle=ayar;

    }

    void setup() {

    Serial.begin(9600);
    }

    void loop() {
    Read();
    Serial.println(bekle);



    for(int i=1;i<=3;i++){
    Read();
    r=0;
    g=0;
    b=255;
    analogWrite(kirmizi,255-r);
    analogWrite(yesil,255-g);
    analogWrite(mavi,255-b);


    delay(bekle);
    r=0;
    g=0;
    b=0;
    analogWrite(kirmizi,255-r);
    analogWrite(yesil,255-g);
    analogWrite(mavi,255-b);

    delay(bekle);
    }



    for(int i=1;i<=3;i++){
    Read();
    r=255;
    g=0;
    b=0;
    analogWrite(kirmizi,255-r);
    analogWrite(yesil,255-g);
    analogWrite(mavi,255-b);

    delay(bekle);
    r=0;
    g=0;
    b=0;
    analogWrite(kirmizi,255-r);
    analogWrite(yesil,255-g);
    analogWrite(mavi,255-b);

    delay(bekle);
    }

    }




  • Bir şey değişmedi hala aynı çalışıyor.Teşekkür ederim.
  • hocam benim elimden en fazla bu kadarı geliyor. sizin dediğiniz sistemde 2 fonksiyon aynı anda çalışması gerekiyor. arduino'da oluyor mu bilmiyorum

     
    const int kirmizi =9;
    const int yesil =10;
    const int mavi =11;
    int ayar;
    int r,g,b;
    int bekle;

    void Read() {
    ayar= analogRead(A0);
    ayar=map(ayar,0,1023,0,255);
    bekle=ayar;
    Serial.println(bekle);
    }

    void setup() {

    Serial.begin(9600);
    }

    void loop() {
    for(int i=1;i<=3;i++){
    Read();
    r=0;
    g=0;
    b=255;
    analogWrite(kirmizi,255-r);
    analogWrite(yesil,255-g);
    analogWrite(mavi,255-b);


    delay(bekle);
    Read();
    r=0;
    g=0;
    b=0;
    analogWrite(kirmizi,255-r);
    analogWrite(yesil,255-g);
    analogWrite(mavi,255-b);

    delay(bekle);
    }



    for(int i=1;i<=3;i++){
    Read();
    r=255;
    g=0;
    b=0;
    analogWrite(kirmizi,255-r);
    analogWrite(yesil,255-g);
    analogWrite(mavi,255-b);

    delay(bekle);
    Read();
    r=0;
    g=0;
    b=0;
    analogWrite(kirmizi,255-r);
    analogWrite(yesil,255-g);
    analogWrite(mavi,255-b);

    delay(bekle);
    }

    }



    < Bu mesaj bu kişi tarafından değiştirildi ryanmayne06_6 -- 25 Mayıs 2015; 9:15:15 >




  • İlgilendiğin için çok teşekkür ederim.
  • for döngülerinin içine

     ayar= analogRead(A0);  
    ayar=map(ayar,0,1023,0,255);
    bekle=ayar;
    Serial.println(bekle);


    eklemeyi dener misiniz?

    döngüden çıkmadığı için değeri geç okuyor olabilir.
  • Biraz eski bir konu ama arayanlar en azından cevaba ulaşır;

    Çözüm millis fonksiyonu

    https://www.arduino.cc/en/Tutorial/BlinkWithoutDelay



    * Blink without Delay

    Turns on and off a light emitting diode (LED) connected to a digital
    pin, without using the delay() function. This means that other code
    can run at the same time without being interrupted by the LED code.

    The circuit:
    * LED attached from pin 13 to ground.
    * Note: on most Arduinos, there is already an LED on the board
    that's attached to pin 13, so no hardware is needed for this example.

    created 2005
    by David A. Mellis
    modified 8 Feb 2010
    by Paul Stoffregen
    modified 11 Nov 2013
    by Scott Fitzgerald


    This example code is in the public domain.

    http://www.arduino.cc/en/Tutorial/BlinkWithoutDelay
    */

    // constants won't change. Used here to set a pin number :
    const int ledPin = 13; // the number of the LED pin

    // Variables will change :
    int ledState = LOW; // ledState used to set the LED

    // Generally, you should use "unsigned long" for variables that hold time
    // The value will quickly become too large for an int to store
    unsigned long previousMillis = 0; // will store last time LED was updated

    // constants won't change :
    const long interval = 1000; // interval at which to blink (milliseconds)

    void setup() {
    // set the digital pin as output:
    pinMode(ledPin, OUTPUT);
    }

    void loop() {
    // here is where you'd put code that needs to be running all the time.

    // check to see if it's time to blink the LED; that is, if the
    // difference between the current time and last time you blinked
    // the LED is bigger than the interval at which you want to
    // blink the LED.
    unsigned long currentMillis = millis();

    if (currentMillis - previousMillis >= interval) {
    // save the last time you blinked the LED
    previousMillis = currentMillis;

    // if the LED is off turn it on and vice-versa:
    if (ledState == LOW) {
    ledState = HIGH;
    } else {
    ledState = LOW;
    }

    // set the LED with the ledState of the variable:
    digitalWrite(ledPin, ledState);
    }
    }




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