Start Elkretssimulator


Seriell display (parallax)

En ovärderlig feedbackfunktion i Arduinos IDE är den inbyggda seriella monitorn. Utan den hade man inte gjort många knop när man knackar kod. Det finns lika lättanvända displayer där ute, t.ex. parallax seriella display.



Den här kategorin displayer brukar ibland etiketteras som "intelligenta displayer" och denna flådiga rätt så överdrivna beskrivning syftar egentligen bara på att det sitter en processor ombord med teckengenerator och oftast någon enkel kommunikation med omvärlden, t.ex. ett serieinterface.

En sådan display jag äger i min samling av diverse elektronik-gunk kommer från parallax. Displayen har en inbyggd teckengenerator och kan med en enkel serie-tråd anslutas till vilken serie-port som helst.

Anslutningen blir enklast möjliga (en tråd + spänning till displayen) och det är ingenting förutom hastigheten på serietråden som behöver justeras. Jag sätter denna hastighet till 9600 baud på displayen. Det gör man med dip-switcharna på baksidan av displayen. På baksidan finns även anslutningarna till displayen, bara 3 stycken trådar här som behövs. Spänning (5 volt) samt serietråden.


Vad är det man skickar till displayen? Med seriekommunikation syftar man på, om inget annat nämns, RS232.

RS232 på 10 sekunder

Vi skickar en serie 1:or och 0:or som kodas enligt hög och låg spänning.



Det är sedan lite flexibelt vad det är som överförs. Det viktiga är att sändaren och mottagaren är överens om hur det fungerar, dvs om man använder 5,6,7 bitar eller 8 bitar, 1 eller 2 stopbitar, om man använder paritet eller inte och inte minst vilken hastighet det överförs med. Hastigheten brukar mätas i baud.

https://sv.wikipedia.org/wiki/Serieport
https://sv.wikipedia.org/wiki/RS-232

Kod

För att få lite mer att hända i nedanstående exempel har jag kopplat in en potentiometer på analog ingång 2 dvs A2. Vi läser av värdet på A/D -ingången och skriver ut det på displayen.

OBS att jag gjort egna utskriftsfunktioner till LCD -displayen nedan där jag typkonverterar till char. Jag fick det faktiskt inte att fungera utan detta. Har inte grottat så djupt i detta. Får säkert tillfälle att återkomma.

#include <SoftwareSerial.h>
int analogin;
char str[50];

// pinne 2 till display
SoftwareSerial lcd(3,2); 

void gotoXY(int x, int y)
{
  lcd.print((char)(128 + y*20 + x));
}

void printLCD(char *s)
{
  while(*s)
  {
    lcd.write((char)*s++);
  }
}

void printLnLCD(char *s)
{
  while(*s)
 {
    lcd.write((char)*s++);
  }
  lcd.write((char)13);
}

void displayLight(bool on)
{
  lcd.write(on?(char)17:(char)18);
}

void cls()
{
  lcd.write((char)12);
  delay(10);
}

void setup()
{
  // samma hastighet som inställd på 
  // baksidan av displayen
  lcd.begin(9600); 
  // ge displayen tid boota upp
  delay(500); 
  
  cls();   
  displayLight(true);  
  printLnLCD("Potentiometer");  
  printLnLCD("pa analog in A2");
}

void loop()
{
  analogin = analogRead(2);
  gotoXY(0,2);    
  sprintf(str, "%d", analogin);  
  printLnLCD(str);
  delay(500);
}


OBS att ovan potentiometern (spänningsdelaren) är inkopplad till 3.3 volt så utslaget på A/D-ingången blir inte 0-1023 utan något i stil med 0-675. Den händige flyttar lätt den röda kabeln 2 pinnhål till 5 volt så blir utslaget 0-1023 !