Olá amigos, depois de algum tempo sem participar deste fórum, estou precisando da ajuda de vocês.
Estou trabalhando em um projeto para a feira de ciências da minha escola e este visa a construção de um protótipo de estacionamento automatizado.
O projeto ainda está em faze de teste, estou implementando o código no arduino aos poucos, procurando entender bem cada parte do mesmo.
Venho hoje pedir ajuda na questão de conversão de unidades.
Vou tentar relatar mais ou menos como é o programa de teste. Pois bem, o mesmo consiste no seguinte:
o programa deve imprimir na janela do Serial Monitor uma frase de boas vindas, em seguida imprimir o menu de opções, sendo '1' para guardar o carro e '2' para retirar o carro. o programa deve esperar que o usuário digite a opção via teclado do PC, então usa o comando Switch Case pra verificar a opção escolhida. Caso a opção escolhida seja '1', o programa executará a função guardarCarro() e irá gerar uma senha para que, quando o usuário for retirar o carro, o programa possa identificar qual carro está relacionado com aquela senha, evitando de retirar o carro errado. Ao escolher a opção '2', o programa executará a função retirarCarro(), onde será pedido para que o usuário entre com a senha gerada no ato de guardar o carro. se a senha confere com a gerada anteriormente, o programa conclui a retirada do carro, caso contrário, o programa pede que o usuário entre com a senha correta. Pois bem, como eu estou testando o código por partes, no momento, o que me interessa é poder ler uma senha via Serial Monitor e comparar essa senha com uma gerada aleatoriamente. Eu até consegui fazer essa comparação quando eu estipulo uma senha e peço a verificação, mas eu não sei como gerar senhas do tipo char com a função random(), na verdade, eu nem sei se isso é possível. Caso não seja possível, é preciso converter as variáveis para um único tipo a fim de poderem ser comparadas. Eu consigo gerar a senha com o tipo inteiro, mas não consigo transformar os caracteres lidos pelo Serial.read() em inteiros. Outro problema encontrado é que, quando eu coloco pra rodar o programa no arduino, na janela do Serial Monitor fica imprimindo indefinidamente um monte de coisas, ou seja, o programa não tá parando para que se possa entrar com as opções, e eu não faço ideia de como se faz isso no arduino, se fosse um programa desenvolvido em uma linguagem que permitisse a inclusão de frams, botões, etc. seria facinho fazer isso, mas com o arduino, eu não sei como se faz.
Se alguém poder me ajudar, eu ficarei muito grado.
Segue abaixo o códio do programa:
int senha[6];
char comp[6];
char opcao;
void setup(){
Serial.begin(9600);
Serial.flush();
randomSeed(analogRead(0));
}
void loop(){
telaInicial();
if (Serial.available() > 0){
opcao = Serial.read();
switch (opcao) {
case '1':
guardarCarro();
break;
case '2':
retirarCarro();
break;
default:
Serial.println("Opção inválida!");
Serial.println();
Serial.println();
}
}
}
void telaInicial(){
Serial.println("Seja bem vindo!");
Serial.println();
Serial.println();
Serial.println("Escolha uma opcao");
Serial.println();
Serial.println("1 - Guardar o carro...");
Serial.println("2 - Retirar o carro...");
Serial.println();
Serial.println();
}
void guardarCarro(){
Serial.println("Aguarde enquanto guardamos o seu carro!");
Serial.println();
delay(5000);
Serial.println("Seu carro está seguro...");
Serial.println();
Serial.print("Sua senha é: ");
for (int i = 0; i < 6; i++){
senha = random(10);
Serial.print(senha);
}
Serial.println();
Serial.println();
delay(2000);
}
void retirarCarro(){
for (int i = 0; i < 6; i++){
comp = Serial.read();
}
if ((comp[0] == senha[0]) && (comp[1] == senha[1]) && (comp[2] == senha[2]) &&
(comp[3] == senha[3]) && (comp[4] == senha[4]) && (comp[5] == senha[5])){
Serial.println("A senha está correta!");
Serial.println();
Serial.println("Aguarde enquanto trazemos o seu carro!");
Serial.println();
delay(5000);
Serial.println("Agora é possível retirar o seu carro!");
Serial.println();
Serial.println();
delay(2000);
for (int i = 0; i < 6; i++){
senha = 0;
comp = 0;
}
}
}