Hirdetés

Keresé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
    }
    }

  • Imy

    veterán

    válasz Imy #1834 üzenetére

    Most nézem, itt 2x16-os LCD-re van írva.

    #include <Wire.h>
    #include <LiquidCrystal_I2C.h>

    LiquidCrystal_I2C lcd(0x27,16,2); //set the LCD address to 0x27 for a 16 chars and 2 line display

    void setup()
    {
    lcd.init();
    lcd.backlight();
    lcd.setCursor(0, 0);
    lcd.print("b2cqshop");
    lcd.setCursor(0, 1);
    lcd.print("Voltage: ");
    lcd.setCursor(13, 1);
    lcd.print("V");
    }
    void loop()
    {
    int val;
    float temp;
    val=analogRead(0);
    temp=val/4.092;
    val=(int)temp;//
    lcd.setCursor(9, 1);
    lcd.print(0x30+val/100,BYTE);
    lcd.print(0x30+(val%100)/10,BYTE);
    lcd.print('.');
    lcd.print(0x30+val%10,BYTE);
    delay(100);
    }

    Ha ezt a sort átírom, akkor elvileg tudja a 4x20-at?
    LiquidCrystal_I2C lcd(0x27,20,4);

    Kiírás hogyan megy ISP-nél, ugyanúgy mint a hagyományosnál? Pl...

    lcd.begin(20, 4); //Az LCD 4 sor, 20 oszlopos
    lcd.setCursor(3, 1); //
    lcd.print("tESZT:"); //

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