Tópicos Abordados na Aula - Exercícios 2.12 , 13, 14
Dom Ago 04, 2019 10:46 pm
Os exercícios 2.12, 2.13 e 2.14 usam o teclado da placa de desenvolvimento para gerar umvalor que vai ser usado na estrutura switch/case para tomar decisões sobre qual código será executado e a lógica usada foi a seguinte:
aqui usamos os operadores de deslocamento e lógicos OU para gerar um número que indique qual tecla foi pressionada, a explicação é:
1 - Quando nenhuma tecla é pressionada o comando !digitalRead(tecla) retorna em binário 0b00000000
2 - Quando a tecla for pressionada o comando !digitalRead(tecla) fica em binário 0b00000001
3 - Exemplo pressionando a tecla e usando o operador de deslocamento o resultado fica !digitalRead(tecla)<<5, o resultado é 0b00100000
4 - Por fim é feito a operação OU entre todas as teclas, abaixo um exemplo:
Supondo que aperta a tecla 2
ANTES DE APERTAR:----PRESSIONANDO ANTES DO <<--DEPOIS DO <<
tecla1 = 00000000--------00000000-----------------------------------00000000
tecla2 = 00000000--------00000001-----------------------------------00000010
tecla3 = 00000000--------00000000-----------------------------------00000000
tecla4 = 00000000--------00000000-----------------------------------00000000
result. = 00000000--------00000001-----------------------------------00000010
No switch case o codigo fica:
- Código:
byte teclas; //inicializa a variável
teclas = (!digitalRead(tecla4)<<3)|(!digitalRead(tecla3)<<2)|(!digitalRead(tecla2)<<1)|(!digitalRead(tecla1)); //Desloca o bit testado e realiza operação OU
aqui usamos os operadores de deslocamento e lógicos OU para gerar um número que indique qual tecla foi pressionada, a explicação é:
1 - Quando nenhuma tecla é pressionada o comando !digitalRead(tecla) retorna em binário 0b00000000
2 - Quando a tecla for pressionada o comando !digitalRead(tecla) fica em binário 0b00000001
3 - Exemplo pressionando a tecla e usando o operador de deslocamento o resultado fica !digitalRead(tecla)<<5, o resultado é 0b00100000
4 - Por fim é feito a operação OU entre todas as teclas, abaixo um exemplo:
Supondo que aperta a tecla 2
ANTES DE APERTAR:----PRESSIONANDO ANTES DO <<--DEPOIS DO <<
tecla1 = 00000000--------00000000-----------------------------------00000000
tecla2 = 00000000--------00000001-----------------------------------00000010
tecla3 = 00000000--------00000000-----------------------------------00000000
tecla4 = 00000000--------00000000-----------------------------------00000000
result. = 00000000--------00000001-----------------------------------00000010
No switch case o codigo fica:
- Código:
switch(teclas){ //Inicialização da função com a variavel teclas
case(0b00000100): //Testa se a tecla3 foi pressionada
bloco de instruções;
break; //Fim da função
case(0b00000010): //Testa se a tecla2 foi pressionada
bloco de instruções;
break; //Fim da função
case(0b00000001): //Testa se a tecla1 foi pressionada
bloco de instruções;
break; //Fim da função
case(0b00001000): //Testa se a tecla4 foi pressionada
bloco de instruções;
break; //Fim da função
}
Permissões neste sub-fórum
Não podes responder a tópicos
|
|