// Define a variável do pino do LED
int LED = 23;
int i;
int n;
char c;
// Configuração inicial do Arduino, executada uma vez ao iniciar
void setup() {
// Define o pino do LED como saída
pinMode(LED, OUTPUT);
// Inicializa a comunicação serial com uma taxa de 9600 bits por segundo
Serial.begin(9600);
}
// Loop principal que roda indefinidamente
void loop() {
// Imprime o menu de opções no monitor serial
Serial.print("Digite o numero referente a opcao desejada:\n");
Serial.print("0: para apagar o led:\n");
Serial.print("1: para acender o led;\n");
Serial.print("2: para piscar o led.\n");
// Aguarda até que o usuário digite alguma coisa
while (!Serial.available()) {
delay(50); // Espera por 50 milissegundos
}
// Lê o caractere inserido pelo usuário
c = Serial.read();
// Usa uma estrutura switch para decidir o que fazer com base na entrada do usuário
switch (c) {
case '0':
// Desliga o LED
digitalWrite(LED, LOW);
break;
case '1':
// Liga o LED
digitalWrite(LED, HIGH);
break;
case '2':
// Solicita ao usuário o tempo de piscar o LED
Serial.print("Por quantos segundos o led piscará? (de 1 a 9:\n)");
// Aguarda até que o usuário insira um valor
while (!Serial.available()) {
delay(1000);
}
// Lê o valor digitado e converte de caractere para inteiro
c = Serial.read();
n = c - 48; // Converte o valor ASCII para um número
// Restringe o valor entre 1 e 9
n = constrain(n, 1, 9);
// Chama a função pisca para piscar o LED pelo número de segundos definido
pisca(LED, n);
break;
default:
// Mensagem de erro caso o usuário insira uma entrada inválida
Serial.print("Entrada errada\n");
break;
}
}
// Função para piscar o LED
void pisca(int LED, int t) {
int r = 0;
// Pisca o LED pelo número de vezes especificado (t)
while (r < t) {
digitalWrite(LED, HIGH); // Liga o LED
delay(500); // Espera 500 milissegundos
digitalWrite(LED, LOW); // Desliga o LED
delay(500); // Espera mais 500 milissegundos
r += 1; // Incrementa o contador
}
}