/******************************************************************************* * * Projeto 62: Comunicação serial com display 7 segmentos - Arduino * http://squids.com.br/arduino * *******************************************************************************/ // Define as variáveis e constantes String lnumber; // constrói uma instacia da classe String char caractere; byte ini = 1; byte verificador = 0; byte number = 0; // número a ser mostrado no display // Variaveis liga e desliga p/ display 7 segmentos const int l = 1, d = 0; // Display 7 segmentos (catodo comum) //const int l = 0, d = 1; // Display 7 segmentos (anodo comum) byte displaySeteSeg[10][7] = { { l,l,l,l,l,l,d }, //DIGITO 0 { d,l,l,d,d,d,d }, //DIGITO 1 { l,l,d,l,l,d,l }, //DIGITO 2 { l,l,l,l,d,d,l }, //DIGITO 3 { d,l,l,d,d,l,l }, //DIGITO 4 { l,d,l,l,d,l,l }, //DIGITO 5 { l,d,l,l,l,l,l }, //DIGITO 6 { l,l,l,d,d,d,d }, //DIGITO 7 { l,l,l,l,l,l,l }, //DIGITO 8 { l,l,l,d,d,l,l } //DIGITO 9 }; byte error[7] = {1,d,d,l,1,1,1}; void setup(){ for (int i = 2; i < 10; i++) { pinMode(i, OUTPUT); //conexão pinos dos 7 segmentos + o ponto } Serial.begin(9600);// inicializa a comunicação serial Serial.print("Digite um número de 0 a 9:\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... lnumber = ""; // lê todos caracteres while (Serial.available() > 0) { caractere = Serial.read(); // lê o caractere digitado (char) lnumber += caractere; // cria a string até o enter no teclado ini = 0; } } String firstchar = lnumber.substring(0,1); // pega o primeiro caractere da string number = firstchar.toInt(); //converte string em um número inteiro String ver = String(number); // a variável 'ver' recebe a variável 'number' como string if (firstchar == ver) { // se o primeiro caractere for número // mostra o número no display for (int j = 2; j < 9; j++) { digitalWrite(j, displaySeteSeg[number][j-2]); } // exibe o ponto se a string possuir mais de dois caracteres if (lnumber.length() > 1) { digitalWrite(9, HIGH); // opcional } else { digitalWrite(9, LOW); // opcional } } else if(ini == 0) { // se o primeiro caractere não for número (após início) for (int k = 2;k < 9; k++) { digitalWrite(k, error[k-2]); ver = "E"; } digitalWrite(9, LOW); // opcional } // Mostra no monitor serial displayTexto(ver); // chama a função displayTexto() } void displayTexto(String ver) { // mostra o número no monitor serial if (ini == 0) { // Imprime no monitor serial Serial.print("Você digitou: "); Serial.println(lnumber); // mostra o texto digitado no monitor serial Serial.print("Mostra no display: "); Serial.println(ver); Serial.println("--------------------"); Serial.flush(); //Esvasia o buffer de entrada da porta serial. } ini = 1; }