Teclado membrana de 16 teclas com interface I2C

Este é o mesmo teclado membrana que eu já oferecia, agora com o acréscimo de um cabo que faz a interface I2C, reduzindo de oito para dois os pontos de i/o necessários.

Posso fornecer com endereços I2C de 0x20 a 0x26 (pode ser 0x27 também, mas evito usar este porque é o endereço fixo do meu display). Caso não seja especificado, será enviado com qualquer valor que eu tenha em estoque. O endereço é claramente marcado na região preta que envolve o circuito.

Minha convenção de cores na fiação que conecta ao Arduino (a interface mostrada na foto não segue esse padrão):

  • +5V: vermelho
  • GND: preto
  • SCL (CLOCK): Amarelo ou laranja
  • SDA (DATA): qualquer outra cor (geralmente branco)
  • INTERRUPT: Verde – Nem todos os meu teclados saem com esse fio. Ele sinaliza que houve uma mudança no estado das entradas. Na maioria dos casos você pode deixar solto.

O uso é bem simples.

Usando Arduino 0022:

Requer a biblioteca i2ckeypad de Angel Sancho.

Sketch adaptado do exemplo fornecido com a biblioteca.


#include <Wire.h>
#include <i2ckeypad.h>

#define linhas 4
#define colunas 4
#define endereco 0x20

i2ckeypad teclado = i2ckeypad(endereco, linhas, colunas);

void setup()
{
Serial.begin(9600);

Wire.begin();

teclado.init();

Serial.print("Testando Teclado I2C. Aperte teclas agora.\n\n");
}

void loop()
{
char key = teclado.get_key();

if(key != '\0') {
Serial.print(key);
}
}

Usando Arduino 1.0x
Você precisa da biblioteca Keypad_I2C, de Alexander Brevig
E do seguinte sketch:

/*
|| Adaptado do exemplo CustomKeypad de Alexander Brevig
*/
#include <Keypad_I2C.h>
#include <Keypad.h>
#include <Wire.h>

#define Endereco_I2C 0x20

const byte NumLinhas = 4;
const byte NumColunas = 4;
//Essa matriz tem que corresponder à aparência física do teclado
char hexaKeys[NumLinhas][NumColunas] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[NumLinhas] = {0, 1, 2, 3}; //Aqui você define que pinos estão ligados às linhas do teclado
byte colPins[NumColunas] = {4, 5, 6, 7}; //e aqui os pinos ligados às colunas

//inicializa uma instância da classe NewKeypad
Keypad_I2C customKeypad( makeKeymap(hexaKeys), rowPins, colPins, NumLinhas, NumColunas, Endereco_I2C);

void setup(){
  customKeypad.begin( );
  Serial.begin(9600);
}

void loop(){
  char customKey = customKeypad.getKey();

  if (customKey != NO_KEY){
    Serial.println(customKey);
  }
}

Cópias locais das bibliotecas:

Arduino Library I2ckeypad-20090224-3
Arduino Library I2ckeypad-20090224-3
arduino_library_i2ckeypad-20090224-3_v0.1.zip
Version: 0.1
27.3 KiB
298 Downloads
Detalhes...
Arduino Library  - Keypad I2C
Arduino Library - Keypad I2C
Arduino Library - Keypad_I2C.zip
866.3 KiB
329 Downloads
Detalhes...

Tags: ,

  1. Marcio’s avatar

    Boa noite, estou tentando usar o teclado 4×4 com i2c, mas dá erro ao compilar, já instalei as bibliotecas e mesmo assim dá erro.

    In file included from sketch_sep14a.ino:4:0:
    /Users/Marcio/Documents/Arduino/libraries/Keypad_I2C/Keypad_I2C.h:13:5: error: stray ‘\302’ in program
    arduino_keypads/Keypad_I2C.h at master · joeyoung/arduino_keypads · GitHub
    ^
    /Users/Marcio/Documents/Arduino/libraries/Keypad_I2C/Keypad_I2C.h:13:5: error: stray ‘\267’ in program
    /Users/Marcio/Documents/Arduino/libraries/Keypad_I2C/Keypad_I2C.h:13:5: error: stray ‘\302’ in program
    /Users/Marcio/Documents/Arduino/libraries/Keypad_I2C/Keypad_I2C.h:13:5: error: stray ‘\267’ in program
    In file included from sketch_sep14a.ino:4:0:
    /Users/Marcio/Documents/Arduino/libraries/Keypad_I2C/Keypad_I2C.h:50:5: error: missing terminating ‘ character
    <!– –>
    ^
    In file included from sketch_sep14a.ino:4:0:
    /Users/Marcio/Documents/Arduino/libraries/Keypad_I2C/Keypad_I2C.h:95:7: error: missing terminating ‘ character
    <!– –>
    ^
    In file included from sketch_sep14a.ino:4:0:
    /Users/Marcio/Documents/Arduino/libraries/Keypad_I2C/Keypad_I2C.h:287:836: error: exponent has no digits
    <!– –>HTTPS or <!– –>Subversion.
    ^
    /Users/Marcio/Documents/Arduino/libraries/Keypad_I2C/Keypad_I2C.h:287:999: error: stray ‘#’ in program
    <!– –>HTTPS or <!– –>Subversion.
    ^
    In file included from sketch_sep14a.ino:4:0:
    /Users/Marcio/Documents/Arduino/libraries/Keypad_I2C/Keypad_I2C.h:287:5: error: missing terminating ” character
    <!– –>HTTPS or <!– –>Subversion.
    ^
    In file included from sketch_sep14a.ino:4:0:
    /Users/Marcio/Documents/Arduino/libraries/Keypad_I2C/Keypad_I2C.h:313:46: error: invalid suffix “d673fa0528e215ca282d793f0a82e” on integer constant

    ^
    In file included from sketch_sep14a.ino:4:0:
    /Users/Marcio/Documents/Arduino/libraries/Keypad_I2C/Keypad_I2C.h:595:70: error: stray ‘#’ in program
    #ifndef KEYPAD_I2C_H
    ^
    /Users/Marcio/Documents/Arduino/libraries/Keypad_I2C/Keypad_I2C.h:599:70: error: stray ‘#’ in program
    #define KEYPAD_I2C_H
    ^
    /Users/Marcio/Documents/Arduino/libraries/Keypad_I2C/Keypad_I2C.h:608:70: error: stray ‘#’ in program
    #include "Keypad.h"
    ^
    /Users/Marcio/Documents/Arduino/libraries/Keypad_I2C/Keypad_I2C.h:612:70: error: stray ‘#’ in program
    #include "Wire.h"
    ^
    /Users/Marcio/Documents/Arduino/libraries/Keypad_I2C/Keypad_I2C.h:621:70: error: stray ‘#’ in program
    #define PCF8574 1 // PCF8574 I/O expander device is 1 byte wide
    ^
    /Users/Marcio/Documents/Arduino/libraries/Keypad_I2C/Keypad_I2C.h:625:70: error: stray ‘#’ in program
    #define PCF8575 2 // PCF8575 I/O expander device is 2 bytes wide
    ^
    In file included from sketch_sep14a.ino:4:0:
    /Users/Marcio/Documents/Arduino/libraries/Keypad_I2C/Keypad_I2C.h:780:70: error: stray ‘#’ in program
    #endif // KEYPAD_I2C_H
    ^
    /Users/Marcio/Documents/Arduino/libraries/Keypad_I2C/Keypad_I2C.h:827:3: error: missing terminating ‘ character
    <!– –>
    ^
    In file included from sketch_sep14a.ino:4:0:
    /Users/Marcio/Documents/Arduino/libraries/Keypad_I2C/Keypad_I2C.h:4:1: error: expected unqualified-id before ‘<' token

    ^
    In file included from sketch_sep14a.ino:4:0:
    /Users/Marcio/Documents/Arduino/libraries/Keypad_I2C/Keypad_I2C.h:287:754: error: ‘protocol_type’ does not name a type
    <!– –>HTTPS or <!– –>Subversion.
    ^
    /Users/Marcio/Documents/Arduino/libraries/Keypad_I2C/Keypad_I2C.h:287:932: error: ‘padding’ does not name a type
    <!– –>HTTPS or <!– –>Subversion.
    ^
    /Users/Marcio/Documents/Arduino/libraries/Keypad_I2C/Keypad_I2C.h:287:942: error: ‘display’ does not name a type
    <!– –>HTTPS or <!– –>Subversion.
    ^
    /Users/Marcio/Documents/Arduino/libraries/Keypad_I2C/Keypad_I2C.h:287:1006: error: expected unqualified-id before string constant
    <!– –>HTTPS or <!– –>Subversion.
    ^
    In file included from sketch_sep14a.ino:4:0:
    /Users/Marcio/Documents/Arduino/libraries/Keypad_I2C/Keypad_I2C.h:608:151: error: expected unqualified-id before ‘<' token
    #include "Keypad.h"
    ^
    /Users/Marcio/Documents/Arduino/libraries/Keypad_I2C/Keypad_I2C.h:608:193: error: expected unqualified-id before ‘<' token
    #include "Keypad.h"
    ^
    /Users/Marcio/Documents/Arduino/libraries/Keypad_I2C/Keypad_I2C.h:612:151: error: expected unqualified-id before ‘<' token
    #include "Wire.h"
    ^
    /Users/Marcio/Documents/Arduino/libraries/Keypad_I2C/Keypad_I2C.h:612:191: error: expected unqualified-id before ‘<' token
    #include "Wire.h"
    ^
    Erro compilando.

    Responder

    1. Jefferson’s avatar

      Você parece ter instalado uma versão corrompida da biblioteca. As mensagens de erro deixam isso claro.

      Responder

      1. Marcio’s avatar

        Onde faço o download das bibliotecas, pois fiz o download nos links apresentados

        Responder

        1. Jefferson’s avatar

          As bibliotecas que disponibilizo aqui estão corretas. Acabo de verificar. Há algo errado no seu procedimento para baixar e instalar. Porque as mensagens de erro mostram que o que você tem instalado aí não é o que o que coloquei no site.

          Por exemplo, as mensagens de erro dizem que existe uma string “d673fa0528e215ca282d793f0a82e” em keypad_i2c.h. Não deveria existir tal string lá.

          Responder

        2. Rubens’s avatar

          Amigo, tem o esquema de ligação do i2c? Não o encontrei. Grato.

          Responder

          1. Jefferson’s avatar

            Não é preciso esquema com o que está escrito aí, mas se precisa de mais esclarecimentos e é meu cliente, entre em contato pelo mesmo email que usou para comprar o produto.

            Responder

Reply

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *