#include "storage.h"
// *Note: Don't use PROGMEM, because it'll make the code not get the proper values!!!
int lsindex = 0; // index of read letter in template
int letpos = 0;
int pixpos = 0;
long steppos = 0;
unsigned char letter = 0;
byte pixval = 0;
String received = "";
byte cmsht = 100;
byte pmsht = 60;
byte stcpx = 27;
byte stppx = 61;
byte pxln = 9;
long lnfsa = 0;
char overflow = 0;
void setup() {
DDRB = 255;
pinMode(6, INPUT_PULLUP); // koncový kalibračný spínač
pinMode(A1, INPUT_PULLUP); // posuv o 5mm von
pinMode(A2, INPUT_PULLUP); // posuv o 5mm dnu
pinMode(2, OUTPUT); // stepper 1 step
pinMode(3, OUTPUT); // stepper 1 dir
pinMode(4, OUTPUT); // stepper 2 step
pinMode(5, OUTPUT); // stepper 2 dir
Serial.begin(9600);
Serial.write(0x0A); // tento riadok môžete vynechať
}
void loop() {
while (!Serial.available()) {
if (digitalRead(A1) == LOW) {
delay(500);
bplf();
}
if (digitalRead(A2) == LOW) {
delay(500);
bpluf();
}
}
received = sstringr();
for (byte f = 0; f < received.length(); f = f + 1) {
letter = received[f];
if (letter == 10 || letter == 13 || letpos > 19) {
letpos = 0;
if(letter != 10 || letter != 13) {
overflow = letter;
}
lnfsa = pxln * stppx;
crlf();
if(letter != 10 || letter != 13) {
overflow = letter;
dotmatrix(overflow);
}
continue;
}
else {
dotmatrix(letter);
letpos = letpos + 1;
}
}
}
void dotmatrix(unsigned char character) {
digitalWrite(3, HIGH);
lsindex = (character - 32) * 6;
for (byte i = 0; i < 6; i = i + 1) {
pixval = 0;
pixval = font[lsindex + i];
for (byte b = 8; b-- > 0;){
if ((pixval >> b & 0x01) == 0){
Serial.print(' ');
} else {
Serial.print('#');
}
}
Serial.println();
pixpos = pixpos + 1;
for (byte y = 0; y < stcpx; y = y + 1) {
steppos = steppos + 1;
digitalWrite(2, HIGH);
delayMicroseconds(cmsht);
digitalWrite(2, LOW);
delayMicroseconds(cmsht);
if (y > 10) {
PORTB = 0;
}
else {
PORTB = pixval;
}
}
}
}
void crlf() {
digitalWrite(3, LOW);
digitalWrite(5, HIGH);
while (steppos > 0) {
steppos = steppos - 1;
digitalWrite(2, HIGH);
delayMicroseconds(cmsht);
digitalWrite(2, LOW);
delayMicroseconds(cmsht);
}
while (lnfsa > 0) {
lnfsa = lnfsa - 1;
digitalWrite(4, HIGH);
delayMicroseconds(pmsht);
digitalWrite(4, LOW);
delayMicroseconds(pmsht);
}
}
void bplf() {
digitalWrite(5, HIGH);
lnfsa = pxln * stppx;
while (lnfsa > 0) {
lnfsa = lnfsa - 1;
digitalWrite(4, HIGH);
delayMicroseconds(pmsht);
digitalWrite(4, LOW);
delayMicroseconds(pmsht);
}
}
void bpluf() {
digitalWrite(5, LOW);
lnfsa = pxln * stppx;
while (lnfsa > 0) {
lnfsa = lnfsa - 1;
digitalWrite(4, HIGH);
delayMicroseconds(pmsht);
digitalWrite(4, LOW);
delayMicroseconds(pmsht);
}
}
String sstringr() {
char message = 0;
String content = "";
while (Serial.available()) {
message = Serial.read();
content += message;
}
if (content != "") {
return content;
}
}
Homing switch
Line feed
Carriage move
Paper feed out of printer
Paper feed into printer