/* Construcción de marquesinas desde cero III
Written in 2004 by raphik
1. Existe la posibilidad de dejar en blanco un espacio inferior al
ancho de la pantalla antes de cada nueva repetición. En mi opinión
es más elegante.
Siendo blankGap el número de píxeles en blanco, el texto siguiente
debe repetirse a una distancia msgLen + blankGap del anterior.
Y cuando el mensaje haya desaparecido, el siguiente estará a una
distancia bankGap del margen izquierdo. Mejor verlo con un ejemplo.
Ver la función concatenarRepeticiones().
*/
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire);
uint32_t crono = millis();
void prepararPantalla(void) {
// preparando la pantalla para su primer uso
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.setTextColor(WHITE, BLACK);
display.setTextSize(1);
display.setCursor(0,0);
display.print(F("Marquesinas III"));
display.display();
}
void concatenarRepeticiones(void) {
static int columna = SCREEN_WIDTH -1;
int blankGap = 25;
display.setTextWrap(false);
char msg[] = "El espacio entre repeticiones es inferior a la anchura de la pantalla.";
int msgLen = 6 * strlen(msg);
display.setTextSize(1);
display.setCursor(columna,10);
display.print(msg);
// la distancia a la siguiente repetición es msgLen + BlankGap
display.setCursor(columna+msgLen+blankGap,10);
display.print(msg);
display.display();
columna--;
// cuando el texto desaparece por la izquierda, el siguiente
// está a una distancia blankGap por detrás
if (columna <= -msgLen) columna = blankGap;
}
void setup() {
prepararPantalla();
}
void loop() {
concatenarRepeticiones();
delay(10);
}