Usando os Leds e Joystick na LPCXpresso4337 no mbed

Este post faz parte da série LPCXpresso4337 no mbed

Nesse artigo vamos ensinar como utilizar os leds e Joystick da placa Shield OM13082, programando a placa LPCXpresso4337 com o mbed. Os valores do Joystick serão impressos no LCD da placa de expansão e os leds acenderão conforme movimentação do Joystick.

Para acessar o artigo com as especificações completas da placa LPCXpresso4337, acesse o link do artigo de Thiago Lima.

Para acessar o artigo com as especificações da placa Shield OM13082, acesse o link do artigo de Thiago Lima.

Para aprender a fazer o primeiro programa no mbed, acesse o link do artigo de Fabio Sousa.

Para aprender a utilizar o LCD gráfico 128×64 da placa de expansão, acesse o link do artigo de Thiago Lima.

Para aprender a utilizar o sensor de Temperatura da placa de expansão, acesse o link do artigo de Thiago Lima.

Leds e Joytick – PCAL955x

Conforme pode ser observado no datasheet da placa de expansão OM13082, os quatro leds presentes na placa estão conectados ao CI PCAL955x, que rata-se de um expansor de IOs e pode ser acessado via comunicação serial I2C.

leds-joystick

Vamos então criar um software para se comunicar com esse CI e, conforme atuamos no joystick, altera o estado dos Leds. Os leds estão conectado da seguinte forma:

LD1 – P14

LD2 – P15

LD3 – P16

LD4 – P17

O Joystick está conectado da seguinte forma:

R – Direita – P03

S – Centro – P01

U – Pra Cima – P04

L – Esquerda – P02

D – Pra Baixo – P00

Vamos criar o projeto. Para iniciar, logado no mbed, crie um novo projeto chamado mbed_joystick_leds

joystick-leds

Em https://www.mbed.com/en/ faca a busca pelo nome do display ST7567, o mesmo utilizado nessa placa. A primeira busca é o projeto https://developer.mbed.org/users/MACRUM/code/ST7567/ Clique em Import into Compiler para utilizar o código-fonte desse projeto.

lcd-128x64-2

A seguinte tela vai aparecer. Importe.

joystick-leds1

Volte no site da mbed, na página destinada ao shield da placa mbed.  Importe a biblioteca do CI PCAL955x conforme a figura abaixo:

joystick-leds2

Adicione a biblioteca do CI PCAL955x ao projeto correto.

joystick-leds3

Digite o seguinte código que acessa o Joystick e controla os leds, mostrando os valores do Joystick no display:

#include "mbed.h"
#include "ST7567.h"
#include "PCAL9555.h"
//Instancia o LCD
ST7567 lcd(D11, D13, D12, D9, D10); // mosi, sclk, reset, A0, nCS
//Instancia o CI responsavel pela expancao de GPIOs, onde os leds e o joystick estao conectados.
PCAL9555    gpio_exp(SDA, SCL);
GpioBusOut  leds(gpio_exp, X1_4, X1_5, X1_6, X1_7);
GpioBusIn   joystick(gpio_exp, X0_0, X0_1, X0_2, X0_3, X0_4);
 
//Utilizado enum para controlar os estados dos Leds.
enum led_num {
    OM13082_LD1 = (1 << 0),
    OM13082_LD2 = (1 << 1),
    OM13082_LD3 = (1 << 2),
    OM13082_LD4 = (1 << 3),
};

enum key_num {
    Key_Up     = (1 << X0_4),
    Key_Down   = (1 << X0_0),
    Key_Right  = (1 << X0_3),
    Key_Left   = (1 << X0_2),
    Key_Center = (1 << X0_1),
};


int main()
{
    //Seta o contraste do LCD
    lcd.set_contrast(0x35);
    //Limpa o LCD
    lcd.cls();
    
    //Posiciona na primeira posicao do LCD
    lcd.locate(0, 1);
    //Imprime a mensagem do Contest NXP na primeira linha do display
    lcd.printf("EMBARCADOS TEST NXP");
    
  
    while(true) {   // this is the third thread
        lcd.locate(0, 2 + 8);
       
        //Le o Joystick
        int keys = joystick.read();
        
        if ((keys & Key_Up) == 0) // Testa se tecla pra cima do Joystick foi acionada
        {
            lcd.printf("Tecla = Cima    \n");
            leds.write(~OM13082_LD1); // Acende Led 1
        }
        else if ((keys & Key_Down) == 0) // Testa se tecla pra bixo do Joystick foi acionada
        {
            lcd.printf("Tecla = Baixo   \n");
            leds.write(~OM13082_LD2); // Acende Led 2
        }
        else if ((keys & Key_Right) == 0) //Testa se tecla pra direita do Joystick foi acionada 
        {
            lcd.printf("Tecla = Direita \n");
            leds.write(~OM13082_LD3); // Acende Led 3
        }
        else if ((keys & Key_Left) == 0) // Testa se tecla pra esquerda do Josytick foi acionada.
        {
            lcd.printf("Tecla = Esquerda\n");
            leds.write(~OM13082_LD4); // Acende Led 4
        }    
        else if ((keys & Key_Center) == 0) Testa se joystick esta pressionado na posicao central
        {
            lcd.printf("Tecla = Centro   \n");
            leds.write(~(OM13082_LD1|OM13082_LD2|OM13082_LD3|OM13082_LD4)); // Acende todos os leds
        }
        else //Nenhuma tecla esta acionada.
        {
            lcd.printf("Tecla = Nenhuma  \n");
        }
        wait(0.5);
    }
}

Clique em Compile. Esse botão compila e faz o download do binário. Conecte a placa e, depois que o drive MBED montar, arraste o binário para dentro do drive MBED. Aguarde alguns segundos e reinicie a placa. A mensagem EMBARCADOS CONTEST NXP será impressa no LCD na primeira linha do display. Na segunda linha será informada a posição do Joystick. Cada posição do Joystick representa um estado do Led. Confira a figura abaixo.

LPCXpresso4337 no mbed

Usando o sensor de temperatura na LPCXpresso4337 no mbed Entrada analógica e comunicação serial na LPCXpresso4337 no mbed
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.
Comentários:
Notificações
Notificar
0 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Home » Software » Usando os Leds e Joystick na LPCXpresso4337 no mbed

EM DESTAQUE

WEBINARS

VEJA TAMBÉM

JUNTE-SE HOJE À COMUNIDADE EMBARCADOS

Talvez você goste: