Hirdetés

Új hozzászólás Aktív témák

  • Pubszon

    veterán

    válasz Imy #1834 üzenetére

    Az ISP-s kiiratásos dolgot nem értem.
    A kódot elnézve jó.
    Szinte ugyan azok a parancsok, csak I2C-s könyvtár kell hozzá, de nekem is megvan.

    A fenti kódodban pl az azonos sorokat összevonhatod.
    Javitottam a loop részedet

    void loop()
    {
    // Ha LED ki van kapcsolva, akkor be lehet kapcsolni
    if (digitalRead(LED) == LOW)
    {
    delay(20); // prell elkerülése
    digitalWrite((LED), HIGH);
    lcd.setCursor(10, 0); //
    lcd.print("BE"); // Bekapcsolás kiírás
    delay(1000);
    }
    // Ha LED be van kapcsolva, akkor ki lehet kapcsolni
    if (digitalRead(LED) == HIGH)
    {
    delay(20); // prell elkerülése
    digitalWrite((LED), LOW);
    lcd.setCursor(10, 0); //
    lcd.print("KI"); // Bekapcsolás kiírás
    delay(1000);
    }
    }

    De ezzal továbbá ahogy már írták, a sok delay megfogja az egészet.
    De ha használsz még egy bitet (boolean) akkor azzal kiküszöbölheted ezt és a kijelző se fog másodpercenként frissülni, hanem csak akkor amikor annak kell.
    Így:
    Az első sor a setup rész elé kell.
    boolean ledstate = true;
    .
    .
    .
    .
    void loop()
    {
    // Ha LED ki van kapcsolva, akkor be lehet kapcsolni
    if ((digitalRead(LED) == LOW) && (ledstate))
    {
    ledstate = false;
    delay(20); // prell elkerülése
    digitalWrite((LED), HIGH);
    lcd.setCursor(10, 0); //
    lcd.print("BE"); // Bekapcsolás kiírás
    }
    // Ha LED be van kapcsolva, akkor ki lehet kapcsolni
    if ((digitalRead(LED) == HIGH) && (!ledstate))
    {
    ledstate = true;
    delay(20); // prell elkerülése
    digitalWrite((LED), LOW);
    lcd.setCursor(10, 0); //
    lcd.print("KI"); // Bekapcsolás kiírás
    }
    }

Új hozzászólás Aktív témák