İki işi aynı anda yapamama sorunu- Arduino sözümü dinlemiyor :(
  • Merhabalar, değişik bir proje yapmaya çalışıyorum ama bir yerde tıkandım.
    Öncelikle + S - olan bir switch bağladım. Ve sinyal kablosunu A1 ve A2 girişlerine taktım. 7 ve 9 nolu pinlerede servo ile bir led bağladım. Aşağıdaki kod; swithc'e iki kere bastığınızda aradaki süreyi hesaplıyor ve ona göre servoyu hızlı yada yavaş bir şekilde çalıştırıyor. Örneğin süre 1100 milisaniyenin altındaysa servo hızlı dönüyor. üstündeyse yavaş dönüyor. Ben servo dönerken aynı zamanda LED de yanıp sönsün istiyorum fakat o kadar uğraşmama rağmen önce servo dönüyor sonra LED yanıp sönmeye başlıyor.Bense önce ledler yanıp sönsün sonra servo dönsün istiyorum.Acaba nerde hatam var ?

    #include
    #include

    int sensorPin = A2;
    int sensorPin2 = A1;
    Servo myservo;
    int sensorValue = 0;
    int sensorValue2 = 0;
    long start = 0;
    long startt = 0;
    long lap = 0;
    long lapp = 0;
    long tempo = 0;
    long tempoo = 0;
    long bestLap = 1000000.00;// High value so that the first lap is always a best lap
    char last[16];
    char best[16];
    int potpin = 0; // analog pin used to connect the potentiometer
    int val;
    int pos = 0;
    int led = 9;

    void setup()
    {
    Serial.begin(57600);
    myservo.attach(7);
    pinMode(sensorPin, INPUT);
    pinMode(sensorPin2, INPUT);
    pinMode(led, OUTPUT);
    }


    void loop()
    {
    delay(100);
    sensorValue2 = analogRead(sensorPin2);
    tempoo = millis(); // Record the current time
    lapp = tempoo - startt; // Calculate the lap time
    startt = tempoo; // Reset the clock

    int secv = ((lap / 1000.00)+(lap - secv*1000.00));
    if ( secv > 500)
    {
    digitalWrite(led, HIGH);
    delay(100);
    digitalWrite(led, LOW);
    delay(100);
    }

    delay(100);
    sensorValue = analogRead(sensorPin);

    if (sensorValue < 100.00) // An object is detected
    {

    tempo = millis(); // Record the current time
    lap = tempo - start; // Calculate the lap time
    start = tempo; // Reset the clock

    int sec = ((lap / 1000.00)+(lap - sec*1000.00));
    int secc = ((lap / 1000.00)+(lap - sec*1000.00));
    int seccc = ((lap / 1000.00)+(lap - sec*1000.00));
    Serial.println(sec);
    delay(500);

    if ((lap > 500) && (lap < 1500))
    {
    for(pos = 100; pos>=17; pos-=1)
    {
    myservo.write(pos); // Belirlenen pozisyona gitmesi isteniyor.
    delay(5); // Pozisyona 5 ms de ulaşıyor
    }
    }

    if ((sec > 1501) && (sec < 4500))
    {
    for(pos = 100; pos>=17; pos-=1)
    {
    myservo.write(pos); // Belirlenen pozisyona gitmesi isteniyor.
    delay(30); // Pozisyona 5 ms de ulaşıyor
    }
    }

    if ((sec > 4501) && (sec < 8500))
    {
    myservo.write(100); // Belirlenen pozisyona gitmesi isteniyor.
    }
    }
    }

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Login with Facebook

Tagged

Açık kaynak kültürü gereği, çözdüğünüz problemlerin çözümlerini paylaşmayı lütfen unutmayın.