Prototyypin rakentaminen: LCD-näytöt ja sarjaporttiliikenne


Tehtävässä oli tarkoituksena kommunikoida tietokoneen avulla sarjaportitse Arduinon kanssa. Päätin tehdä Arduinolla näytön, joka ottaa sisään sarjakonsolista tekstiä ja tulostaa sen Arduinoon kytkettyyn LCD-näyttöön.

Aloitin tutkimalla kuinka LCD-paneelin saa kytkettyä Arduinoon. Löysin Arduinon omilta sivuilta ohjeet LiquidCrystal-luokan käyttöön.

Näytön kytkeminen Arduinoon

Näytön datapinnit D4-D7 kytketään Arduinon digital-pinneihin 2-5, näytön RS-pinni kytketään Arduinon pinniin 6 ja näytön Enable-pinni Arduinon pinniin 7. Näytön VSS kytketään maihin ja VDD kytketään +5 volttiin. Näytön taustavalon anodi kytketään +5 volttiin ja katodi maihin. Näytön V0-pinni kytketään potentiometrin keskimmäiseen jalkaan. Potentiometrin vasen jalka kytketään +5 volttiin ja oikea jalka maihin.

seriallcd-kytkenta

Koodi näytön ohjaamiseen sarjakonsolista

Hetken yrityksen ja erehdyksen kautta sain seuraavanlaisen koodin tehtyä joka lukee sarjakonsolista tekstiä ja syöttää sen Arduinoon kytketylle näytölle:

/*
Arduinon näyttöön tulostaminen sarjakonsolista.
Author: Joni Junni
Date: 26.4.2013

Kytkentä:
VSS: Ground
VDD: +5v
V0:  potentiometrin keskijalkaan
RS:  pin 6
RW:  Ground
E:   pin 7
D0-3:  NC
D4:  pin 2
D5:  pin 3
D6:  pin 4
D7:  pin 5
A:   +5v
K:   Ground
*/

#include

// Luodaan lcd "olio" määritettyihin pinneihin
LiquidCrystal lcd(6, 7, 2, 3, 4, 5);

void setup() {
    Serial.begin(9600);
    // Asetetaan näytön koko
    lcd.begin(16, 2);
}

void loop() {
    // Jos sarjaportissa on uutta dataa,
    // tyhjennetään näyttö ja tulostetaan uusi teksti näytölle
    if(Serial.available()) {
        delay(200);
        lcd.clear();
        // Kirjoitetaan teksti näytölle kirjain kirjaimelta
        while(Serial.available() > 0) {
            lcd.write(Serial.read()); 
        }
    }
}

Lopputuloksena syntyi Arduinolla toteutettu näyttö johon voi syöttää tekstiä sarjakonsolista:

serialmonitor

serialLcdFinal

Lähteet