quarta-feira, 13 de janeiro de 2010

Criando Caracteres no LCD

Já precisou usar uma seta para direita no LCD em seu trabalho? ou para esquerda? ou para baixo/cima? Tentou upar códigos e mais códigos e nada? Aqui esta a solução para você...


Com este software online você consegue criar qualquer caractere em uma matriz de 5 x 8 quadrados.




Exemplo de Sketch:


#include   //inicia biblioteca LCD

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

byte newChar[8] = {
 B00100,      //vetor aonde é criado os caracteres
 B00100,      //no caso em questao, 1 = escrito
 B00100,      //0 = apagado
 B00100,
 B00100,
 B11111,
 B01110,
 B00100
};

void setup() {
 lcd.createChar(0, newChar); //Chama função para criar caractere
 lcd.begin(16, 2); //inicia LCD
 lcd.write(0); //escreve LCD
}

void loop() {}

2 comentários:

  1. como eu faço isso em assenbler??
    claudinei
    circuitoimpresso@yahoo.com.br

    ResponderExcluir
  2. estou com problema no meu switch/case,se alguem puder me ajudar= =>
    int timer=300; // Tempo entre cada letra em MicroSegundos
    int timer1=500; // Tempo entre cada letra em MicroSegundos
    int var_sensorIR = 0;
    int sensorIR = A0; //-> Variaveis Correspondentes ao Sensor de Infravermelhos
    int letra[]={0};

    void setup()
    {
    Serial.begin(9600);
    pinMode (4, OUTPUT);
    pinMode (5, OUTPUT);
    pinMode (6, OUTPUT);
    pinMode (7, OUTPUT);
    pinMode (8, OUTPUT);
    pinMode (9, OUTPUT);
    pinMode (10, OUTPUT);
    pinMode (11, OUTPUT);
    pinMode (12, OUTPUT);
    pinMode (13, OUTPUT);
    }

    void loop()
    {
    for(int j=0;j<8000;j++)
    {

    var_sensorIR = analogRead(sensorIR); // Leitura do valor do Sensor e escrita desse mesmo valor na variavel “val_sensorIR”

    if(var_sensorIR < 1020)// Condição SE o valor do sensor for menos que 400 entao começa a sequencia dos Leds.
    {
    letra ='A';


    switch(letra)
    {
    case 'A': // LETRA A
    PORTB = B00011111;
    PORTD = B11110000;
    delayMicroseconds(timer);
    PORTB = B00100001;
    PORTD = B00000000;
    delayMicroseconds(timer);
    PORTB = B00100001;
    PORTD = B00000000;
    delayMicroseconds(timer);
    PORTB = B00100001;
    PORTD = B00000000;
    delayMicroseconds(timer1);
    PORTB = B00011111;
    PORTD = B11110000;
    delayMicroseconds(timer1);
    break;

    ResponderExcluir