Go Down

Topic: Hur får man ÅÄÖ på en HD44780 med LiquidCrystal biblioteket? (Read 2494 times) previous topic - next topic

kodde

Vet någon hur får man ÅÄÖ på en HD44780 med LiquidCrystal biblioteket?

Tack!

Msquare

Vad får du när du skriver hela alfabetet dvs skriver 0 - 255 med lcd.print(n,BYTE)?

om du har en "japansk" variation af chippen finnes åäö inte.

Msquare

(trykte Send för tidligt)

Annars skal du titta efter createChar() funktionen. Så definerer du själv dit bitmönster som ser ut som åäöÅÄÖ och dom skal du skriva med 0,1..6 som bogstavskod.

kodde

Hej,
Sorry för det sena svaret.

Jag kollade och det verkade finnas "ä" och "ö", men inte "å".

Jag testade även createChar() och det fungerade fint.

Tack för hjälpen.

Asoftyn

Testa min kod hoppas det funkar!
tog mig 2 timmar att lista ut :)

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

byte a1[8] = {//å
        B00100,
        B00000,
        B01110,
        B00001,
        B01111,
        B10001,
        B01111,
        B00000
};

byte a2[8] = {//Å
        B00100,
        B00000,
        B01110,
        B10001,
        B10001,
        B11111,
        B10001,
        B10001
};

byte a3[8] = {//ä
        B01010,
        B00000,
        B01110,
        B00001,
        B01111,
        B10001,
        B01111,
        B00000
};

byte a4[8] = {//Ä
        B01010,
        B00000,
        B01110,
        B10001,
        B10001,
        B11111,
        B10001,
        B10001
};

byte a5[8] = {//ö
        B01010,
        B00000,
        B01110,
        B10001,
        B10001,
        B10001,
        B01110,
        B00000
};
byte a6[8] = {//Ö
        B01010,
        B00000,
        B01110,
        B10001,
        B10001,
        B10001,
        B10001,
        B01110
};

void setup() {
 
  lcd.createChar(1,a1);
  lcd.createChar(2,a2);
  lcd.createChar(3,a3);
  lcd.createChar(4,a4);
  lcd.createChar(5,a5);
  lcd.createChar(6,a6);

  lcd.begin(16,2);
  Print("åäöÅÄÖ")
 
}

void loop() {}

void Print(String message){
  char message1[message.length()+1];
 
  message.toCharArray(message1,message.length()+1);
 
  for(int i = 0; i < message.length(); i++){
   
    if(message1 == '\xE5'){//å
      lcd.write(1);
      Serial.println(message1);
    }else if(message1 == '\xC5'){//Å
      lcd.write(2);
    }else if(message1 == '\xE4'){//ä
      lcd.write(3);
    }else if(message1 == '\xC4'){//Ä
      lcd.write(4);
    }else if(message1 == '\xF6'){//ö
      lcd.write(5);
    }else if(message1 == '\xD6'){//Ö
      lcd.write(6);
    }else{
      lcd.print(String(message1));
    }
 
  }
}

Go Up