Boa tarde a todos.
Sou novo com programação e estou tentando usar switch case com if em uma lógica e não estou conseguindo fazer. Será que alguém pode me ajudar com algum exemplo simples? Muito obrigado. Leonardo Egidio.

Exibições: 8672

Responder esta

Respostas a este tópico

Boa tarde,

Muitos podem te ajudar aqui, se você dizer o que precisa, se tiver o código para que todos possam interagir com ele, cole no www.pastebin.com e uma vez feito cole o link aqui, desta forma fica mais fácil ajudar.

Em tempo, veja o link do Arduino, teste exemplos e conheça as referencias, isso sempre ajuda, se não vai copiar e colar apenas, e isso com certeza não é seu objetivo final apenas, creio.

http://www.arduino.cc/en/Reference/SwitchCase

http://www.arduino.cc/en/Tutorial/SwitchCase

http://www.arduino.cc/en/Tutorial/SwitchCase2

Bos sorte.

Abs.

Bom dia, segue a lógica que mencionei....obrigado...

int ch1 = 1; // chave 1
int ch2 = 2; // chave 2
int led1 = 3; // led 1
int led2 = 4; // led 2
int led13 = 13;// led 13 placa
byte comando = 0;//tipo de comando dos leds

void setup()
{
pinMode(ch1, INPUT);
pinMode(ch2, INPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led13, OUTPUT);
}

void loop()
{
int leitura1 = digitalRead(ch1);
int leitura2 = digitalRead(ch2);


if (leitura1 == LOW && leitura2 == LOW) // 00
{
comando == 0;
}
else if (leitura1 == LOW && leitura2 == HIGH) // 01
{
comando == 1;
}
else if (leitura1 == HIGH && leitura2 == LOW) // 10
{
comando == 2;
}
else if (leitura1 == HIGH && leitura2 == HIGH) // 11
{
comando == 3;
}

switch (comando)
{
comando == 0;//comando=0
delay(1000);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led13, HIGH);
break;

comando == 1;//comando=1
delay(1000);
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
digitalWrite(led13, LOW);
break;

comando == 2;//comando=2
delay(1000);
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
digitalWrite(led13, LOW);
break;

comando == 3;//comando=3
delay(1000);
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led13, LOW);
break;

}
}

amigo, sua sintaxe está errada. Consulte a referência citada pelo Carlos pra saber como se escreve corretamente os códigos:

http://www.arduino.cc/en/Reference/SwitchCase

Vá a esse link e siga o padrão de sintaxe informada. Não é difícil não, basta prestar atenção.

Bom dia Hugo

Como ainda estou com muita dúvida em programação. Antes de postar aqui, eu li bastante a respeito, inclusive no link que vc mencionou, porém não consegui colocar as duas funções juntas pois neste site a explicação está muito genérica.

Obrigado e um grande abraço.

a explicação ali no link não tem como ser mais clara que aquilo.

Pegue seu trecho onde vc usa o switch case e confronte com o trecho explicado pelo site.

Vc não seguiu o padrão de sintaxe que o site ensinou!

Procure no seu código: cadê a instrução "case" que o site fala pra usar?

Ali em verde, onde eu falei pra corrigir, vc usou igual igual (==). Mude para apenas um igual. Vc deve usar igual igual quando sua intenção é de comparação. Já quando sua intenção é de "definição", use apenas um igual

Já no trecho em vermelho, acrescente a palavra "case", conforme instruções do link que o Carlos te passou.

Bom dia Leonardo,

Embora até o próprio imhugo desconheça, sempre admirei a forma de colaboração dele aqui neste fórum onde existe uma qualidade alta tecnicamente, bem como uma qualidade humana muito rica em sentido de colaboração. Note que o imhugo sempre aconselha fazer testes usando serial monitor para aprender, e não é por acaso que os exemplos no site do Arduino tem sempre esta prerrogativa na maioria dos exemplos, uma maneira muito útil de aprender. 

Note que o imhugo esta lhe ensinando o caminho das pedras, assim como eu trato de fazer sempre, já que a ideia é aprender/ensinar/aprender, este é o laço.

Agora aqueles que não se esforçam para aprender, nem tem essa intenção, podem pedir para alguém corrigir seu código depois copiar e colar, isso funciona, mas não é nada gratificante creio.

Boa sorte, prossiga até resolver seu problema, , e tenha o prazer de colocar depois na frente do seu tópico a palavra RESOLVIDO, porque serve de base de dados para outros no futuro.

Abs.

Boa tarde

Gostaria imensamente de agradecê-los pela atenção prestada tanto pelo imhugo quanto pelo Carlos kwiek.

Também penso como vocês, que temos que ensinar a "caçar" e não dar a carne mastigada.

Com os conselhos de vocês, fiz o comando abaixo que, ao meu ver, está funcionando.

Quero muito aprender com vcs para que futuramente eu possa também ajudar as pessoas que entrarem com o intuito de aprender..

Parabéns e muito Obrigado.

Abraços

Segue o código:

int ch1 = 1; // chave 1
int ch2 = 2; // chave 2
int led1 = 3; // led 1
int led2 = 4; // led 2
int led13 = 13;// led 13 placa
byte comando = 0;//tipo de comando dos leds

void setup()
{
pinMode(ch1, INPUT);
pinMode(ch2, INPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led13, OUTPUT);
}

void loop()
{
int leitura1 = digitalRead(ch1);
int leitura2 = digitalRead(ch2);


if (leitura1 == LOW && leitura2 == LOW) // 00
{
comando = 0;
}
else if (leitura1 == LOW && leitura2 == HIGH) // 01
{
comando = 1;
}
else if (leitura1 == HIGH && leitura2 == LOW) // 10
{
comando = 2;
}
else if (leitura1 == HIGH && leitura2 == HIGH) // 11
{
comando = 3;
}

switch (comando)
{
case 0://comando=0
delay(1000);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led13, HIGH);
break;

case 1://comando=1
delay(1000);
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
digitalWrite(led13, LOW);
break;

case 2://comando=2
delay(1000);
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
digitalWrite(led13, LOW);
break;

case 3://comando=3
delay(1000);
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led13, LOW);
break;

}
}

Seu projeto simulado, veja se esta certo.

https://www.youtube.com/watch?v=uyZHLUrhFN0&feature=youtu.be

Abs.

É isso mesmo. Testei também no proteus, porém eu uso o arquivo .hex para rodar pois não consegui usar uma aba do proteus para colocar o código. Muito obrigado.

Sim,

deve ser feito assim mesmo com o .hex, eu tenho esta aba porque tenho um modulo pago para Arduino, que possui a IDE integrada, podendo fazer todo processo inclusive compilar e upar para a placa do Arduino.

http://www.labcenter.com/products/vsm/arduino.cfm

Abs.

Se possível, se considera que seu caso esta solucionado, por favor faça um favor a todos, mude o titulo do tópico, colocando na frente do nome atual, a palavra RESOLVIDO, desta forma estaremos contribuindo para futuras pesquisar sobre o mesmo assunto e gerando uma base de pesquisa livre para todos.

Também aprenda a utilizar códigos no www.pastebin.com, e colocar aqui o link, assim todos podem interagir no seu código para ajudar, e seu tópico fica mais "limpo" Veja exemplo;

http://pastebin.com/QTZz63AG

Um abraço!

Interessante, acabei de instalar no iPad o app pastebin. Vou ver como funciona e nos outros exemplos tentarei postar por ele. Muito obrigado.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço