Está en la página 1de 41

Lab 02: Estructuras

de Control

Carlos Vila

Semestre 2017 - I
Variables y Constantes
Proposicin If
Bucle For
Bucle While

Prof. Carlos Vila | Semestre 2017 - I


Sistemas Digitales y Arquitectura de Computadoras

Prof. Carlos Vila | Semestre 2017 - I


Una variable es una manera de nombrar y almacenar un valor
numrico para su uso posterior por el programa.
Una variable debe ser declarada y opcionalmente, asignarle un valor.
El siguiente ejemplo declara una variable llamada variableEntrada y
le asigna el valor obtenido en la entrada analgica del PIN2:

int variableEntrada = 0; // declara una variable y le


//asigna el valor 0
variableEntrada = analogRead(2);// la variable recoge
//el valor analgico
//del PIN2

Prof. Carlos Vila | Semestre 2017 - I


Todas las variables tienen que declararse antes de que puedan ser
utilizadas, asignndoseles un nombre y opcionalmente, un valor inicial.
Para declarar una variable se comienza por definir su tipo como:
Byte
int (entero)
long (largo)
float (coma flotante)
arrays, etc,.

El siguiente ejemplo declara la variable entradaVariable de tipo entero int y


le asigna un valor inicial igual a cero

int entradaVariable = 0;

Prof. Carlos Vila | Semestre 2017 - I


En funcin al lugar de declaracin de la variable se determinara el
mbito de aplicacin o la capacidad de ciertas partes de un programa
para hacer uso de ella.
Una variable global es aquella que puede ser vista y utilizada por
cualquier funcin y estamento de un programa. Esta variable se declara
al comienzo del programa, antes de setup().
Una variable local es aquella que se define dentro de una funcin o
como parte de una condicional o bucle de tipo if for , etc. Slo es
visible y slo puede utilizarse dentro de la funcin en la que se declar.
Por lo tanto, es posible tener dos o ms variables del mismo nombre
en diferentes partes del mismo programa que pueden contener
valores diferentes.

Prof. Carlos Vila | Semestre 2017 - I


int value; // 'value' es visible para cualquier funcin
void setup()
{
// no es necesario configurar
}
void loop()
{
for (int i=0; i<20;) // 'i' solo es visible
{ // dentro del bucle for
i++;
}
float f; // 'f' es visible solo
} // dentro del bucle

Prof. Carlos Vila | Semestre 2017 - I


byte: Almacena un valor numrico de 8 bits sin decimales. Tienen un rango
entre 0 y 255
int: Tipo de datos primario que almacenan valores numricos de 16 bits sin
decimales comprendidos en el rango 32,767 a -32,768.
long: Formato de variable numrica de tipo extendido que se refiere a
nmeros enteros tipo 32 bits sin decimales que se encuentran dentro del
rango -2147483648 a 2147483647.
float: El formato de dato del tipo punto flotante se aplica a los nmeros con
decimales. Estos nmeros tienen una mayor resolucin que los de 32 bits
con un rango comprendido 3.4028235E +38 a +38-3.4028235E.
arrays: Conjunto de valores a los que se accede con un nmero ndice.
Cualquier valor puede ser recogido haciendo uso del nombre de la matriz y
el nmero del ndice, iniciando este en la posicin cero (0).

Prof. Carlos Vila | Semestre 2017 - I


int ledPin = 4; // Salida LED en el PIN 4
byte parpadeo[] = {180, 30, 255, 200, 10, 90, 150, 60}; // array de 8 valores diferentes
void setup()
{
pinMode(ledPin, OUTPUT); //configura la salida PIN 10
}
void loop() // bucle del programa
{
for(int i=0; i<8; i++) // crea un bucle tipo for utilizando la variable i de 0 a 7
{
analogWrite(ledPin, parpadeo[i]); // escribe en la salida PIN 10 el valor al que
// apunta i dentro del array parpadeo[]
delay(200); // espera 200ms
}
}

Prof. Carlos Vila | Semestre 2017 - I


A diferencia de una variable, los valores de la constante no pueden
variar, generando error en caso de intentarlo.
Para la declaracin de constantes numricas o de cadena se puede
usar cualquiera de las 02 palabras reservadas.
#define
const
Para la declaracin de arreglos se debe usar const. En general
const se usa para la definicin de constantes de manera preferente
sobre #define.

Prof. Carlos Vila | Semestre 2017 - I


Estndar para la definicin de constantes (variables de solo lectura)
el cual es preferentemente usado sobre #define.

const float pi = 3.14;


float x;

// ....

x = pi * 2;
// Es bueno usar constantes en operaciones matemticas

pi = 7; //Error de asignacin
// Es ilegal tratar de escribir (modificar) una constante

Prof. Carlos Vila | Semestre 2017 - I


Permite dar un nombre al valor constante antes que el programa sea
compilado.
Las constantes no reservan espacio de memoria en el chip, pues el
compilador reemplaza las referencias a las constantes con el valor
definido en tiempo de compilacin.

#define ledPin 3
// El compilador reemplaza cualquier mencin de ledPin
// con el valor 3 en tiempo de compilacin

Error de sintaxis

#define ledPin 3; // Este es un error


#define ledPin = 3 // Este es un error

Prof. Carlos Vila | Semestre 2017 - I


Sistemas Digitales y Arquitectura de Computadoras

Prof. Carlos Vila | Semestre 2017 - I


Usar la proposicin if para cambiar las condiciones de salida en
funcin de las condiciones de entrada.
La declaracin If es la estructura de control ms bsica de todas. Te
permite hacer algo o no slo si se cumple una condicin (si es
verdadera).
Se escribe as:

if (someCondition) {
// hace cosas si la condicin es verdad
}

Prof. Carlos Vila | Semestre 2017 - I


Existe una variacin llamada if-else que se escribe:
if (someCondition) {
// hace cosas si la condicin es cierta
} else {
// hace cosas si la condicin es falsa
}

if (inputPin == HIGH) // si el valor de la inputPin es alto


{
instruccionesA; //ejecuta si se cumple la condicin
}
else
{
instruccionesB; //ejecuta si no se cumple la condicin
}
Prof. Carlos Vila | Semestre 2017 - I
Todava queda el else-if, en la que se comprueba una segunda condicin en
caso de que la primera sea falsa:

if (inputPin < 500)


{
instruccionesA; // ejecuta las operaciones A
}
else if (inputPin >= 1000)
{
instruccionesB; // ejecuta las operaciones B
}
else
{
instruccionesC; // ejecuta las operaciones C
}
Prof. Carlos Vila | Semestre 2017 - I
sta es la forma ms sencilla de entrada con slo dos posibles
estados: encendido o apagado.
En este ejemplo se lee un simple switch o pulsador conectado a
PIN2, cuando el interruptor est cerrado el pin de entrada se lee
ALTO y encender un LED colocado en el PIN13

Prof. Carlos Vila | Semestre 2017 - I


int ledPin = 13; // pin 13 asignado para el LED de salida
int inPin = 2; // pin 2 asignado para el pulsador
void setup() // Configura entradas y salidas
{
pinMode(ledPin, OUTPUT); // declara LED como salida
pinMode(inPin, INPUT); // declara pulsador como entrada
}
void loop()
{
if (digitalRead(inPin) == HIGH) // testea si la entrada esta activa HIGH
{
digitalWrite(ledPin, HIGH); // enciende el LED
delay(1000); // espera 1 segundo
digitalWrite(ledPin, LOW); // apaga el LED
}
}
Prof. Carlos Vila | Semestre 2017 - I
El ejemplo siguiente enciende un LED conectado al pin 13 (LED
incorporado en la placa en muchos Arduinos) si el valor ledo en la
entrada analgica supera cierto valor, este ejecuta la condicional.

Prof. Carlos Vila | Semestre 2017 - I


Prof. Carlos Vila | Semestre 2017 - I
int leds[]={2,3,4,5,6}; // Est definiendo los 5 pines.
int pot; // Esta variable se refiere al potencimetro
int n=0; // Variable auxiliar que utilizaremos como contador en el bucle.
void setup(){
for(n=0;n<5;n++)
{
pinMode(leds[n],OUTPUT);
}
Serial.begin(9600); //Iniciamos la comunicacin con el puerto monitor serial
}
void loop(){
pot = analogRead(0); // Definimos el valor de la variable pot como una analgica en el puerto A0
//Para los dems bucles se proceder de la misma forma, modificando las condiciones de encendido
if(pot >= 150 && pot <= 300){
for(n=0;n<2;n++)
digitalWrite(leds[n],HIGH);
for(n=2;n<5;n++)
digitalWrite(leds[n],LOW);
}

Prof. Carlos Vila | Semestre 2017 - I


Sistemas Digitales y Arquitectura de Computadoras

Prof. Carlos Vila | Semestre 2017 - I


Se usa para repetir un bloque de sentencias encerradas entre llaves
un nmero determinado de veces. Cada vez que se ejecutan las
instrucciones del bucle vuelve a testear la condicin.
La declaracin for tiene tres partes separadas por (;)

for (inicializacin; condicin; expresin)


{
ejecutaInstrucciones;
}

Prof. Carlos Vila | Semestre 2017 - I


Encender una serie de LEDs conectado a los pines 2 a 7 de Arduino,
haciendo uso de un bcle.
El ejemplo hace uso de 6 LEDs conectados a los pines 2 a 7 de la
placa utilizando resistencias 220 (ohm).
El programa hace que los LED parpadeen en secuencia, uno por uno
con tan slo:
digitalWrite(pinNumber, HIGH/LOW)
delay(time).

Prof. Carlos Vila | Semestre 2017 - I


Prof. Carlos Vila | Semestre 2017 - I
// declara i, prueba que es menor que 8, incrementa i en 1
for (int i=2; i<8; i++)
{
digitalWrite(i, HIGH); // enva un 1 al pin i
delay(250); // espera seg.
digitalWrite(i-1, LOW); // enva un 0 al pin i-1
delay(250); // espera de seg.
}

Prof. Carlos Vila | Semestre 2017 - I


Sistemas Digitales y Arquitectura de Computadoras

Prof. Carlos Vila | Semestre 2017 - I


Es un bucle de ejecucin continua mientras se cumpla la expresin
colocada entre parntesis en la cabecera del bucle.
La variable de prueba tendr que cambiar para salir del bucle, la
situacin podr cambiar a expensas de una expresin dentro del
cdigo del bucle o tambin por el cambio de un valor en una entrada
de un sensor

while (unaVariable ?? valor)


{
ejecutarSentencias;
}

Prof. Carlos Vila | Semestre 2017 - I


El siguiente ejemplo testea si la variable "unaVariable es inferior a
200, si es verdad, ejecuta las instrucciones dentro de los corchetes y
continuar ejecutando el bucle mientras 'unaVariable' sea inferior a
200.

While (unaVariable < 200) // testea si es menor que 200


{
instrucciones; // ejecuta las instrucciones
// entre llaves
unaVariable++; // incrementa la variable en 1
}

Prof. Carlos Vila | Semestre 2017 - I


El bucle do while funciona de la misma manera que el bucle while,
con la salvedad de que la condicin se prueba al final del bucle, por
lo que el bucle siempre se ejecutar al menos una vez.

do
{
Instrucciones;
} while (unaVariable ?? valor);

Prof. Carlos Vila | Semestre 2017 - I


El siguiente ejemplo asigna el valor ledo leeSensor() a la variable 'x',
espera 50 milisegundos, y luego continua mientras que el valor de la
'x' sea inferior a 100:

do
{
x = leeSensor();
delay(50);

} while (x < 100);

Prof. Carlos Vila | Semestre 2017 - I


Sistemas Digitales y Arquitectura de Computadoras

Prof. Carlos Vila | Semestre 2017 - I


Un potencimetro es una resistencia variable, podemos elegir el
valor que puede tomar. De esta forma, controlamos la intensidad de
corriente que fluye por un circuito si ste est conectado en paralelo,
as como la diferencia de potencial si est conectado en serie.
El potencimetro dispone de tres patillas: entre las dos de sus
extremos existe siempre un valor fijo de resistencia, y entre
cualquiera de los dos extremos y la patilla central tenemos una parte
de ese valor. Es decir, la resistencia mxima que ofrece el
potencimetro entre sus dos extremos no es ms que la suma de las
resistencias entre un extremo y la patilla central.

Prof. Carlos Vila | Semestre 2017 - I


05 LEDs (el color no es significativo)
05 resistencias de 220 (una para cada LED)
01 potencimetro 50k

Simbologa

Prof. Carlos Vila | Semestre 2017 - I


Prof. Carlos Vila | Semestre 2017 - I
Prof. Carlos Vila | Semestre 2017 - I
Prof. Carlos Vila | Semestre 2017 - I
Sistemas Digitales y Arquitectura de Computadoras

Prof. Carlos Vila | Semestre 2017 - I


1. Concretar y demostrar el ejemplo del potencimetro
2. Realizar un programa que permita encender y apagar una serie de
LEDs en secuencia, simulando el efecto del auto fantstico.
3. Sobre el ejercicio anterior realizas la variacin de mantener dos
LEDs encendidos (el segundo con menor intensidad puertos
analgicos) te tal manera que simule la cola del primero.
4. Realizar un programa que permita incrementar la intensidad de un
LED en una de las salidas analgicas, dicho incremento se realizar
una vez presionado un switch.

Prof. Carlos Vila | Semestre 2017 - I


Sistemas Digitales y Arquitectura de Computadoras

Prof. Carlos Vila | Semestre 2017 - I


Potenciometro.
http://elcajondeardu.blogspot.pe/2013/12/potenciometro-introduccion-
y-ejemplos.html

Prof. Carlos Vila | Semestre 2017 - I

También podría gustarte