Olá, estou enfrentando problemas com o Serial Monitor, é o seguinte, estou simulando uma tela LCD com um teclado, que eu usarei futuramente, mas no caso, agora só vou usar o Serial Monitor mesmo.

É o seguinte, quero fazer 4 perguntas, e caso 2 das perguntas forem NÃO, ele não libera nada, e caso todas forem SIM, ele ligará um led.

*Ele possui um esquema totalmente inseguro de respostas, mas não levem em consideração.

O código:

#include "stdio.h"

int LedPin = 0;

void setup()
{
Serial.begin(9600);
Serial.flush();
pinMode(LedPin,OUTPUT);
}

int sexo,idade,setor,primeira,resultado;

void loop(){
int tecla;
tecla = Serial.read();
if(tecla == '3')
{
Serial.print("Voce e' deste setor? 1-Sim/ 2-Nao"); //Essa resposta TEM que ser SIM para poder habilitar
Serial.println(setor);
switch(setor){
case '1':
setor==1;
case '2':
setor==10;
}
Serial.print("Voce e' do sexo masc.? 1-Masc/ 2-Fem");//Essa resposta não interfere
Serial.println(sexo);
switch(sexo){
case '1':
sexo==1;
case '2':
sexo==5;
}
Serial.print("Voce e' maior de idade? 1-Sim/ 2-Nao"); //Essa resposta TEM que ser SIM para poder habilitar
Serial.println(idade);
switch(idade){
case '1':
idade==1;
case '2':
idade==10;
}
Serial.print("E' sua primeira vez aqui? 1-Sim/ 2-Nao");// A resposta não interfere
Serial.println(primeira);
switch(primeira){
case '1':
primeira==1;
case '2':
primeira==2;
}

resultado==idade+sexo+setor+primeira;

if(resultado<10){
digitalWrite(LedPin, HIGH);
}
else{
Serial.print("Desculpa, a porta não abrirá");
}
}
}

Problema encontrado: ele simplesmente da print em todas as perguntas de uma vez, e nem permite com que eu responda uma por uma para ele passar o valor ali dos "case" para fazer a soma no final ali no "resultado" e assim ver se libera o LED ou não.

Obrigado pessoal!

Exibições: 341

Responder esta

Respostas a este tópico

Bom, faz o que vc quer.

De uma olhada como ficou

int LedPin = 0;
int InsideMenu = false;
int nrPergunta = 0;
int AvancarPergunta = false;
int sexo,idade,setor,primeira,resultado;

void setup()
{
Serial.begin(9600);
pinMode(LedPin,OUTPUT);
}


void loop(){
char tecla;
if (Serial.available())
{
tecla = Serial.read();
if (!InsideMenu)
{
if (tecla == '3')
{
InsideMenu = true;
nrPergunta = 1;
AvancarPergunta = true;
}
}
if (InsideMenu & (tecla == '1' | tecla == '2'))
{
nrPergunta++;
AvancarPergunta = true;
}
if (AvancarPergunta)
{
AvancarPergunta = false;
switch (nrPergunta) {
case 1:
{
Serial.println("Voce e' deste setor? 1-Sim/ 2-Nao"); //Essa resposta TEM que ser SIM para poder habilitar
break;
}
case 2:
{
if (tecla == '1')
{
setor = 1;
}
else
{
setor = 10;
}
Serial.println("Voce e' do sexo masc.? 1-Masc/ 2-Fem");//Essa resposta não interfere
break;
}
case 3:
{
if (tecla == '1')
{
sexo = 1;
}
else
{
sexo = 5;
}
Serial.println("Voce e' maior de idade? 1-Sim/ 2-Nao"); //Essa resposta TEM que ser SIM para poder habilitar
break;
}
case 4:
{
if (tecla == '1')
{
idade = 1;
}
else
{
idade = 10;
}
Serial.println("E' sua primeira vez aqui? 1-Sim/ 2-Nao");// A resposta não interfere
break;
}
case 5:
{
if (tecla == '1')
{
primeira = 1;
}
else
{
primeira = 2;
}
resultado = (setor + idade + sexo + primeira);
Serial.print("Resultado = ");
Serial.println(resultado);
if (resultado < 10)
{
digitalWrite(LedPin, HIGH);
Serial.println("Acesso Liberado");
}
else
{
Serial.println("Desculpa a porta nao abrirá");
}
}
InsideMenu = false;
}
}
}
}

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço