Arduino

Descargar como pptx, pdf o txt
Descargar como pptx, pdf o txt
Está en la página 1de 110

OPEN SOFT-HARDWARE

• Open-source hardware: se refiere a las


especificaciones de diseño de un objeto con una
licencia tal que permita ser estudiado, modificado,
creado y distribuido por cualquier persona.

• Open-source software (OSS): se refiere a aquel


software con licencias que dan derecho al estudio,
cambio, desarrollo y/o distribución de su código fuente
por cualquier persona y para cualquier propósito.
OPEN SOFT-HARDWARE

OPEN HARDWARE
OPEN HARDWARE
El hardware libre ofrece las mismas libertades que el
software libre, pero aplicadas a los planos del hardware.

No existe una definición clara de hardware libre.

Existen muchos tipos proyectos basados en hardware libre:


impresoras 3D, teléfonos, robótica, vehículos, etc.

Muchos proyectos de hardware libre son o están basados


en ordenadores de placa única o sistemas SBC.
OPEN HARDWARE

Un hardware abierto puede contener componentes que no


son abiertos.
Por ejemplo, un ordenador de placa única Open Hardware
como Raspberry Pi contiene una CPU ARM que no es
abierta.
OPEN SOFT-HARDWARE

ORDENADORES DE PLACA
ÚNICA (SBC)
ORDENADORES SBC

Un ordenador personal (PC)


es un dispositivo de propósito
general que busca la máxima
flexibilidad, con la finalidad
de satisfacer las
necesidades generales del
usuario.

Los ordenadores SBC (Single Board Computer) o sistemas de


placa integrada (Embedded System), son sistemas
informáticos que pueden integrarse dentro de otros sistemas
mecánicos o electrónicos más grandes y que tienen una
función específica dentro del funcionamiento global de la
máquina.
ORDENADORES SBC

• Bajo consumo
• Mínimo espacio
• Poca emisión térmica
• Fácil integración con otros componentes
eléctricos/electrónicos y mecánicos
• Utilización de estándares de comunicación
• Bajo costo
ORDENADORES SBC

Ejemplos de aplicaciones:

Sistemas de vigilancia on line: cámaras IP, conexión con


la red (smart phone)
Domótica: monitorización de parámetros (temperatura,
humedad, posibles escapes de gas,…), automatización
de dispositivos del habitáculo (persianas, calefacciones,
…)
Industria: máquinas de control numérico CNC (taladros,
fresadoras, tornos, etc)
IoT (Internet de las Cosas)
OPEN SOFT-HARDWARE

ARDUINO
ARDUINO
Es una plataforma de
hardware libre, basada en
una placa con un
microcontrolador y un entorno
de desarrollo diseñado para
facilitar el uso de la
electrónica en proyectos
multidisciplinares.
ARDUINO

ARQUITECTURA Y
CARACTERÍSTICAS TÉCNICAS DE
ARDUINO
Arquitectura y características
técnicas de Arduino
Arquitectura y características
técnicas de Arduino
Arquitectura y características
técnicas de Arduino

Se cuenta con 14 pines de entradas y salidas digitales, de los


cuales 6 pueden simular salidas análogas mediante
modulación por ancho de pulso (PWM) y 6 entradas análogas.
ARDUINO DATASHEET
¿QUÉ ES IDE?
IDE Arduino
ENTORNO PROGRAMACIÓN
IDE ARDUINO
• El entorno de programación IDE, tiene un lenguaje
simple, el cual está basado en C/C++.
Acceso a gran cantidad de información, ejemplos y
proyectos. 

• Permite programar directamente el hardware.


• Se puede recurrir a librerías para simplificar el código de
programación.

• Permite un control mas amplio de los pines de entrada y


salida en comparación a S4A.
ASÍ ES EL ENTORNO IDE
LENGUAJE DE PROGRAMACIÓN
EJEMPLO SEMÁFORO
LENGUAJE DE
PROGRAMACIÓN
• El lenguaje de programación de Arduino está basado en
C/C++.

• C++ es un lenguaje orientado a objetos y deriva de C.

• C es un lenguaje orientado a la implementación de


sistemas operativos (Unix).º
LENGUAJE DE
PROGRAMACIÓN
Aplicabilidad del lenguaje C:

• El desarrollo de sistemas operativos como Windows o


Linux

• Crear modelos y simuladores para aplicaciones


científicas

• Creacion de nuevos lenguajes de programación tales


como Java, C#, JavaScript, etc.
PULSADORES
• El pulsador tiene cuatro patillas que están conectadas a
pares como se ve en el siguiente esquema.
RESISTENCIA PULLUP Y
PULLDOWN CON PULSADOR
• Estos dos tipos de resistencias nos aseguran que cuando el
interruptor esté abierto tengamos un valor HIGH (5V) o LOW
(0V), pero ¿cómo lo hacen?
PULSADOR Y RESISTENCIA
PULLDOWN
• La resistencia que se ha utilizado y que debemos utilizar es de
10K ya que así evitamos que tenga influencia sobre el circuito.
El código sería exactamente igual, la única diferencia es que
ahora funciona correctamente, cuando el pulsador no está
presionado el LED está apagado y cuando está presionado se
enciende el LED.
PULSADOR Y RESISTENCIA
PULLUP
• Si lo que queremos es tener el LED siempre encendido y que
solo se apague cuando pulsamos, debemos utilizar la
resistencia pull-up. El esquema sería el siguiente.
• La resistencia seguirá teniendo el mismo valor que en la
configuración pull-up y el código será el mismo. Si lo pruebas
ahora en tu Arduino comprobarás que se ha invertido el
funcionamiento.
ELECTRÓNICA BÁSICA
El Protoboard, ¿Cómo se utiliza?
PROTOBOARD
EJEMPLO DE UNA
FUNCIÓN DE TIPO “VOID”
EJEMPLO BÁSICO DE UN
CIRCUITO ELECTRÓNICO
UTILIZANDO ARDUINO
ENTRE LLAVES:

Definen el principio y el final de un bloque de


instrucciones. Se utilizan para abrir y cerrar funciones y
condicionales.

Una vez abierta una llave de


apertura “{”, debe ser cerrada
“}” al finalizar la función o
condición.
PUNTO Y COMA:

Se utiliza para separar instrucciones, y además se


utiliza para separar elementos o parámetros dentro de
un ciclo “for”.

Si no se termina una
instrucción con punto y coma
“;”, el programa indicará un
error en la línea
correspondiente a la
instrucción.
BLOQUE DE COMENTARIOS:

Son áreas de texto ignoradas por el programa, que se


utilizan para hacer descripciones del código o comentarios
que ayuden a comprender el programa. Comienzan
con /* terminan con */ y no ocupan espacio en la memoria.
LÍNEA DE COMENTARIOS:
Las líneas de comentarios empiezan con // y terminan en
la siguiente línea de código. Al igual que los comentarios
de bloque, estas líneas de comentario son ignoradas por
el programa, y no ocupan espacio en la memoria.
ESTRUCTURA DE UN
PROGRAMA
La estructura de programación básica es bien sencilla, y
se compone de dos funciones que contienen
declaraciones, estamentos o instrucciones.

La función void setup() se invoca una sola vez cuando


inicia el programa, en ella se configuran los modos de
trabajo de los pins, además de iniciar y fijar velocidad del
puerto serie.
Ejemplo:
ESTRUCTURA DE UN
PROGRAMA
La función void loop() se ejecuta de forma cíclica e
infinitamente mientras la placa Arduino se encuentre
energizada. En ella se programan las condiciones y
acciones que debe tomar nuestro controlador en función
de las variables.
Ejemplo:
Es importante tener en cuenta el tipo de dato que se ha
definido para las operaciones (int, double, float, etc.), por lo
que, por ejemplo, si se define un 7 y un 2 como enteros “int”,
7/2 devuelve un resultado de 3 en vez de 3,5, ya que el 7 y
el 2 son enteros y no se reconocen los decimales con este
tipo de datos.

ASIGNACIONES COMPUESTAS:
Combinan una operación aritmética con una variable asignada.
Normalmente se utilizan en bucles.
OPERADORES DE COMPARACIÓN:

Las comparaciones se usan con frecuencia en las


estructuras condicionales para testear si alguna condición
es verdadera.
OPERADORES LÓGICOS:
Son una forma de comparar dos expresiones y devolver un
verdadero o falso dependiendo del operador. Los tres
operadores lógicos de este lenguaje de programación son:
AND(&&), OR(||) y NOT (!), y se utilizan en estamentos
de tipo if.
MONITOR SERIAL
PUERTO SERIAL
Los puertos seriales son la forma principal de comunicar
una placa Arduino con un ordenador.
ARDUINO Y PUERTO SERIAL
• Arduino UNO dispone con niveles de voltaje entre 0V y 5V.

• Compatibles con puertos USB.

• Los puertos serie están físicamente unidos a distintos pines,


mientras los usamos no podemos utilizarlos como entradas o
salidas digitales.

• En Arduino UNO los pines empleados son 0 (RX) y 1(TX).


EJEMPLO: CONEXIÓN DEL
ARDUINO CON UN
ORDENADOR
Para realizar la conexión
mediante puerto serie
únicamente es necesario
conectar nuestra placa Arduino
empleando el mismo puerto
que empleamos para
programarlo. A
continuación abrimos el IDE
Standard de Arduino y
hacemos click en el “Monitor
Serial” como se indica en la
imagen.
LÍNEAS DE COMANDO
IMPORTANTE PARA PUERTO
SERIE ARDUINO
• Serial.begin(rate);

• Abre el puerto serie y fija la velocidad de baudios para la


transmisión de datos en serie.

• El valor típico de velocidad para comunicarse con el


ordenador es 9600 aunque otras velocidades pueden ser
soportadas.
SINTAXIS EN PROGRAMA DE
SERIAL.BEGIN

Nota: Cuando se utiliza la comunicación serie


los pins digital 0 (RX) y 1 (TX) no puede
utilizarse al mismo tiempo
SINTAXIS EN PROGRAMA
DE SERIAL.PRINT(DATA,
DATA TYPE)
Vuelca o envía un numero o una cadena de caracteres, al
puerto serie. Dicho comando puede tomar diferentes
formas, dependiendo de los parámetros que utilicemos
para definir el formato de volcado de los números.

Serial.print(“El numero es ”);

En el monitor serial aparece El numero es


SINTAXIS EN PROGRAMA
DE SERIAL.PRINTLN (DATA)
Imprime los datos en el puerto serie, seguido por un
retorno de carro automático y salto de línea.

Este comando toma la misma forma que Serial.print ( ),


pero es mas fácil para la lectura de los datos en el Monitor
Serie del software.
EJEMPLO EN PROGRAMA
DE SERIAL.PRINTLN
BUSES DE
COMUNICACIÓN
PUERTO SERIE
El puerto Serie envía datos de manera secuencial.
RX: línea que recibe los
datos
TX: línea que envía los
datos
Para la comunicación serie entre dos dispositivos deben cruzarse los cables. Es
decir, conectar RX de uno a TX del otro y viceversa. Además deberán
conectarse GND entre ellos.
PUERTO SERIE
•Arduino UNO solo tiene un puerto serie que se utiliza,
generalmente, para la comunicación con el PC. Es decir, para
programar el Arduino o para mostrar mensajes en consola.

•Podemos enviar mensajes entre dos Arduinos UNO, pero


no podremos mostrarlos en consola.

•Otros Arduinos, como el MEGA2560, permiten la utilización


de más de un puerto Serie.
BUS I2C
•I2C o IIC (Inter-Integrated Circuit) es un BUS de
comunicación serie muy utilizada entre componentes
electrónicos como microprocesadores. Las señales son:
datos, reloj y GND.
• SDA: Señal de Datos. Corresponde a
A4 en Arduino UNO
• SCL: Señal de Reloj. Corresponde a
A5 en Arduino UNO GND: tierra
•Para la conexión entre dispositivos deben conectarse las tres
señales una a una.
BUS I2C
•Dispositivo esclavo
•Es el dispositivo que ejecuta órdenes de un maestro. Funciona
mediante eventos. Es decir, ejecuta una función cada vez que
recibe una orden

• Wire.onRequest(sendData)
•Ejecuta la función sendData que envía el mensaje mediante
•Wire.write(char *msg);
Wire.begin(2); //iniciamos el esclavo
Wire.onRequest(sendData); //activa el evento sendData
void sendData()
{
while(Wire.available())
Wire.write(msg); //enviamos el mensaje
}
BUS I2C
• Wire.onReceive(receiveData);
•Ejecuta la función receiveData que recibe el mensaje mediante
•Wire.read();

Wire.begin(2); //iniciamos el esclavo


Wire.onReceive(receiveData); //activa el evento receiveData
void receiveData ()
{
char c =Wire.read(msg); //recibe el mensaje
}
BUS I2C
•Dispositivo maestro
•Es el dispositivo que envía órdenes a un esclavo, y éste las
ejecuta. La órdenes que puede enviar son:

• Wire.Write(char *cadena)
•Envía por el BUS I2C una cadena de caracteres al esclavo
especificado. Se utiliza así:

Wire.beginTransmission(2); //indicamos el esclavo


Wire.write(“hola! Hay alguien ahí?”); //enviamos el
texto Wire.endTransmission(2); //final de la transmisión
BUS I2C
• Wire.Read()
•Recibe por el BUS I2C un carácter enviado por el esclavo
especificado. Se utiliza así:

Wire.requestFrom(2, 50); //indicamos el esclavo


while(Wire.available()) //vamos leyendo mientras recibamos
texto
char c=Wire.read(); //guardamos el carácter recibido en “c”
BUS I2C
Ejemplo de recepción
de una cadena en un
dispositivo master.
BUS I2C
Dispositivo esclavo.
Cada vez que el
master requiera el
mensaje, el esclavo
activa el evento
“sendData” para
enviar el mensaje
“msg”.
MÓDULOS BLUETOOTH
PARA ARDUINO
FUNCIONES
Conjunto de estamentos contenidos en un bloque, que son
ejecutados cuando se invoca el nombre de la función
dentro del programa.

Estas se escriben de forma independiente a las funciones


void setup() y void loop(). Generalmente se utilizan para
realizar acciones repetitivas, y así reducir el tamaño del
programa, además de obtener una optimización del
mismo. Las funciones se caracterizan por ser de algún tipo
de valor, por ejemplo, “int”, “float”, “void”, etc. Y este será
el tipo de variable que devolverá dicha función.
FUNCIONES
En caso de que la función sea de tipo “void” (función
vacía), no devolverá ningún valor. Luego de declarar el
tipo de dato que devuélvela función, se le debe asignar un
nombre, y entre paréntesis se escribe, en caso de ser
necesario, los parámetros que se traspasan a la función
para que se ejecute.

Ejemplo:
FUNCIONES
Ejemplo de construcción de una función:
La siguiente función devolverá un número entero, se le
asignará el nombre delayVal(). La justificación de su
existencia, es que lee un valor analógico con resolución de
10 bit´s (0 a 1023), y lo transforma en un número entero
de 8 bit´s (0 a 255), dividiendo en 4 al primero. Finalmente
se devuelve el valor “v” como número entero y se retorna
al programa principal.
PROGRAMACIÓN C.
VARIABLES
VARIABLES
Espacio reservado en memoria cuyo contenido puede
variar a lo largo de la ejecución del algoritmo.

• En C las variables deben declararse.

• En la declaración se asigna el nombre y el tipo de la


variable.

• Ejemplo: Creamos la variable llamada “temperatura”


de tipo entero (int):

• int temperatura;
ASIGNACIÓN DE UNA
VARIABLE
significa dar un valor a esa variable y se hace de la siguiente
manera:
nombre de la variable = valor de la variable

• Ejemplo: Asignamos a “temperatura” el valor 25:

• temperatura = 25;

El valor de una variable puede ser:


• Un número
• Una operación entre números
• Otra variable
• Una operación con la misma variable u otra(s) variable(s)
Ejemplo:
//declaramos variables
int temperaturaAnterior=0;
int temperatura=0;

//asignaciones temperatura = 25 + 2;
Temperatura Anterior = temperatura;
temperaturaAnterior = temperaturaAnterior + 1;
PROGRAMACIÓN C
VARIABLES
Tipos básicos de variables numéricas:

• Entero (int): Número entero, con o sin signo. Rango de


32767 a 32768 (16 bits)
Ejemplos: 21, -4, 100 ….
• Entero (long): Número entero, con o sin signo. Rango de
-2147483648 a 2147483647 (32 bits)

• Decimal (float): Número decimal: 6-7 dígitos con coma


flotante, con o sin signo. Rango de 3.4028235E +38 a -
3.4028235E +38 (32 bits)

Ejemplos: 21.56, 0.001, -23.01, 35,5E10, ….


PROGRAMACIÓN C
VARIABLES
Tipos básicos de variables texto:

• Carácter (char): Carácter ASCII. Su valor se asigna


mediante el número ASCII o mediante el carácter entre
comillas. Rango de 0 a 255 (1 byte).

Dos manera de asignar un carácter a un variable char.


Ejemplos: char letraA = ‘A’; //asignación del valor ‘A’ a la
variable letraA char letraA = 65; //asignación del valor
‘A’ mediante código ASCII
Otros ejemplos de char:

char letraB = letraA+1; //66, asignación del valor ‘B’

char caracter = 126;//asignación del valor ‘~’


char caracter =‘~’; //asignación del valor ‘~’

char saltoLinea = 10;


char saltoLinea =‘/n’;

char retornoCarro =‘/r’;

char tabulador =‘/t’;


PROGRAMACIÓN C
VARIABLES
PROGRAMACIÓN C
VARIABLES
Variables lógicas
boolean: verdadero, falso

Ejemplos:
boolean bVarT = true;
boolean bVarT = 1;

boolean bVarF = false


boolean bVarF = 0;

byte: 1 byte en binario. Equivale a un char.


Ejemplo:
byte b = B10010; //equivale al número 18
PROGRAMACIÓN C
VARIABLES
Cadenas o arrays

Los arrays son una sucesión de variable de un tipo:


enteros, decimales, caracteres o lógicos.

• Ejemplos:
char nombreUsuario[10] = “John Smith”
int edades[4] = {23,56,67,35}
boolean casado[4]={verdadero, falso, falso, verdadero}

String o cadena de caracteres: Es un array de tipo char.


PROGRAMACIÓ N C
VARIABLES
char cadena[24] ;
cadena = “Esto es una cadena de 24”; //asignación de la
cadena en una línea cadena[0]=‘E’; //asignación de la
cadena carácter a carácter
cadena[1]=‘s’;

cadena[12] = ‘c’;
PROGRAMACIÓN C
VARIABLES
int enteros[6] ;//declaramos enteros como 6 int enteros
= {3,6,7,8,4,7}; //asignación en una línea
enteros[0]=3; //asignación por posiciones
… enteros[5]=7;
float decimales[6] = {3.4, 6.7, 7.9, 8.4, 4.8, 7.78}
;//declaramos enteros como 6 float

//declaramos mayorEdad como 3 bool


boolean mayorEdad[3] = {verdadero,falso,verdadero} ;
Ejemplos de asignaciones de Strings:
char cadena[24] ;
cadena = “Esto es una cadena de 24”; //asignación de la
cadena en una línea cadena[0]=‘E’; //asignación de la
cadena carácter a carácter
cadena[1]=‘s’;

cadena[12] = ‘c’;
Ejemplos de asignaciones numéricas a arrays:
int enteros[6] ;//declaramos enteros como 6 int enteros =
{3,6,7,8,4,7}; //asignación en una línea enteros[0]=3;
//asignación por posiciones
… enteros[5]=7;

float decimales[6] = {3.4, 6.7, 7.9, 8.4, 4.8, 7.78}


;//declaracion y asignacion en una //línea
PROGRAMACIÓN C
VARIABLES
Ejemplos de asignaciones de variables:

a1 = 5; //a la variable a1 le asignamos el valor 5


b1 = a1; //a la variable b1 le asignamos el valor de a1, que es 5
a1 = a1 + 1; //a la variable a1 le sumamos 1, ahora vale 6
a1 = a1 * b1; //a1 vale 30

c1= ‘a’;
c1= c1 + 1 //¿Cuanto vale c1 ahora?
PROGRAMACIÓN C
VARIABLES
Ejemplos de asignaciones con cadenas:

char cadena[24] = “Esto es una cadena de 24”;


char carac;
carac = cadena[6]; //la variable carac vale ‘s’

char otraCadena[24];
sprintf(otraCadena,cadena); //otraCadena vale “Esto es
una Cadena de 24”

int enteros[6] ; //declaramos enteros como 6 int enteros =


{3,6,7,8,4,7};
int a1
a1 = enteros[0];
PROGRAMACIÓ N C
VARIABLES
Ejemplo de arrays
//definiciones con valores iniciales
int enteros[4] = {4,6,3,6};
int i = 3; int a1=5; int e1=0;

//asignaciones a1 = a1+ i;
e1=enteros[i] + a1;

¿Cuánto vale la variable e1?


Operaciones entre números: Una operación entre dos
variables del mismo tipo da una variable del mismo tipo.
Ejemplo
La operación entre enteros da otro entero
int e1=5;
int e2=6;
int e3=0;
int e4=0;
int 65=0;
float d1=0.0;

e3 = e1 + e2 + 1; //el valor de e3 es entero: 12


e4 = 5*6; //el valor de e4 es entero: 30
e5 = 5/6; //el valor de e5 debe ser entero:
se redondea a 1
d1 = 5.0/6.0 //el valor de d5 es decimal:
0.83333
PROGRAMACIÓN C.
SENTENCIAS Y BLOQUES
Sentencia: Es un conjunto de operaciones o tratamientos sobre los
datos que el procesador realiza de una sola vez.

Las sentencias simples son líneas de código y se finalizan con un


‘;’

Ejemplos de sentencias simples, cada una finaliza con un ‘;’

char cadena[24] = “Esto es una cadena de 24”;


char carac;
carac = cadena[6];

int a=5;
if (a>0) a=a+1;
else a=0;
PROGRAMACIÓN C
SENTENCIAS Y BLOQUES
Bloque: Conjunto de sentencias simples que forman una
unidad. Se utilizan llaves para acotar un bloque.
Los bloque se pueden anidar.
Ejemplo de bloques y sentencias.

int a=0;
int b=0;
if (a>0) //inicio sentencia
• {//inicio del bloque
a=a+1;
b=a;
}//fin del bloque
• else a=0; //fin de sentencia
PROGRAMACIÓN C.
SENTENCIAS
Sentencia condicional: Ejecuta una “sentencia” (simple o
bloque) solo sí la “condición” es cierta:
if ( condición ) sentencia o bloque
else
sentencia o bloque
Si es falsa se ejecuta el else

Si se comparan dos expresiones, se utilizarán los siguientes


signos
A == B ¿A es igual a B?
A <= B ¿A es menor que B?
A >= B ¿A es mayor o igual que B?
A != B ¿A no es igual a B?
PROGRAMACIÓN C.
SENTENCIAS

Ejemplo if…else:

if ( x==1 )
Serial.println (“la
variable x vale uno”);
else
Serial.println (“la
variable x no vale
uno”);
PROGRAMACIÓN C.
SENTENCIAS
Ejemplo if…else anidado, notar el uso de bloques:

int x=50;
int edad=0;
if ( x<0 ) Serial.println (“la variable x es negativa”);
else
{
if ( x>=0 && x<=10 )
{
Serial.println (“la variable x está entre 0 y 10”);
edad = x;
}
else
Serial.println (“la variable vale más de 10”);
}
PROGRAMACIÓN C.
SENTENCIAS
Instrucción de ciclo While
Ejecuta una “sentencia” varias veces. La ”sentencia” se ejecuta
una y otra vez mientras la ”condición” sea cierta.

while ( condición )
sentencia
Ejemplo while:

int j=0;
while ( j < 10 )
{
Serial.println (j);
j++; //equivalente a j=j+1
}
PROGRAMACIÓN C.
SENTENCIAS
Sentencia bucle For

Ejecuta una sentencia un número de veces, según la


sintaxis: for ( expresión_inicial; condición;
expresión_de_paso )
sentencia

La ”expresión_inicial” se ejecuta antes de entrar en el


bucle.

Si la ”condición” es cierta, se ejecuta ”sentencia” cíclicamente


hasta que la “condición” sea falsa.

En cada ciclo se ejecuta la ”expresión_de_paso”, donde se


PROGRAMACIÓN C.
SENTENCIAS
Ejemplo for:
int j;
for ( j=0; j<10; j++ )
{
Serial.println (j ); j=0
} j<10
/* expresion_inicial j++
condicion
expresion_de_paso
*/
PROGRAMACIÓN C.
SENTENCIAS
Bucle While
Ejecuta una sentencia varias veces. La sentencia se ejecuta una y
otra vez mientras la condición sea cierta.

while ( condición )
sentencia
PROGRAMACIÓN C.
SENTENCIAS

Ejemplo while:

int j=0;
while ( j < 10 )
{
Serial.println ( j );
j++; //es lo mismo que j=j+1

}
PROGRAMACIÓN C.
SENTENCIAS
Bucle do…while

Igual que while, pero siempre ejecuta la primera vez.

do
{
sentencia
} while ( condición );

La sentencia se ejecuta al menos la primera vez; luego, mientras


la condición sea cierta, se itera la sentencia.
PROGRAMACIÓN C.
SENTENCIAS

Ejemplo while:

int j=0; do
{
Serial.println ( j );
j++; //es lo mismo que
j=j+1
} while (j < 10);
PROGRAMACIÓN C.
VARIABLES
Variables globales:
Son variables que tienen como ámbito todo el programa:
funciones, loop, procedimientos. Pueden leerse y escribirse
desde cualquier parte del programa.
Se declaran al comenzar el programa, no deben estar incluidas
en ninguna función o procedimiento.

Variables locales:
Son variables que tienen como ámbito el bloque donde se
definen. Pueden leerse y escribirse solo en el bloque donde
se definen.
Pueden declararse en cualquier línea del programa pero se
aconseja declararlas al comenzar un bloque.
Float result=0; //variable global, valida en todo el programa
void loop()
{
divF(5.0,3.0)
}
void divF(float x, float y)
{
int error=0; //variable local, valida en la funcion divF
if (y!=0)
{
char msg[2]={‘O’,’K’} //variable global, valida solo en el
bloque error=0;
result = x / y;
Serial.println(msg);
}
else error=1;

Serial.println (error);
}
LDR
SEÑALES DE CONTROL DE
POTENCIA PWM
PWM (Pulse Width Modulate): Modulación por ancho de
pulso. Se utiliza para regular sistemas de potencia
(mayoritariamente motores).
Es un tren de pulsos de cuya duración (a nivel alto)
respecto la señal GND es regulable (duty cycle).

Potencia máxima (100%): se envía un nivel


alto de manera continua
Potencia 0: se GND de manera continua.
Potencia media (50%): la duración en alto y en
GND es la misma.
En Arduino UNO existen 6 señales PWM y se obtienen a
partir de las salidas digitales marcadas con ‘~’: D3, D5,
D6, D9, D11 y D12.

Los trenes de pulsos tienen valores altos de 5V y bajos de


GND.
CONTROL DE UN MOTOR
POR PWM
Las señales digitales de
Arduino proporcionan
potencias máximas muy
pequeñas (5V*40mA)
incapaces de mover el motor.
Es por esto que se precisa de
una fuente de alimentación
que proporcionen las tensiones
(12V) y potencias necesarias.
La regulación de la potencia
que proporciona la fuente la
realiza el PWM del Arduino a
través de un transistor.
EJERCICIO PWM
• Se pretende realizar mediante la modulación por ancho de
pulso un programa que permita el control de la luminosidad
de un led, es decir que empiece desde cero hasta el valor
máximo de luminosidad y a continuación decremente.
• Además queremos visualizar el proceso de incremento y
decremento a través del monitor del puerto serie.
ACTUACIÓN SOBRE UN
RELÉ
Un relé es un conmutador actuado por una señal eléctrica.
La conmutación se hace realiza mecánicamente,
moviendo una plaquita que conecta un circuito con otro.
El movimiento lo realiza un electroimán, cuya bobina está
alimentada por la tensión de control.
Para alimentar la bobina del relé no se hace directamente
mediante la salida digital del Arduino, si no que se hace a
través de transistores.

En paralelo a la bobina se suele conectar un diodo de


protección que evita que la corriente inducida por la
bobina retorne por el circuito.
En este ejemplo, el relé conmuta la señal de 5V del
Arduino a un led de potencia. La señal que actúa sobre el
relé es la señal digital D8 del Arduino y lo hace a través
de un transistor NPN.

También podría gustarte