Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Pinguino32X + keypad librairie
08-11-2011, 01:10 AM,
#1
Sad  Pinguino32X + keypad librairie
Bonjour a tous,

Dans le dossier library/p8/include/pinguino/libraries de pinguino32x, il a une librairie keypad.c que je voudrait utilisé avec un pic 18f4550.

Mais je n'arrive pas a comprendre comment elle fonctionne.

Si une âme charitable pouvait me donner un exemple d'utilisation pour un clavier matricielle 10x7.

Merci.

Reply
08-11-2011, 10:29 PM,
#2
RE: Pinguino32X + keypad librairie
non personne ?,

Je ne demande pas que l'on me fasse le code, mais juste un exemple d'utilisation des fonctions.

Comment déclarer mes lignes et colonnes, le capture des touches, etc...


Merci.
Reply
08-11-2011, 10:51 PM, (This post was last modified: 09-11-2011, 09:53 AM by regis.)
#3
RE: Pinguino32X + keypad librairie
Salut,
Je ne suis pas l'auteur de cette lib mais il me semble qu'elle a été adaptée d'une lib. Arduino.
Va sur leur site (arduino.cc) et cherche keypad dans les libraries. Tu y trouveras des exemples et la façon de câbler ton clavier.
Régis

(08-11-2011, 10:29 PM)j3r0m3 Wrote: non personne ?,

Je ne demande pas que l'on me fasse le code, mais juste un exemple d'utilisation des fonctions.

Comment déclarer mes lignes et colonnes, le capture des touches, etc...


Merci.

It is easier to complain than it is to do, but it is better to do than it is to complain.
Reply
09-11-2011, 01:20 AM,
#4
RE: Pinguino32X + keypad librairie
Bon ben je suis pas doué , j'arrive pas a mettre en place les fonctions.

Les exemples de librairie sont en c++, et la lib de pinguino est en C, et apparemment les fonctions n'ont pas les même noms.

J'ai des erreurs :
Board: Generic 18F4550
Proc: 18f4550
E:\pinguino32X\library\source\/user.c:9: error 2: Initializer element is not constant
E:\pinguino32X\library\source\/user.c:9: error 2: Initializer element is not constant
E:\pinguino32X\library\source\/user.c:15: error 2: Initializer element is not constant
E:\pinguino32X\library\source\/user.c:17: error 2: Initializer element is not constant
E:\pinguino32X\library\source\/user.c:20: syntax error: token -> 'Keypad' ; column 18
error while compiling file E:\pinguino32X\library\examples\key\key

voici mon code :
Code:
#include <Keypad.h>

const keypad_rows = 4; //four rows
const keypad_columns = 3; //three columns

char userKeymap[keypad_rows][keypad_columns] = {
  {'1','2','3'},
  {'4','5','6'},
  {'7','8','9'},
  {'#','0','*'}
};
byte rowPins[keypad_rows] = {5, 4, 3, 2}; //connect to the row pinouts of the keypad
byte columnPins[keypad_columns] = {8, 7, 6}; //connect to the column pinouts of the keypad

Keypad_init   Keypad( char *userKeymap, uchar *rowp, uchar *colp, uchar rows, uchar cols);

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

void loop(){
  char key = keypad.getKey();

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

Si on pouvait m'aider, merci.
Reply
09-11-2011, 10:00 AM,
#5
RE: Pinguino32X + keypad librairie
Je vois au moins un problème. Tu inclus <Keypad.h>, donc du C mais tu appelles des fonctions C++ (keypad.getKey) que Pinguino ne comprend pas à moins d'utiliser un fichier .pdl32 avec la liste des mots clefs (et dans ce cas il ne sera plus nécessaire d'inclure Keypad.h).
Régis


(09-11-2011, 01:20 AM)j3r0m3 Wrote: Bon ben je suis pas doué , j'arrive pas a mettre en place les fonctions.

Les exemples de librairie sont en c++, et la lib de pinguino est en C, et apparemment les fonctions n'ont pas les même noms.

J'ai des erreurs :
Board: Generic 18F4550
Proc: 18f4550
E:\pinguino32X\library\source\/user.c:9: error 2: Initializer element is not constant
E:\pinguino32X\library\source\/user.c:9: error 2: Initializer element is not constant
E:\pinguino32X\library\source\/user.c:15: error 2: Initializer element is not constant
E:\pinguino32X\library\source\/user.c:17: error 2: Initializer element is not constant
E:\pinguino32X\library\source\/user.c:20: syntax error: token -> 'Keypad' ; column 18
error while compiling file E:\pinguino32X\library\examples\key\key

voici mon code :
Code:
#include <Keypad.h>

const keypad_rows = 4; //four rows
const keypad_columns = 3; //three columns

char userKeymap[keypad_rows][keypad_columns] = {
  {'1','2','3'},
  {'4','5','6'},
  {'7','8','9'},
  {'#','0','*'}
};
byte rowPins[keypad_rows] = {5, 4, 3, 2}; //connect to the row pinouts of the keypad
byte columnPins[keypad_columns] = {8, 7, 6}; //connect to the column pinouts of the keypad

Keypad_init   Keypad( char *userKeymap, uchar *rowp, uchar *colp, uchar rows, uchar cols);

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

void loop(){
  char key = keypad.getKey();

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

Si on pouvait m'aider, merci.

It is easier to complain than it is to do, but it is better to do than it is to complain.
Reply
09-11-2011, 10:43 AM,
#6
RE: Pinguino32X + keypad librairie
Ouvre le fichier keypad.h, tu y trouvera les fonctions en C.

Par exemple:
Keypad.init doit être remplacé par Keypad_init
Keypad.getkey doit être remplacé par Keypad_getkey

etc....

En fait pour rendre cette librairie 100% compatible il suffirait d'écrire un fichier de translation ( keypad.pdl par exemple ).

JP

(09-11-2011, 01:20 AM)j3r0m3 Wrote: Bon ben je suis pas doué , j'arrive pas a mettre en place les fonctions.

Les exemples de librairie sont en c++, et la lib de pinguino est en C, et apparemment les fonctions n'ont pas les même noms.

J'ai des erreurs :
Board: Generic 18F4550
Proc: 18f4550
E:\pinguino32X\library\source\/user.c:9: error 2: Initializer element is not constant
E:\pinguino32X\library\source\/user.c:9: error 2: Initializer element is not constant
E:\pinguino32X\library\source\/user.c:15: error 2: Initializer element is not constant
E:\pinguino32X\library\source\/user.c:17: error 2: Initializer element is not constant
E:\pinguino32X\library\source\/user.c:20: syntax error: token -> 'Keypad' ; column 18
error while compiling file E:\pinguino32X\library\examples\key\key

voici mon code :
Code:
#include <Keypad.h>

const keypad_rows = 4; //four rows
const keypad_columns = 3; //three columns

char userKeymap[keypad_rows][keypad_columns] = {
  {'1','2','3'},
  {'4','5','6'},
  {'7','8','9'},
  {'#','0','*'}
};
byte rowPins[keypad_rows] = {5, 4, 3, 2}; //connect to the row pinouts of the keypad
byte columnPins[keypad_columns] = {8, 7, 6}; //connect to the column pinouts of the keypad

Keypad_init   Keypad( char *userKeymap, uchar *rowp, uchar *colp, uchar rows, uchar cols);

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

void loop(){
  char key = keypad.getKey();

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

Si on pouvait m'aider, merci.

Reply
10-11-2011, 12:44 PM,
#7
RE: Pinguino32X + keypad librairie
Bon, comme je suis persévèrent, le code suivant se compile :
Code:
#include <keypad.h>

uchar keypad_rows = 4;
uchar keypad_columns = 4;

KeypadState state;
char currentKey;
unsigned long lastUpdate;
unsigned int debounceTime;
unsigned int holdTime;
void Keypad_setDebounceTime(unsigned int debounce);
void Keypad_setHoldTime(unsigned int hold);

char keypadmap[4][4] = {
  {'0','1','2','3'},
  {'4','5','6','7'},
  {'8','9','A','B'},
  {'C','D','E','F'}
};
unsigned char *rowPins = {3, 2, 1, 0}; //connect to the row pinouts of the keypad
unsigned char *columnPins = {7, 6, 5, 4}; //connect to the column pinouts of the keypad
void Keypad_transitionTo(KeypadState newState);
void Keypad_initializePins();
void Keypad_init(char *keypadmap, uchar *rowp, uchar *colp, uchar rows, uchar cols);


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

void loop ()
{

{
//Serial.printf(key);
    }    
}

Mais je ne sait pas quoi mettre dans le loop.

Help!!!
Reply
11-11-2011, 10:50 AM,
#8
RE: Pinguino32X + keypad librairie
A priori, dans le setup tu dois appeler la fonction keypad_init:
Keypad_init(keypadmap,rowp,colp,rows,cols);

Aprés dans le loop tu testes si une touche est appuyée:

{
unsigned char key;

key = Keypad_getKey();

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

ça devrait marcher comme ça ( je n'ai jamais utilisé cette librairie ).

Bravo pour la persévérance !!

(10-11-2011, 12:44 PM)j3r0m3 Wrote: Bon, comme je suis persévèrent, le code suivant se compile :
Code:
#include <keypad.h>

uchar keypad_rows = 4;
uchar keypad_columns = 4;

KeypadState state;
char currentKey;
unsigned long lastUpdate;
unsigned int debounceTime;
unsigned int holdTime;
void Keypad_setDebounceTime(unsigned int debounce);
void Keypad_setHoldTime(unsigned int hold);

char keypadmap[4][4] = {
  {'0','1','2','3'},
  {'4','5','6','7'},
  {'8','9','A','B'},
  {'C','D','E','F'}
};
unsigned char *rowPins = {3, 2, 1, 0}; //connect to the row pinouts of the keypad
unsigned char *columnPins = {7, 6, 5, 4}; //connect to the column pinouts of the keypad
void Keypad_transitionTo(KeypadState newState);
void Keypad_initializePins();
void Keypad_init(char *keypadmap, uchar *rowp, uchar *colp, uchar rows, uchar cols);


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

void loop ()
{

{
//Serial.printf(key);
    }    
}

Mais je ne sait pas quoi mettre dans le loop.

Help!!!

Reply
11-11-2011, 11:44 AM,
#9
RE: Pinguino32X + keypad librairie
ok merci, je teste et revient .

La persévérance paye toujours, mais a quel prix, les prises de têtes, aïe aïe Smile

EDIT:

On progresse, mais ...

erreur

error: missing definition for symbol "_Keypad_getKey", required by "E:\pinguino32X\library\source\main.o"
error: missing definition for symbol "_Keypad_init", required by "E:\pinguino32X\library\source\main.o"
error while linking E:\pinguino32X\library\examples\clavier\NoName0.o


Code:
#include <keypad.h>

uchar rows = 4;
uchar cols = 4;

KeypadState state;
char currentKey;
unsigned long lastUpdate;
unsigned int debounceTime;
unsigned int holdTime;
void Keypad_setDebounceTime(unsigned int debounce);
void Keypad_setHoldTime(unsigned int hold);

char keypadmap[4][4] = {
  {'0','1','2','3'},
  {'4','5','6','7'},
  {'8','9','A','B'},
  {'C','D','E','F'}
};
unsigned char *rowp = {3, 2, 1, 0}; //connect to the row pinouts of the keypad
unsigned char *colp = {7, 6, 5, 4}; //connect to the column pinouts of the keypad
void Keypad_transitionTo(KeypadState newState);
void Keypad_initializePins();
void Keypad_init(char *keypadmap, uchar *rowp, uchar *colp, uchar rows, uchar cols);


void setup ()
{
Keypad_init(*keypadmap,*rowp,*colp,rows,cols);

    Serial.begin(9600);
}

void loop ()
{

unsigned char key;

key = Keypad_getKey();

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

Merci de votre patience.
Reply
11-11-2011, 05:18 PM,
#10
RE: Pinguino32X + keypad librairie
Aprés #include <keypad.h>
ajoutez
#include <keypad.c>

(11-11-2011, 11:44 AM)j3r0m3 Wrote: ok merci, je teste et revient .

La persévérance paye toujours, mais a quel prix, les prises de têtes, aïe aïe Smile

EDIT:

On progresse, mais ...

erreur

error: missing definition for symbol "_Keypad_getKey", required by "E:\pinguino32X\library\source\main.o"
error: missing definition for symbol "_Keypad_init", required by "E:\pinguino32X\library\source\main.o"
error while linking E:\pinguino32X\library\examples\clavier\NoName0.o


Code:
#include <keypad.h>

uchar rows = 4;
uchar cols = 4;

KeypadState state;
char currentKey;
unsigned long lastUpdate;
unsigned int debounceTime;
unsigned int holdTime;
void Keypad_setDebounceTime(unsigned int debounce);
void Keypad_setHoldTime(unsigned int hold);

char keypadmap[4][4] = {
  {'0','1','2','3'},
  {'4','5','6','7'},
  {'8','9','A','B'},
  {'C','D','E','F'}
};
unsigned char *rowp = {3, 2, 1, 0}; //connect to the row pinouts of the keypad
unsigned char *colp = {7, 6, 5, 4}; //connect to the column pinouts of the keypad
void Keypad_transitionTo(KeypadState newState);
void Keypad_initializePins();
void Keypad_init(char *keypadmap, uchar *rowp, uchar *colp, uchar rows, uchar cols);


void setup ()
{
Keypad_init(*keypadmap,*rowp,*colp,rows,cols);

    Serial.begin(9600);
}

void loop ()
{

unsigned char key;

key = Keypad_getKey();

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

Merci de votre patience.

Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)