Tabla de contenidos

                         1. El operador lógico AND
                         2. El operador lógico OR
                         3. El operador lógico NOT

Los operadores lógicos son otro elemento de control sobre el flujo del programa. También conocidos como operadores booleanos, pueden ser muy poderosos cuando se usan dentro de la condición de una sentencia if o un bucle while. En este artículo discutiremos los tres operadores lógicos más comunes – AND, OR y NOT.

También veremos cómo usar operadores lógicos en sentencias condicionales para probar múltiples variables para una condición al mismo tiempo. Finalmente veremos un ejemplo práctico que utiliza un operador lógico para hacer oscilar el estado de un pin digital en el Arduino.

El operador lógico AND

El operador lógico AND evalúa dos variables y devuelve un valor verdadero sólo cuando ambas
variables son verdaderas. Se escribe con dos ampersands (&&).

La forma más fácil de visualizar las operaciones lógicas es con una tabla de verdad. Esta tabla de verdad muestra cómo funciona el operador AND:

Digamos que tenemos dos variables, x e y. Si x es verdadera e y es falsa, el resultado del operador AND es falso. Del mismo modo, si x es falsa e y es verdadera, el resultado es falso. Y si tanto x como y son falsos, el resultado es falso.

Sólo cuando x e y son verdaderos, el resultado de AND se convierte en verdadero. ¿Cómo podemos utilizar esto? Digamos que queremos hacer una sentencia if que sólo se ejecute cuando dos variables sean menores que cinco. Utilizaríamos el operador AND en la condición de una sentencia if como ésta:

 if(x<5 && y<5) {

}

La condición sólo será verdadera cuando x sea menor que cinco e y sea menor que cinco. Puede tener tantos operadores AND en una condición como desee. El uso de múltiples operadores AND en una sentencia condicional le permite probar muchas variables al mismo tiempo. La sentencia condicional sólo se ejecutará cuando todas ellas sean verdaderas.

El operador lógico OR

 El operador OR se escribe con dos barras verticales (||).

Con el operador OR, si alguna de las variables es verdadera, el resultado será verdadero. Esta es una tabla de verdad para el operador OR:

Si x es verdadera e y es falsa, el resultado será verdadero. Si x es falso e y es verdadero, el resultado seguirá siendo verdadero. Si tanto x como y son verdaderos, el resultado también será verdadero. Sólo si x e y son falsos, el resultado será falso.

Basta con que una de las variables sea verdadera para que el resultado sea verdadero. Por ejemplo, utilizando el operador OR en la condición de una sentencia if como ésta:

 if(x<5 || y<5) {

}

La condición será verdadera si x es menor que cinco, o y es menor que cinco. Así que si cualquier variable es menor que cinco, la condición será verdadera y se ejecutará el código en el cuerpo de la sentencia if. Puede tener tantos operadores OR como desee en una sentencia condicional, permitiendo que se comprueben múltiples variables al mismo tiempo.

 El operador NOT se escribe con un signo de exclamación (!).

 El operador NOT hace que una afirmación verdadera sea falsa y que una falsa sea verdadera:

 !true = false

!false = true

El operador NOT puede utilizarse para excluir un número o una variable en una condición. Por ejemplo, si necesita que una sentencia if se ejecute en todos los valores de x excepto el número cinco, podría escribir la condición así:

 if(x != 5) {

}

El operador NOT se puede utilizar en otros lugares también, por ejemplo para cambiar el estado de tensión de un pin digital. Echa un vistazo al código estándar de Arduino para cambiar el estado de tensión de un pin digital (pin 13) a alto y bajo:

digitalWrite(13, HIGH);
delay(1000); 
digitalWrite(13, LOW); 
delay(1000);

Con un operador NOT, este código puede reducirse a sólo dos líneas:

digitalWrite(13, !digitalRead(13));
delay(1000);

Aquí usamos digitalRead(13) con un operador NOT delante. Con este código, el Arduino leerá
primero el estado de voltaje del pin 13. Si el pin 13 es alto, digitalRead(13) devolverá un valor alto. El operador NOT hace que el valor alto sea bajo, por lo que la función digitalWrite() cambiará el pin 13 a un estado de bajo voltaje.

La próxima vez que pase por el bucle, la función digitalRead() medirá un valor bajo en el pin 13.

Pero el operador NOT hace que el argumento de la función digitalWrite() sea alto. Así que el pin 13 se pone en un estado de alto voltaje.

Esto hace que el pin 13 alterne entre estados de alta y baja tensión. Puedes probarlo conectando un LED al pin 13. El LED debería parpadear una vez por segundo.

Scott Campbell. Using logical operators in Arduino programming. Circuit Basics. https://www.circuitbasics.com/using-logical-operators-in-arduino-programming/