#include "ulozisko.h"
byte count = 0;
byte dot = 0;
byte line = 0;
byte val1 = 0;
byte val2 = 0;
byte val3 = 0;
byte val4 = 0;
byte val5 = 0;
float bod = 0;
byte image = 0;
byte toprint = 0;
byte ready = 0;
unsigned long present = 0;
unsigned long past = 0;
unsigned long past2 = 0;
void setup() {
pinMode(10, INPUT_PULLUP); // print+next
pinMode(2, INPUT_PULLUP); // reed switch
pinMode(3, INPUT_PULLUP); // tacho generator
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
attachInterrupt(digitalPinToInterrupt(2), skuska, FALLING);
attachInterrupt(digitalPinToInterrupt(3), skuska2, CHANGE);
Serial.begin(9600);
}
void skuska() {
line = line + 1;
count = 0;
dot = 0;
ready = 1;
}
void skuska2() {
if(dot < 23) {
count = count + 1;
}
if(dot >= 23) {
dot = 23;
}
}
void loop() {
present = micros();
dot = count / 3;
bod = count / 3.00;
if(dot >= 23) {
dot = 23;
}
if(present - past2 >= 850 && toprint == 1 && ready == 1) {
count = count + 1;
past2 = present;
}
if(count >= 72) {
line = line + 1;
count = 0;
}
/*if(present - past >= 500) {
Serial.print("Print? ");
Serial.println(toprint);
Serial.print("Dot: ");
Serial.println(dot);
Serial.print("Line: ");
Serial.println(line);
Serial.print("Image: ");
Serial.println(image);
past = present;
}*/
while(toprint == 0) {
if(millis() - past >= 300) {
digitalWrite(4, LOW);
count = 0;
dot = 0;
line = 0;
ready = 0;
past = millis();
}
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
if(digitalRead(10) == LOW) {
delay(500);
line = 0;
toprint = 1;
ready = 0;
}
}
if(toprint == 1) {
digitalWrite(4, HIGH);
}
if(ready == 0) {
line = 0;
count = 0;
dot = 0;
}
if(line >= 9) {
past = present;
image = image + 1;
toprint = 0;
}
if(image >= 10) {
image = 0;
}
switch(image) {
case 0:
val1 = pgm_read_byte(&(Ambl[line - 1][dot]));
val2 = pgm_read_byte(&(esid[line - 1][dot]));
val3 = pgm_read_byte(&(eVi[line - 1][dot]));
val4 = pgm_read_byte(&(llag[line - 1][dot]));
val5 = pgm_read_byte(&(e[line - 1][dot]));
break;
case 1:
val1 = pgm_read_byte(&(Broa[line - 1][dot]));
val2 = pgm_read_byte(&(dway[line - 1][dot]));
val3 = pgm_read_byte(&(Vil[line - 1][dot]));
val4 = pgm_read_byte(&(lage[line - 1][dot]));
val5 = pgm_read_byte(&(blank[line - 1][dot]));
break;
case 2:
val1 = pgm_read_byte(&(Broa[line - 1][dot]));
val2 = pgm_read_byte(&(dway[line - 1][dot]));
val3 = pgm_read_byte(&(Out[line - 1][dot]));
val4 = pgm_read_byte(&(skir[line - 1][dot]));
val5 = pgm_read_byte(&(ts[line - 1][dot]));
break;
case 3:
val1 = pgm_read_byte(&(Broa[line - 1][dot]));
val2 = pgm_read_byte(&(dway[line - 1][dot]));
val3 = pgm_read_byte(&(Far[line - 1][dot]));
val4 = pgm_read_byte(&(m[line - 1][dot]));
val5 = pgm_read_byte(&(blank[line - 1][dot]));
break;
case 4:
val1 = pgm_read_byte(&(Edin[line - 1][dot]));
val2 = pgm_read_byte(&(burg[line - 1][dot]));
val3 = pgm_read_byte(&(hRo[line - 1][dot]));
val4 = pgm_read_byte(&(unda[line - 1][dot]));
val5 = pgm_read_byte(&(bout[line - 1][dot]));
break;
case 5:
val1 = pgm_read_byte(&(Edin[line - 1][dot]));
val2 = pgm_read_byte(&(burg[line - 1][dot]));
val3 = pgm_read_byte(&(hTr[line - 1][dot]));
val4 = pgm_read_byte(&(amst[line - 1][dot]));
val5 = pgm_read_byte(&(op[line - 1][dot]));
break;
case 6:
val1 = pgm_read_byte(&(Edin[line - 1][dot]));
val2 = pgm_read_byte(&(burg[line - 1][dot]));
val3 = pgm_read_byte(&(hLi[line - 1][dot]));
val4 = pgm_read_byte(&(ghth[line - 1][dot]));
val5 = pgm_read_byte(&(ouse[line - 1][dot]));
break;
case 7:
val1 = pgm_read_byte(&(Bamb[line - 1][dot]));
val2 = pgm_read_byte(&(urgh[line - 1][dot]));
val3 = pgm_read_byte(&(Cit[line - 1][dot]));
val4 = pgm_read_byte(&(y[line - 1][dot]));
val5 = pgm_read_byte(&(blank[line - 1][dot]));
break;
case 8:
val1 = pgm_read_byte(&(Bamb[line - 1][dot]));
val2 = pgm_read_byte(&(urgh[line - 1][dot]));
val3 = pgm_read_byte(&(Ter[line - 1][dot]));
val4 = pgm_read_byte(&(minu[line - 1][dot]));
val5 = pgm_read_byte(&(s[line - 1][dot]));
break;
case 9:
val1 = pgm_read_byte(&(Arri[line - 1][dot]));
val2 = pgm_read_byte(&(vaH[line - 1][dot]));
val3 = pgm_read_byte(&(oriz[line - 1][dot]));
val4 = pgm_read_byte(&(on[line - 1][dot]));
val5 = pgm_read_byte(&(blank[line - 1][dot]));
break;
}
if(bod - dot < 0.4 && ready == 1) {
digitalWrite(5, val1);
digitalWrite(6, val2);
digitalWrite(7, val3);
digitalWrite(8, val4);
digitalWrite(9, val5);
}
if(bod - dot > 0.4 || ready == 0) {
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
}
}