Quoi et comment.
L’idée est de connecter le clavier à l’imprimante avec une interface de base et bon marchée, j’ai utilisé Arduino parce qu’est une carte de développement rapide pour ce genre de projets et d’avoir une grande communauté derrière. Le jury de lire les signaux du clavier (utiliser un système de données/horloge) et transformer cette info au sujet du caractère à l’imprimante. Format parallèle contrôlant le stroboscope.
Matériel.
Est aussi très basique, un adaptateur de clavier avec horloge et données de puissance, GND (figure-1), un adaptateur d’imprimante avec 8 bits de données, stroboscope et GND (figure-2) tout cela
Reliée à Arduino comme figure-3.
Logiciel.
Le code source.
Machine à écrire avec un vieux au clavier et d’une imprimante matricielle.
www.xbot.es 2011
Francisco Reinoso « furri »
#include < PS2Keyboard.h > / / Bibliothèque à utiliser un PS2Keyboard avec Arduino
#include < string.h >
#include < stdio.h >
#define KBD_CLK_PIN 3
#define KBD_DATA_PIN 2
#define d0 4
#define d1 5
#define d2 6
#define d3 7
#define d4 8
#define d5 9
#define d6 10
#define d7 11
#define stroboscope 12
#define autofd 13
PS2Keyboard clavier ;
caracter int = 0 ;
void setup() {}
Keyboard.Begin(KBD_DATA_PIN) ;
pinMode (d0, sortie) ;
pinMode (d1, sortie) ;
pinMode (d2, sortie) ;
pinMode (d3, sortie) ;
pinMode (d4, sortie) ;
pinMode (d5, sortie) ;
pinMode (d6, sortie) ;
pinMode (d7, sortie) ;
pinMode (stroboscope, sortie) ;
pinMode (autofd, sortie) ;
digitalWrite(autofd,HIGH) ;
digitalWrite(strobe,HIGH) ;
Serial.Begin(9600) ;
Delay(1000) ;
}
#define is_printable(c) (! () c & 0 x 80)) / / ne pas imprimer si haut bit est défini
Sub imprime(int letra)
{
décoder les caractères en 8 bits
Si (letra > = 128) {letra = letra - 128 ; digitalWrite(d0,HIGH);} else {digitalWrite(d0,LOW);}
Si (letra > = 64) {letra = letra - 64 ; digitalWrite(d1,HIGH);} else {digitalWrite(d1,LOW);}
Si (letra > = 32) {letra = letra - 32 ; digitalWrite(d2,HIGH);} else {digitalWrite(d2,LOW);}
Si (letra > = 16) {letra = letra - 16 ; digitalWrite(d3,HIGH);} else {digitalWrite(d3,LOW);}
Si (letra > = 8) {letra = letra - 8; digitalWrite(d4,HIGH);} else {digitalWrite(d4,LOW);}
Si (letra > = 4) {letra = letra - 4; digitalWrite(d5,HIGH);} else {digitalWrite(d5,LOW);}
Si (letra > = 2) {letra = letra - 2; digitalWrite(d6,HIGH);} else {digitalWrite(d6,LOW);}
Si (letra > = 1) {digitalWrite(d7,HIGH);} else {digitalWrite(d7,LOW);}
Envoyer les caractères à l’imprimante
digitalWrite(strobe,LOW) ;
delayMicroseconds(2) ;
digitalWrite(strobe,HIGH) ;
}
void loop() {}
{if(Keyboard.available())}
c octets = keyboard.read() ;
Si (c == 13) {Serial.print(c) ; imprime(10);}
d’autre
{
Si (is_printable(c)) {Serial.print(c) ; imprime(c);} / / n’affiche pas les caractères spéciaux
}
}
}