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:
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.
Você parece ter instalado uma versão corrompida da biblioteca. As mensagens de erro deixam isso claro.
Onde faço o download das bibliotecas, pois fiz o download nos links apresentados
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á.
Amigo, tem o esquema de ligação do i2c? Não o encontrei. Grato.
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.