Wat en hoe.
Het idee is het toetsenbord aansluit op de printer met een eenvoudige en goedkope interface, ik heb Arduino gebruikt omdat een snelle ontwikkeling board voor dit soort projecten is en hebben een grote gemeenschap achter. De Raad van bestuur Lees de toetsenbord-signalen (gebruik een systeem gegevens/klok) en transformeren deze info over het teken naar de printer. Parallelle indeling beheersing van de flitser.
Hardware.
Basaal is ook een toetsenbordadapter met klok, gegevens, macht en GND (figuur-1), een printeradapter met 8 databits, strobe en GND (figuur-2) dit alles
Verbonden met Arduino als figuur 3.
Software.
De broncode.
Schrijfmachine met een oude op toetsenbord en een Dot matrixprinter.
2011 www.xbot.es
Francisco Reinoso "furri"
#include < PS2Keyboard.h > / / bibliotheek gebruiken een PS2Keyboard met 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 strobe 12
#define autofd 13
PS2Keyboard toetsenbord;
int caracter = 0;
VOID Setup {}
Keyboard.begin(KBD_DATA_PIN);
pinMode (d0, OUTPUT);
pinMode (d1, OUTPUT);
pinMode (d2, OUTPUT);
pinMode (d3, OUTPUT);
pinMode (d4, OUTPUT);
pinMode (d5, OUTPUT);
pinMode (d6, OUTPUT);
pinMode (d7, OUTPUT);
pinMode (strobe, OUTPUT);
pinMode (autofd, OUTPUT);
digitalWrite(autofd,HIGH);
digitalWrite(strobe,HIGH);
Serial.begin(9600);
delay(1000);
}
#define is_printable(c) (! () c & 0x80)) / / niet afgedrukt als hoogste bit is ingesteld
VOID imprime(int letra)
{
decoderen van karakter in 8 bits
Als (letra > = 128) {letra = letra - 128; digitalWrite(d0,HIGH);} else {digitalWrite(d0,LOW);}
Als (letra > = 64) {letra = letra - 64; digitalWrite(d1,HIGH);} else {digitalWrite(d1,LOW);}
Als (letra > = 32) {letra = letra - 32; digitalWrite(d2,HIGH);} else {digitalWrite(d2,LOW);}
Als (letra > = 16) {letra = letra - 16; digitalWrite(d3,HIGH);} else {digitalWrite(d3,LOW);}
Als (letra > = 8) {letra = letra - 8; digitalWrite(d4,HIGH);} else {digitalWrite(d4,LOW);}
Als (letra > = 4) {letra = letra - 4; digitalWrite(d5,HIGH);} else {digitalWrite(d5,LOW);}
Als (letra > = 2) {letra = letra - 2; digitalWrite(d6,HIGH);} else {digitalWrite(d6,LOW);}
Als (letra > = 1) {digitalWrite(d7,HIGH);} else {digitalWrite(d7,LOW);}
het teken naar de printer sturen
digitalWrite(strobe,LOW);
delayMicroseconds(2);
digitalWrite(strobe,HIGH);
}
void loop {}
if(keyboard.available()) {}
byte c = keyboard.read();
Als (c 13 ==) {Serial.print(c); imprime(10);}
anders
{
Als (is_printable(c)) {Serial.print(c); imprime(c);} / / speciale tekens worden niet afgedrukt
}
}
}