miércoles, 26 de enero de 2022
martes, 25 de enero de 2022
Sintaxis if (condition) { //statement(s) } + Bloques “switch”
Parámetros
condición: una expresión booleana, es decir, puede ser true
ofalse
Cosas a tener en cuenta
- Puedes comparar todas las condiciones que necesites, no hay ningún limite.
- No es obligatorio utilizar siempre la sentencia else if ni la sentencia else.
- Una vez se cumple una condición, se ejecutan las intrucciones que hayan
Sintaxis
if (condition1) {
// do Thing A
}
else if (condition2) {
// do Thing B
}
else {
// do Thing C
}
Código de ejemplo
A continuación se muestra un extracto de un código para el sistema de sensor de temperatura
if (temperature >= 70) {
// Danger! Shut down the system.
}
else if (temperature >= 60) { // 60 <= temperature < 70
// Warning! User attention required.
}
else { // temperature < 60
// Safe! Continue usual tasks.
}
Notas y Advertencias
Las declaraciones que se evalúan dentro de los paréntesis requieren el uso de uno
o más operadores que se muestran a continuación.Operadores de comparación:
x == y (x es igual a y)
x != y (x no es igual a y)
x < y (x es menor que y)
x > y (x es mayor que y)
x <= y (x es menor o igual que y)
x >= y (x es mayor o igual que y)
Tenga cuidado con el uso accidental del signo igual único (p. ej if (x = 10)
., ).
El único signo igual es el operador de asignación y se establece x
en 10 (coloca elvalor 10 en la variable x
). En su lugar, utilice el signo igual doble (p. ej if (x == 10)
.),que es el operador de comparación y comprueba si x
es igual a 10 o no. La últimaafirmación solo es verdadera si x
es igual a 10, pero la primera afirmación siempreserá verdadera.Esto se debe a que C evalúa la declaración de la if (x=10)
siguiente manera: 10 se
asigna a x
(recuerde que el único signo igual es el ( operador de asignación )), por
lo que x
ahora contiene 10. Luego, el condicional 'if' evalúa 10, que siempre se
evalúa como TRUE
, ya que cualquier número distinto de cero se evalúa como
VERDADERO. En consecuencia, if (x = 10)
siempre se evaluará como TRUE
, que no es
el resultado deseado cuando se usa una instrucción 'si'. Además, la variable x
se
establecerá en 10, que tampoco es una acción deseada.El Octavo Bit » Lenguaje de programación Arduino. » If…else
Bloques “switch”
Una manera válida de hacer comprobaciones de condiciones múltiples, más elegante
, cómoda y fácil es utilizar el bloque switch. Su sintaxis es la siguiente:switch (expresión) {
case valor1:
//Instrucciones que se ejecutarán cuando “expresión” sea igual a “valor1”
break;
case valor2:
//Instrucciones que se ejecutarán cuando “expresión” sea igual a “valor2”
break;
//Puede haber los “case” que se deseen, y al final una sección “default” (opcional)//
default:
//Instrucciones que se ejecutan si no se ha ejecutado ningún “case” anterior
}
La única limitación que tiene el switch es que solo se pueden evaluar números enteros
, y solo se evalúan las condiciones hasta que una sea cierta.Ejemplo de uso de un switch
int x; //Declara una variable sin un valor inicial
void setup(){
Serial.begin(9600); //inicia la comunicación serial
}
void loop() {
if (Serial.available()>0){ //Consulta si hay datos en buffer de entrada serial
x=Serial.parseInt(); //Lee un numero entero en el buffer serial y lo guarda en x
switch (x) { //consulto el valor de la variable x
case 20:
Serial.println("x vale 20 exactamente"); //Imprime un mensaje si el valor de x es 20
break;
case 50:
Serial.println("x vale 50 exactamente"); //Imprime un mensaje si el valor de x es 50
break;
default:
Serial.println("x no vale ni 20 ni 50");
//Imprime un mensaje si no se cumplen las condiciones anteriores } }}
lunes, 24 de enero de 2022
sábado, 22 de enero de 2022
martes, 11 de enero de 2022
Contador
const int inputPin = 8;
int value = 0;
int anterior = 0;
int contador = 0;
void setup() {
Serial.begin(9600);
pinMode(inputPin, INPUT);
}
void loop(){
anterior = value;
value = digitalRead(inputPin); //lectura digital de pin
//mandar mensaje a puerto serie en función del valor leido
if (value == HIGH) {
Serial.println("Encendido"); Serial.print(contador);}
if (value == LOW && anterior == HIGH) { contador = contador+1;}
if (value == LOW) {
Serial.println("Apagado"); Serial.print(contador);
}
delay(100);
}