Menu

Uso do teclado e do monitor serial

Objetivo – ambientar-se com o monitor serial e com o plotter serial e interagir com a placa/ programa por meio de interações no teclado.

(se você quiser um arquivo PDF da sequência a seguir e todos os códigos digitados, clique   aqui  )

 

1. Compile o seguinte programa (se quiser, baixe aqui – está compactado, tem que descompactar para usar):

void setup(){

  Serial.begin(9600);

}

int x = 0;

void loop() {

  Serial.print(“Numero: “);

  Serial.println(x);

  delay(300);

  x++;

}

 

Ligue o Monitor Serial (Ferramentas/ Monitor Serial) e veja o resultado.

 

 

2. Compile o seguinte programa (se quiser, baixe aqui ):

void setup(){

  Serial.begin(9600);

}

int x = 0;

void loop() {

  Serial.print(“Numero: “);

  Serial.println(x);

  Serial.print(” DEC: “);

  Serial.print(x);

  Serial.print(” HEX: “);

  Serial.print(x, HEX);

  Serial.print(” BIN: “);

  Serial.println(x, BIN);

  delay(600);

  x++;

}

Ligue o Monitor Serial (Ferramentas/ Monitor Serial) e veja o resultado. Note que utilizamos um novo elemento (DEC, HEX, BIN) junto à informação de impressão do valor (print), de forma a obtermos, respectivamente, a visualização nos sistemas Decimal, Hexadecimal e Binário (também foi usado o ‘print’, ao invés de ‘println’, no qual o segundo comando acrescenta uma quebra de linha – ‘ln (que vem do Inglês line)’ – após a impressão).

 

 

3. Compile o seguinte programa (se quiser, baixe aqui ):

long aleatorio;

void setup() {

  Serial.begin(9600);

}

void loop() {

  Serial.print(“\nEntre 0 e 99:”);

  aleatorio = random(100);

  Serial.println(aleatorio);

  Serial.print(“\nEntre 5 e 14: “);

  aleatorio = random(5, 15);

  Serial.println(aleatorio);

  delay(1000);

}

Ligue o Monitor Serial (Ferramentas/ Monitor Serial) e veja o resultado. O comando ‘\n’ inserido dentro da instrução print faz como que seja pulada uma linha (‘\n = new line’). A impressão será algo como: Entre 0 e 99:7; Entre 5 e 14: 14; Entre 0 e 99:73 ; …

Se você compilar o programa novamente e executá-lo novamente os valores sorteados deverão ser os mesmos. Isto porque o gerador de números aleatórios não foi inicializado. Uma forma de inicializá-lo é por meio do uso da função ramdomSeed()1 (semente aleatória).

Veja aqui:

long aleatorio;

void setup() {

Serial.begin(9600);

// inicializa o gerador de números aleatórios.

// um pino analógico desconectado irá retornar um

// valor aleatório de tensão em analogRead()

  randomSeed(analogRead(0));

}

void loop() {

  Serial.print(“\nEntre 0 e 99:”);

  aleatorio = random(100);

  Serial.println(aleatorio);

  Serial.print(“\nEntre 5 e 14: “);

  aleatorio = random(5, 15);

  Serial.println(aleatorio);

  delay(1000);

}

Ligue o Monitor Serial (Ferramentas/ Monitor Serial) e veja o resultado. Se você compilar o programa novamente e executá-lo novamente os valores sorteados deverão ser diferentes a cada momento. Compare a execução do programa usando / não usando o comando randomSeed().

Na sequência, veremos o uso do plotter, que é outro programa monitor da interface serial, mas capaz de gerar interfaces gráficas.

 

 

4. Compile o seguinte programa (se quiser, baixe aqui ):

long aleatorio;

void setup() {

  Serial.begin(9600);

  randomSeed(analogRead(0));

}

void loop() {

  aleatorio = random(50);

  Serial.println(aleatorio);

}

Ligue o Monitor Serial (Ferramentas/ Monitor Serial) e veja o resultado. Depois, feche a tela do monitor serial. Ligue o Plotter Serial (Ferramentas/ Plotter Serial) e veja o resultado.

Vamos criar mais uma variável de exibição.

Compile o seguinte programa (se quiser, baixe aqui ):

long aleatorio1, aleatorio2;

void setup() {

  Serial.begin(9600);

  randomSeed(analogRead(0));

}

void loop() {

  aleatorio1 = random(50);

  Serial.println(aleatorio1);

  aleatorio2 = random(50);

  Serial.println(aleatorio2);

}

Ligue o Plotter Serial. Viu alguma diferença? Não são duas variáveis? O plotter simplesmente continuou a mostrar os valores continuamente.

Agora, teste assim: compile o programa que segue (se quiser, baixe aqui ).

long aleatorio1, aleatorio2;

void setup() {

  Serial.begin(9600);

  randomSeed(analogRead(0));

}

void loop() {

  aleatorio1 = random(50);

  Serial.print(aleatorio1);

  Serial.print(“,”);

  aleatorio2 = random(50);

  Serial.print(aleatorio2);

  Serial.print(“\n”);

}

Ligue o plotter serial e veja a diferença.

O uso do separador (‘,’) entre os valores passados ao comando print (e não é o println), faz com que o plotter interprete a mudança de variável. Para uma nova série de valores, usamos o terminador de nova linha (‘\n’) – poderia ter sido utilizado Serial.prinln(aleatorio2) ao invés de primeiro mostrar o valor e depois pular uma linha, o resultado seria a mesma interpretação por parte do plotter serial.

Mas a legenda ficou confusa, não é mesmo? Vamos acertá-la? Compile o programa que segue (se quiser, baixe aqui ):

long aleatorio1, aleatorio2;

void setup() {

  Serial.begin(9600);

  randomSeed(analogRead(0));

}

void loop() {

  aleatorio1 = random(50);

  Serial.print(“Aleatorio1: “);

  Serial.print(aleatorio1);

  Serial.print(“,”);

  Serial.print(“Aleatorio2: “);

  aleatorio2 = random(50);

  Serial.print(aleatorio2);

  Serial.print(“\n”);

}

Ligue o plotter serial. Agora a legenda deverá estar ok.

Lembre-se ! Veja a documentação de referência da linguagem em:  https://www.arduino.cc/reference/pt/

1https://www.arduino.cc/reference/pt/language/functions/random-numbers/randomseed/

Universidade Federal do Paraná
TI Aplicada – pesquisa e extensão

Av Pref Lothário Meissner, 632
80210-170 | Curitiba |
simao@ufpr.br
(41) 3360-4420
Universidade Federal do Paraná
TI Aplicada – pesquisa e extensão

Av Pref Lothário Meissner, 632
80210-170 | Curitiba |
simao@ufpr.br
(41) 3360-4420

UFPR nas Redes Sociais


UFPR nas Redes Sociais