/******************************************************************************* * * Projeto 46 - Mostra texto no display LCD digitado no computador com contador * de caracteres * http://squids.com.br/arduino * *******************************************************************************/ #include //Carrega a biblioteca LiquidCrystal nativa na IDE //Define os pinos que serão utilizados para ligação ao display LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Instancia a classe String String linha1; String linha2 = "Squids Arduino"; // Define as variáveis e constantes char texto; int ini = 1; int tamanho_anterior; //Configuracoes LCD 16x2 int screenWidth = 16; int screenHeight = 2; // Define as variáveis para o scroll int stringStart, stringStop = 0; int scrollCursor = screenWidth; int tamanho =0; void setup() { lcd.begin(screenWidth, screenHeight); // Define o display com 16 colunas e 2 linhas lcd.clear(); // limpa a tela do display lcd.setCursor(1, 1); lcd.print(linha2); Serial.begin(9600);// inicializa a comunicação serial Serial.print("Digite um texto:\n"); Serial.println("--------------------"); } void loop() { // quando caracteres são digitados no monitor serial if (Serial.available()) { delay(100); // espere um pouco para que toda a mensagem chegue... lcd.clear(); // limpa a tela linha1 = ""; lcd.setCursor(1, 1); lcd.print(linha2); // lê todos caracteres while (Serial.available() > 0) { texto = Serial.read(); // coloca todos caracteres na variável texto linha1 += texto; ini = 0; } } displayTexto(); displayLCD(); //limpa a String e o buffer Serial.flush(); } void displayTexto() { if (ini == 0) { // Imprime no monitor serial Serial.println(linha1); // mostra o texto no monitor serial Serial.print("n. carcateres = "); Serial.println(linha1.length()); Serial.println("--------------------"); } ini = 1; } void displayLCD() { // Colca texto no display if (linha1.length() >16) { // chama a função scroll se maior que 16 // Para o scroll lcd.setCursor(scrollCursor, 0); lcd.print(linha1.substring(stringStart,stringStop)); lcd.setCursor(1, 1); lcd.print(linha2); delay(250); scroll(); tamanho = linha1.length()+1; if (stringStart == tamanho) { stringStart = 0; stringStop = 0; } } else { lcd.setCursor(0, 0); lcd.print(linha1); // mostra palavra no display } } void scroll() { lcd.clear(); if(stringStart == 0 && scrollCursor > 0) { scrollCursor--; stringStop++; } else if (stringStart == stringStop){ stringStart = stringStop = 0; scrollCursor = screenWidth; } else if (stringStop == (linha1.length()) && scrollCursor == 0) { stringStart++; } else { stringStart++; stringStop++; } }