Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <avr/pgmspace.h>
- const String characters1 = "il.:!'|";
- const String characters2 = "[] ";
- const String characters3 = "Ifj-()º";
- const String characters4 = "abcdeghknopqrstuxy1234567890_=";
- const String characters5 = "ABCDEFGHJKLMNOPQRSTUVWXYZmvwz+&?#€$";
- const String characters7 = "@%/\\";
- const char i[] PROGMEM = "0101111";
- const char l[] PROGMEM = "1111111";
- const char sc07[] PROGMEM = "0000001"; // .
- const char sc08[] PROGMEM = "0010100"; // :
- const char sc13[] PROGMEM = "1111101"; // !
- const char sc20[] PROGMEM = "1100000"; // '
- const char sc24[] PROGMEM = "1111111"; // |
- const char sc05[] PROGMEM = "11111111000001"; // [
- const char sc06[] PROGMEM = "10000011111111"; // ]
- const char sc00[] PROGMEM = "00000000000000"; // space
- const char I[] PROGMEM = "100000111111111000001";
- const char f[] PROGMEM = "001111101001000100000";
- const char j[] PROGMEM = "000000100000010101110";
- const char sc01[] PROGMEM = "000100000010000001000"; // -
- const char sc03[] PROGMEM = "001110001000101000001"; // (
- const char sc04[] PROGMEM = "100000101000100011100"; // )
- const char sc19[] PROGMEM = "110000000000001100000"; // "
- const char sc21[] PROGMEM = "010000010100000100000"; // º
- const char a[] PROGMEM = "0000011001010100101010011111";
- const char b[] PROGMEM = "1111111001000100100010001110";
- const char c[] PROGMEM = "0001110001000100100010010001";
- const char d[] PROGMEM = "0001110001000100100011111111";
- const char e[] PROGMEM = "0001110001010100101010001101";
- const char g[] PROGMEM = "0001001001010100101010011110";
- const char h[] PROGMEM = "0111111000100000010000000111";
- const char k[] PROGMEM = "0111111000010000010100000001";
- const char n[] PROGMEM = "0001111001000000100000001111";
- const char o[] PROGMEM = "0001110001000100100010001110";
- const char p[] PROGMEM = "0011111001010000101000001000";
- const char q[] PROGMEM = "0001000001010000101000011111";
- const char r[] PROGMEM = "0011111000100000100000010000";
- const char s[] PROGMEM = "0001001001010100101010010010";
- const char t[] PROGMEM = "0010000011111000100010000001";
- const char u[] PROGMEM = "0011110000000100000010011110";
- const char x[] PROGMEM = "0011011000010000001000011011";
- const char y[] PROGMEM = "0011001000010100001010011110";
- const char _1[] PROGMEM = "0010000010000111111110000001";
- const char _2[] PROGMEM = "0110011100010110010010110001";
- const char _3[] PROGMEM = "0100010100000110010010110110";
- const char _4[] PROGMEM = "1111100000010000011110000100";
- const char _5[] PROGMEM = "1110010101000110100011001110";
- const char _6[] PROGMEM = "0111110100100110010010100110";
- const char _7[] PROGMEM = "1000000100111110100001100000";
- const char _8[] PROGMEM = "0110110100100110010010110110";
- const char _9[] PROGMEM = "0110010100100110010010111110";
- const char _0[] PROGMEM = "0111110100000110000010111110";
- const char sc02[] PROGMEM = "0000001000000100000010000001"; // _
- const char sc09[] PROGMEM = "0010100001010000101000010100"; //[] PROGMEM =
- const char A[] PROGMEM = "01111111001000100100010010000111111";
- const char B[] PROGMEM = "11111111001001100100110010010110110";
- const char C[] PROGMEM = "01111101000001100000110000010100010";
- const char D[] PROGMEM = "11111111000001100000110000010111110";
- const char E[] PROGMEM = "11111111001001100100110000011000001";
- const char F[] PROGMEM = "11111111001000100100010000001000000";
- const char G[] PROGMEM = "01111101000001100000110001010100110";
- const char H[] PROGMEM = "11111110001000000100000010001111111";
- const char J[] PROGMEM = "00001100000001000000100000011111110";
- const char K[] PROGMEM = "11111110001000001010001000101000001";
- const char L[] PROGMEM = "11111110000001000000100000010000001";
- const char M[] PROGMEM = "11111110100000001100001000001111111";
- const char N[] PROGMEM = "11111110010000000100000001001111111";
- const char O[] PROGMEM = "01111101000001100000110000010111110";
- const char P[] PROGMEM = "11111111001000100100010010000110000";
- const char Q[] PROGMEM = "01111101000001100010110000110111110";
- const char R[] PROGMEM = "11111111001000100110010010100110001";
- const char S[] PROGMEM = "01100101001001100100110010010100110";
- const char T[] PROGMEM = "10000001000000111111110000001000000";
- const char U[] PROGMEM = "11111100000001000000100000011111110";
- const char V[] PROGMEM = "11110000000110000000100001101111000";
- const char W[] PROGMEM = "11111000000011000110000000111111100";
- const char X[] PROGMEM = "11000110010100000100000101001100011";
- const char Y[] PROGMEM = "11000000010000000111100100001100000";
- const char Z[] PROGMEM = "10000111000101100100110100011100001";
- const char m[] PROGMEM = "00011110010000000111100100000001111";
- const char v[] PROGMEM = "00110000000110000000100001100011000";
- const char w[] PROGMEM = "00111100000001001111000000010011110";
- const char z[] PROGMEM = "00100010010011001010100110010010001";
- const char sc10[] PROGMEM = "00010000001000011111000010000001000"; // +
- const char sc11[] PROGMEM = "01101101001001011010100000100000101"; // &
- const char sc12[] PROGMEM = "01000001000000100110110010000110000"; // ?
- const char sc18[] PROGMEM = "00010100011111000101000111110001010"; // #
- const char sc22[] PROGMEM = "00101000111110101010110101011000001"; // €
- const char sc23[] PROGMEM = "00100100101010111111101010100100100"; // $
- const char sc14[] PROGMEM = "0100001101001001001000001000001001001001011000010"; // %
- const char sc15[] PROGMEM = "0000001000001000001000001000001000001000001000000"; // /
- const char sc16[] PROGMEM = "1000000010000000100000001000000010000000100000001"; // backslash
- const char sc17[] PROGMEM = "0011100010001010010011010101101110110001010111101"; // @
- const char* const charSet1[] PROGMEM = {i, l, sc07, sc08, sc13, sc20, sc24};
- const char* const charSet2[] PROGMEM = {sc05, sc06, sc00};
- const char* const charSet3[] PROGMEM = {I, f, j, sc01, sc03, sc04, sc19, sc21};
- const char* const charSet4[] PROGMEM = {a, b, c, d, e, g, h, k, n, o, p, q, r, s, t, u, x, y, _1, _2, _3, _4, _5, _6, _7, _8, _9, _0, sc02, sc09};
- const char* const charSet5[] PROGMEM = {A, B, C, D, E, F, G, H, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, m, v, w, z, sc10, sc11, sc12, sc18, sc22, sc23};
- const char* const charSet7[] PROGMEM = {sc17, sc14, sc15, sc16};
- char msg[] = " L ______ ";
- // Triggers
- const unsigned int triggers[7] = {
- 9, 8, 7, 6, 5, 4, 3
- };
- // Commands
- const unsigned int startCommandPin = 2;
- // DEBUG
- boolean debug = false; // -> false
- // COMMANDS DEFAULT VALUES
- boolean startON = false;
- //DRAWING INFO
- int pointer = 0;
- boolean active = false; // -> false
- const unsigned int triggerDelay = 250;
- char buffer[60];
- void setup() {
- if (debug) Serial.begin(9600);
- // Triggers
- for (int i = 0; i < sizeof(triggers) / sizeof(int); i++) {
- pinMode(triggers[i], OUTPUT);
- }
- // Command buttons
- pinMode(startCommandPin, INPUT_PULLUP);
- }
- void trigger(char t[]) {
- for (int i = 7; i >= 0; i--) {
- if (debug) Serial.print(t[i] == '1' ? "X " : " ");
- digitalWrite(triggers[i], t[i] == '1');
- readStartButton(); // Stop ASAP
- if(!active) {
- return;
- }
- }
- if (debug) Serial.println();
- }
- void loop() {
- readStartButton();
- if (active) {
- printCharacter(msg[pointer]);
- pointer += 1;
- if (pointer == sizeof(msg) -1) {
- if (debug) Serial.println("FINISHED");
- off();
- pointer = 0;
- active = false;
- }
- }
- }
- void readStartButton() {
- startON = !digitalRead(startCommandPin);
- if (startON) {
- if (debug) Serial.println("Start button ON");
- if (active) { // STOP
- if (debug) Serial.println("STOPPING");
- active = false;
- off();
- delay(triggerDelay);
- }
- else { // START
- if (debug) Serial.println("STARTING");
- active = true;
- pointer = 0;
- delay(triggerDelay);
- }
- }
- }
- void off() {
- for (int i = 0; i < sizeof(triggers) / sizeof(int); i++) {
- digitalWrite(triggers[i], LOW);
- }
- }
- void printCharacter(char c) {
- char t[7];
- if (characters1.indexOf(c) > -1) {
- int index = (characters1).indexOf(c);
- strcpy_P(buffer, (char*)pgm_read_word(&(charSet1[index])));
- for (int x = 0; x < 7; x++) {
- t[x] = (buffer[x]);
- }
- trigger(t);
- delay(triggerDelay);
- }
- else if (characters2.indexOf(c) > -1) {
- int index = (characters2).indexOf(c);
- strcpy_P(buffer, (char*)pgm_read_word(&(charSet2[index])));
- for (int i = 0; i < 2; i++) {
- for (int x = 0; x < 7; x++) {
- t[x] = (buffer[i * 7 + x]);
- }
- trigger(t);
- delay(triggerDelay);
- }
- }
- else if (characters3.indexOf(c) > -1) {
- int index = (characters3).indexOf(c);
- strcpy_P(buffer, (char*)pgm_read_word(&(charSet3[index])));
- for (int i = 0; i < 3; i++) {
- for (int x = 0; x < 7; x++) {
- t[x] = (buffer[i * 7 + x]);
- }
- trigger(t);
- delay(triggerDelay);
- }
- }
- else if (characters4.indexOf(c) > -1) {
- int index = (characters4).indexOf(c);
- strcpy_P(buffer, (char*)pgm_read_word(&(charSet4[index])));
- for (int i = 0; i < 4; i++) {
- for (int x = 0; x < 7; x++) {
- t[x] = (buffer[i * 7 + x]);
- }
- trigger(t);
- delay(triggerDelay);
- }
- }
- else if (characters5.indexOf(c) > -1) {
- int index = (characters5).indexOf(c);
- strcpy_P(buffer, (char*)pgm_read_word(&(charSet5[index])));
- // Serial.println(buffer);
- for (int i = 0; i < 5; i++) {
- for (int x = 0; x < 7; x++) {
- t[x] = (buffer[i * 7 + x]);
- }
- trigger(t);
- delay(triggerDelay);
- }
- }
- else if (characters7.indexOf(c) > -1) {
- int index = (characters7).indexOf(c);
- strcpy_P(buffer, (char*)pgm_read_word(&(charSet7[index])));
- for (int i = 0; i < 7; i++) {
- for (int x = 0; x < 7; x++) {
- t[x] = (buffer[i * 7 + x]);
- }
- trigger(t);
- delay(triggerDelay);
- }
- }
- Serial.println(sizeof(buffer));
- off(); // Off between 2 letters
- delay(triggerDelay * 2); //
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement