bonjour à tous!
afin de prendre en main et de m'amuser un petit peu avec mon module sans fil 433Mhz, j'ai voulu établir une connexion entre deux arduino.
le premier (arduino uno), s'occupe de l'émission!
j'y ai branché un clavier (4*4) afin de taper ce que l'on veut, une fois notre nombre tapé, il ne reste plus qu'a appuyer sur # pour l'envoyer.
Jusqu'ici pas de problèmes, mais lorsque j'affiche dans la liaison série(pour tester mon code) je remarque que le premier chiffre de mon nombre, c'est # !
je ne comprend pas.. bon plutôt que de vous parler deux heures, voici mon code:
#include <Keypad.h>
#include <VirtualWire.h>
const int envoi = 12;
const int led=10;
const int ligne1=2;
const int ligne2=3;
const int ligne3=4;
const int ligne4=5;
const int colonne1=6;
const int colonne2=7;
const int colonne3=8;
const int colonne4=9;
const byte ligne=4; //on indique combien il y a de ligne/colonne
const byte colonne=4;
char touches[ligne][colonne]= {
{'1','2','3','A'},
{'4','5','6','B'}, //on créé un tableau 2D qui contient nos touches
{'7','8','9','C'},
{'*','0','#','D'}
};
byte brocheligne[ligne] = {ligne1,ligne2,ligne3,ligne4}; //connexions utilisées pour les broches de lignes du clavier
byte brochecolonne[colonne] = {colonne1,colonne2,colonne3,colonne4};
char touche; // variable de stockage valeur touche appuyée
char mot[]={};
int i=0;
Keypad clavier=Keypad(makeKeymap(touches),brocheligne,brochecolonne,ligne,colonne);
void setup()
{
vw_set_tx_pin(envoi);
vw_set_ptt_inverted(true); //Configure la position de la broche d'envoi
vw_setup(1000); // Bits per sec
Serial.begin(9600);
pinMode(led,OUTPUT);
digitalWrite(led,HIGH);
}
void loop()
{
touche=clavier.getKey();
if(touche!=NO_KEY)
{
if (touche=='#')
{
Serial.println(mot);
Serial.println(i);
digitalWrite(led,LOW);
vw_send((uint8_t *)mot,i); //Cette fonction transmet le message contenu dans le tableau message, ainsi que sa taille ainsi le récepteur peut controler que le message reçu est de la même taille que celui envoyé.
vw_wait_tx(); //Attends que le message soit completement transmis.
delay(100);
digitalWrite(led,HIGH);
for (i;i!=0;i--)
{
mot[i]=0;
}
i=0;
mot[i]=0;
}
else
{
mot[i]=touche;
i+=1;
}
}
}
et voici ce que ça donne:
alors j'ai taper le nombre 11, et ça m'affiche #1 !
le nombre 2 sert à m'informer sur le nombre d'appui sur mon clavier.
HELP SVP
merci bonne journée