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

  • nyunyu

    félisten

    Adott egy 32U4-es Arduino Micro klon, amivel egy billzetmatrixot akarok leolvasni.

    void setup() {
    pinMode(2, OUTPUT); //c0
    pinMode(3, OUTPUT); //c1
    pinMode(4, OUTPUT); //c2
    pinMode(5, OUTPUT); //c3
    pinMode(6, OUTPUT); //led1
    pinMode(7, OUTPUT); //led2
    pinMode(8, OUTPUT); //led3
    pinMode(9, OUTPUT); //led4
    pinMode(10, INPUT); //input
    }

    void columnAddress(int a)
    {
    if (a & 1) digitalWrite(2, HIGH); else digitalWrite(2, LOW);
    if (a & 2) digitalWrite(3, HIGH); else digitalWrite(3, LOW);
    if (a & 4) digitalWrite(4, HIGH); else digitalWrite(4, LOW);
    if (a & 8) digitalWrite(5, HIGH); else digitalWrite(5, LOW);
    }

    void writeLED(int a)
    {
    if (a & 1) digitalWrite(9, HIGH); else digitalWrite(9, LOW);
    if (a & 2) digitalWrite(8, HIGH); else digitalWrite(8, LOW);
    if (a & 4) digitalWrite(7, HIGH); else digitalWrite(7, LOW);
    if (a & 8) digitalWrite(6, HIGH); else digitalWrite(6, LOW);
    }

    void loop() {
    for (int i=0;i<=15;i++)
    {
    columnAddress(i);
    delay(100);
    if (digitalRead(10)==LOW) {
    writeLED(i);
    }
    }
    }

    Lenyeg: 2-5 labakon kiadok egy 4 bites binaris szamot, ide 2 74HC138 dekoder van bekotve, ezek az eppen nem cimzett kimeneteikre 5V-t adnak, mig a cimzettet lehuzzak foldre.
    Kimeneteiken log 1-1 nyomogomb+dioda, majd a kimeneteik fel vannak fuzve az Ardu 10-es labara, amely egy ellenallassal fel van huzva 5V-ra, hogy ne lebegjen.

    Gond az, hogy ha megnyomom valamelyik gombot, akkor valamiert nem teljesul a digitalRead(10)==LOW feltetel, pedig a 10-es labon olyankor 1.4V merheto, mig le nem nyomott allapotban 4.8V.

    Van valami otletetek arra, miert nem olvassa rendesen a lab allapotat?

    Esetleg epitsem at 74HC238-ra, ami pont forditva mukodik, mint a 138? Cimzett kimenet=5V, tobbi fold.

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

Hirdetés