Ejercicio 14: Llave nuclear

Para que se enciendan los LEDs hay que presionar los 4 pulsadores a la vez.

Novedades hardwareNovedades software
4 pulsadoresOperador lógico AND con if

Requisitos:

  • 4 LEDs, 4 resistencias de 220 ohmios.
  • 4 pulsadores, 4 resistencias de 1Kohmio.

Planteamiento:¿Recuerdas las películas en las que para lanzar los misiles tenían que girar dos llaves a la vez?. No tenemos llaves, pero tendrás que apretar los 4 pulsadores a un tiempo.

Presentación: Operadores lógicos: AND (&&), OR( || )

En el ejercicio para la ruleta y gana? usábamos dos condicionales anidados para asegurar que se cumplieran dos condiciones a la vez. Ahora vamos a hacerlo de una forma mucho más directa con el operador AND dentro de un solo condicional.

Lo que hacemos es situar en el paréntesis donde va la condición del if varias condiciones unidas por AND.

El símbolo que se usa para el AND es &&. Se tienen que cumplir todas a la vez para que se ejecute el código que va entre llaves.

Variaciones:

  • ¿Qué pasa si en lugar de HIGH escribimos LOW en el condicional?
  • Si además de cambiar HIGH por LOW cambiamos AND(&&) por OR (||),¿qué pasa?

VIDEO DEL EJERCICIO 14

VIDEO DEL EJERCICIO 14 (versión para el montaje del SIMON)

CODIGO FUENTE

 Copyright (C) 2006  Juan Carlos Alonso de Mena
 This program is free software; you can redistribute it and/or modify it under the terms
 of the GNU General Public License as published by the Free Software Foundation;
 See the GNU General Public License for more details?

 int cadenaLeds[]={6,7,8,9};
 int cadenaPuls[]={2,3,4,5};
 int tiempo=200;
 int n=0;
 void setup (){
   for(n=0;n<4;n++){
     pinMode(cadenaLeds[n],OUTPUT);
     pinMode(cadenaPuls[n],INPUT);
    }
 }
 void flash(){
   for(n=0;n<4;n++){
     digitalWrite(cadenaLeds[n],HIGH);
   }
   delay(tiempo);
   for(n=0;n<4;n++){
     digitalWrite(cadenaLeds[n],LOW);
   }
   delay(tiempo);
 }
 void loop(){
   if(digitalRead(2)==HIGH&&digitalRead(3)==HIGH&&digitalRead(4)==HIGH&&digitalRead(5)==HIGH){
     flash();
   }
 }

Volver?

  Copyright (c) 2006  Juan Carlos Alonso de Mena

  Permission is granted to copy, distribute and/or modify this document under the terms of 
 the GNU Free Documentation License, Version 1.2 or any later version published by the
 Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no
 Back-Cover Texts.  A copy of the license is included in the section entitled 
 GNU Free Documentation License?.