// put your setup code here, to run once:
#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#define CS01 10
#define DIN 11
#define CLK 13
#define CS02 7
#define CS03 5
#define PINA 12
#define PINB 8
#define PINC 9
#define RTN 6 //return
#define SFT 4 //shift
#define BS 3
#define HARDWARE_TYPE MD_MAX72XX::PAROLA_HW
#define MAX_DEVICES 8
MD_Parola P = MD_Parola(HARDWARE_TYPE, CS01, MAX_DEVICES);
MD_Parola Q = MD_Parola(HARDWARE_TYPE, CS02, MAX_DEVICES);
MD_Parola R = MD_Parola(HARDWARE_TYPE, CS03, MAX_DEVICES);
String a = "_";
String c = " ";
String b = ">";
uint8_t n = 0;
uint8_t m = 0;
uint8_t l = 0;
void upperlower() {if(m == 1) c.toUpperCase(); back1(); b = b + c + a; m = 0; delay(100); return(b);}
void back1() {l = b.length(); l = l - 1; b.remove(l); return(b);}
void back2() {l = b.length(); l = l - 2; b.remove(l); return(b);}
void setup() {
P.begin();
Q.begin();
R.begin();
pinMode(PINA, INPUT_PULLUP);
pinMode(PINB , INPUT_PULLUP);
pinMode(PINC, INPUT_PULLUP);
pinMode(RTN, INPUT_PULLUP);
pinMode(SFT, INPUT_PULLUP);
pinMode(BS, INPUT_PULLUP);
}
void loop() {
if (digitalRead(SFT) == LOW) m = 1; //upper case
if (digitalRead(PINA) == LOW) {c = "a"; upperlower();}
if (digitalRead(PINB) == LOW) {c = "b"; upperlower();}
if (digitalRead(PINC) == LOW) {c = "c"; upperlower();}
if (digitalRead(BS) == LOW) {back2(); b = b + a; delay(500);}
if (digitalRead(RTN) == LOW) {n = n + 1; b = ">"; delay(100);}
if (n == 0) P.print(b);
if (n == 1) Q.print(b);
if (n == 2) R.print(b);
if (n == 3) {n = 0; b = ">";}
}