Buenas
Necesito ayuda sobre como programar en arduino un teclado ps2 sin usar la librería ya que necesito
hacerlo en otro micro, ya he leído en varias paginas pero solo dan una información generalizada sobre
su uso.
Si alguien tiene información se lo agradecería mucho.
(el otro micro que voy a usar es el KL25Z de freescale)
Pues no te queda otra que ir a la pagina de la librería, bajar el código fuente y portarlo al micro que deseas. Desde ya te digo que no es un trabajo para newbies.
Saludos
listo ya quedo Se los muestro, solo recibo ya los datos aun falta mostrar los caracteres pero lo esencial
funciona.
int d0,d1,d2,d3,d4,d5,d6,d7;
byte paridad;
byte start;
byte paro;
int n=0;
byte RelojActual,RelojAntigua;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(3,INPUT);
pinMode(5,INPUT);
}
void loop() {
// put your main code here, to run repeatedly:
RelojActual = digitalRead(3);
if(RelojActual == LOW && RelojAntigua == HIGH)
{
teclado(n);
n++;
if(n==11)
{
mostrar();
n=0;
}
}
RelojAntigua= RelojActual;
}
void teclado(int i)
{
switch(i){
case 0:
start = digitalRead(5);
break;
case 1:
d0 = digitalRead(5);
break;
case 2:
d1 = digitalRead(5);
break;
case 3:
d2 = digitalRead(5);
break;
case 4:
d3 = digitalRead(5);
break;
case 5:
d4 = digitalRead(5);
break;
case 6:
d5 = digitalRead(5);
break;
case 7:
d6 = digitalRead(5);
break;
case 8:
d7 = digitalRead(5);
break;
case 9:
paridad = digitalRead(5);
break;
case 10:
paro = digitalRead(5);
break;
}
}
void mostrar(){
Serial.print(start);
Serial.print(" ");
Serial.print(d7);
Serial.print(d6);
Serial.print(d5);
Serial.print(d4);
Serial.print(d3);
Serial.print(d2);
Serial.print(d1);
Serial.print(d0);
Serial.print(" ");
Serial.print(paridad);
Serial.println(paro);
}
Presionando la tecla "a" recibo lo siguiente:
0 00011100 01 1C
0 11110000 11 F0
0 00011100 01 1C
Usa tags, lee las normas para saber cómo?
Aca alguna mejora a tu código.
char d;
byte paridad;
byte start;
byte paro;
int n = 0;
byte RelojActual,RelojAntigua;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(3,INPUT);
pinMode(5,INPUT);
}
void loop() {
// put your main code here, to run repeatedly:
RelojActual = digitalRead(3);
if (RelojActual == LOW && RelojAntigua == HIGH) {
teclado(n);
n++;
if ( n == 11) {
mostrar();
n=0;
}
}
RelojAntigua = RelojActual;
}
void teclado(int i) {
switch(i){
case 0:
start = digitalRead(5);
break;
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
d |= digitalRead(5)<< (i-1) ;
break;
case 9:
paridad = digitalRead(5);
break;
case 10:
paro = digitalRead(5);
break;
}
}
void mostrar(){
Serial.print(start);
Serial.print(" ");
Serial.print(d);
Serial.print(" ");
Serial.print(paridad);
Serial.println(paro);
}