Estructuras básicas Arduino
Estructuras básicas Arduino
M&&C
C
ELECTRÓNICA
Módulo V
Mantenimiento a sistemas de
control industrial con PLC y PIC
Objetivo
Desarrollar en el estudiante las competencias que le permitan
realizar mantenimiento preventivo y/o correctivo a los
sistemas de control industrial de alta tecnología con PLC
y Microcontroladores, a fin de responder a las necesidades
del sector productivo
Objetivos Particulares
➔Arquitectura de Microcontroladores
Arduino UNO
Características
Microcontrolador: Atmega328P
●
Alimentación:
●
Conexión USB
●
Arduino
IDE
integrated
development
environment
M&C
Arduino IDE
Barra de Herramientas
Selección
de
placa
M&C
Arduino UNO
XTAL1
22pF
CRYSTAL
XTAL2
22pF
U1
D13
2 14
D0 PD0/RXD/PCINT16 PB0/ICP1/CLKO/PCINT0 D8
3 15
D1 PD1/TXD/PCINT17 PB1/OC1A/PCINT1 D9
4 16
D2 PD2/INT0/PCINT18 PB2/SS/OC1B/PCINT2 D10
5 17
D3 PD3/INT1/OC2B/PCINT19 PB3/MOSI/OC2A/PCINT3 D11
6 18
D4 PD4/T0/XCK/PCINT20 PB4/MISO/PCINT4 D12
11 19
D5 PD5/T1/OC0B/PCINT21 PB5/SCK/PCINT5 D13
220
12 9
D6 PD6/AIN0/OC0A/PCINT22 PB6/TOSC1/XTAL1/PCINT6 XTAL1
13 10
D7 PD7/AIN1/PCINT23 PB7/TOSC2/XTAL2/PCINT7 XTAL2
21 23
AREF PC0/ADC0/PCINT8 A0
20 24
VCC AVCC PC1/ADC1/PCINT9 A1
25
PC2/ADC2/PCINT10 A2
26
PC3/ADC3/PCINT11 A3
27
PC4/ADC4/SDA/PCINT12 A4
28
PC5/ADC5/SCL/PCINT13 A5
1
PC6/RESET/PCINT14 VCC
ATMEGA328P
M&C
Estructura básica
void setup()
{
// Se utiliza doble diagonal para indicar algún comentario
void loop()
{
// El código dentro de esta estructura se repetirá indefinidamente.
Llaves
Las
Las llaves
llaves sirven
sirven para
para definir
definir elel principio
principio yy elel final
final de
de un
un bloque
bloque
de
de instrucciones.
instrucciones.
Una
Una llave
llave de
de apertura
apertura “{“ “{“ siempre
siempre debe
debe irir seguida
seguida de
de una
una llave
llave
de
de cierre
cierre “}”,
“}”, sisi no
no es
es así
así elel programa
programa marcará
marcará errores.
errores.
Ejemplo:
Ejemplo:
tipo
tipo función()
función()
{{
instrucciones;
instrucciones;
}}
M&C
Punto y coma
ElEl punto
punto yy coma
coma “;”
“;” se
se utiliza
utiliza para
para separar
separar instrucciones
instrucciones en
en elel
lenguaje
lenguaje dede programación
programación de de Arduino.
Arduino.
También
También sese utiliza
utiliza para
para separar
separar elementos
elementos en
en una
una instrucción
instrucción
de
de tipo
tipo “bucle
“bucle for”
for”
Ejemplo:
Ejemplo:
int
int xx == 13;
13;
M&C
Comentarios
Los
Losbloques
bloquesde
decomentarios,
comentarios,oomulti-línea
multi-líneadedecomentarios,
comentarios,son
sonáreas
áreasdede
texto
textoignorados
ignoradospor
porelelprograma
programaque
quese
seutilizan
utilizanpara
paralas
lasdescripciones
descripcionesdel
del
código
códigooocomentarios
comentariosque
queayudan
ayudanaacomprender
comprenderelelprograma.
programa.
Comienzan
Comienzancon
con /*
/* yyterminan
terminancon
con */
*/ yypueden
puedenabarcar
abarcarvarias
varias
líneas.
líneas.
Ejemplo:
Ejemplo:
/*
/*
esto
estoes
esun
unbloque
bloquede
decomentario
comentario
no
nose
sedebe
debeolvidar
olvidarcerrar
cerrarlos
loscomentarios.
comentarios.
*/
*/
M&C
Comentarios
Una
Una línea
línea dede comentario
comentario empieza
empieza concon //// yy terminan
terminan con
con la
la
siguiente
siguiente línea
línea de de código.
código. AlAl igual
igual que
que loslos comentarios
comentarios dede
bloque,
bloque, los
los de
de línea
línea son
son ignoradas
ignoradas por
por elel programa
programa yy nono ocupan
ocupan
espacio
espacio en
en lala memoria.
memoria.
Una
Una línea
línea de
de comentario
comentario se
se utiliza
utiliza aa menudo
menudo después
después de
de unauna
instrucción,
instrucción, para
para proporcionar
proporcionar más
más información
información acerca
acerca de
de lolo que
que
hace
hace esta
esta oo para
para recordarla
recordarla más
más adelante.
adelante.
Ejemplo:
Ejemplo:
//
// esto
esto es
es un
un comentario
comentario
M&C
Funciones
Una
Una función
función es
es un
un bloque
bloque de
de código
código que
que tiene
tiene un
un
nombre
nombre yy un
un conjunto
conjunto de
de instrucciones
instrucciones que
que son
son
ejecutadas
ejecutadas cuando
cuando se
se llama
llama aa la
la misma
misma
tipo nombreFunción(parámetros)
{
Instrucciones; Sintaxis
return resultado //En caso de haberlo
}
Donde:
● tipo - tipo de dato a regresar
● nombreFunción -Nombre válido, no palabras reservadas.
● return – Instrucción para regresar un resultado, en caso de haberlo.
M&C
Funciones
Ejemplo 1. Regresando un resultado
long cuadrado(int x)
Ejemplo 2. Sin regreso de resultados
{
long resultado;
resultado=x*x; void parpadeo(int pin, int tiempo)
return resultado; {
} digitalWrite(pin,HIGH);
delay(tiempo);
digitalWrite(pin,LOW);
delay(tiempo);
}
M&C
Constantes
M&C
Variables
Una
Una variable
variable es
es una
una manera
manera de
de nombrar
nombrar yy almacenar
almacenar un
un valor
valor
numérico
numérico para
para su
su uso
uso posterior
posterior por
por el
el programa.
programa.
Como
Como susu nombre
nombre indica,
indica, las
las variables
variables son
son números
números que
que sese pueden
pueden
variar
variar continuamente,
continuamente, en
en contra
contra de
de lo
lo que
que ocurre
ocurre con
con las
las constantes,
constantes,
cuyo
cuyo valor
valor nunca
nunca cambia.
cambia.
Variables
int LED=13; // variable Global
void setup()
{
pinMode(LED,OUTPUT);
}
void loop()
{
for (int i=100; i<2000; i=i+100) //variable Local
{
digitalWrite(LED,HIGH);
delay(i);
digitalWrite(LED,LOW);
delay(i);
}
}
M&C
Tipos de Datos
M&C
Cadenas
M&C
Arreglo (Array)
Es
Es un
un conjunto
conjunto de
de valores
valores aa los
los que
que se
se accede
accede con
con un
un número
número índice.
índice. Dicho
Dicho
conjunto
conjunto puede
puede ser
ser un
un vector
vector oo una
una matriz
matriz bidimensional
bidimensional oo tridimensional.
tridimensional.
El
El primer
primer valor
valor de
de la
la matriz
matriz es
es el
el que
que está
está indicado
indicado con
con el
el índice
índice 0,
0, es
es
decir,
decir, el
el primer
primer valor
valor del
del conjunto
conjunto es
es el
el de
de la
la posición
posición 0.0.
Ejemplo:
Sin definir tamaño int miArray[] = {valor0, valor1, valor2, …, valorn}
Operadores
Matemáticos Relacionales
= Asignación == Igual a
+ Suma, Adición != Diferente de
- Resta, sustracción < Menor que
* Multiplicación <= Menor o igual que
/ División > Mayor que
% Módulo >= Mayor o igual que
Ejemplo
Ejemplo
if(edad>18)
A=5%2 //A=1 {
adulto=true;
}
M&C
Operadores
Lógicos a nivel bit
Lógicos & AND binario
&& Y, and | OR binario
|| O, or ~ NOT binario
! Negación, not ^ XOR binario
<< Corrimiento a la izquierda
Ejemplo
>> Corrimiento a la derecha
if (temp>15 && temp<30)
{ Ejemplo sean a=0x0F y b=0b11000001 (0xC1)
Vel=50;
} c=a&b; //c=0x01
d=a^b; //d=0xCE
e=a<<4; //e=0xF0
f=b>>2; //f=0x30
M&C
Operadores
Compuestos
++ Incremento Ejemplos teniendo: a=5, b=10 y c=20
-- Decremento
Entonces:
+= Suma compuesta a++; //a=a+1; a=6
-= Resta compuesta b--; //b=b-1; b=9
a*=b; //a=a*b; a=54
*= Mult. compuesta
/= División compuesta b&=c;
&= AND binario compuesta //b=b&c;
//b= 0b0 1 0 0 1
|= OR binario compuesta // & 0b1 0 1 0 0
// ---------------------
//b= 0b0 0 0 0 0
M&C
Estructuras de Control
ifif Es una estructura de control selectiva que se utiliza para probar si una
determinada condición se ha alcanzado.
Una traducción literal es: SI
Sintaxis
Ejemplo:
if (condición)
{
if(temp>30)
//Instrucciones a ejecutar en caso de ser
//verdadera la condición {
} Motor=HIGH;
}
M&C
Estructuras de Control
Es una estructura de control selectiva que permite
ifif -- else
else ejecutar un conjunto de instrucciones si es verdadera la
condición evaluada. Y otro conjunto de instrucciones si
la condición no se cumple.
Sintaxis Una traducción literal es: SI – SINO.
Ejemplo:
if (condición) if(digitalRead(2)==true)
{ {
//Instrucciones para si se cumple la condición
} digitalWrite(13,HIGH);
else }
{ else
//Instrucciones si es que no se cumple la condición {
} digitalWrite(13,LOW);
}
M&C
Estructuras de Control
Es una estructura de control selectiva que permite
ejecutar una o varias condiciones en forma
ifif –– else
else ifif -- else
else anidada.
Una traducción literaria sería: SI – o SI - SINO
Sintaxis
if (condición) Ejemplo:
{ if (valor<500)
//Instrucciones para si se cumple la condición {
//Instrucciones para valores <500
} }
else if (condición 2) else if (valor>1000)
{ {
//Instrucciones si se cumple la condición 2 //Instrucciones para valores mayores a 1000
} }
else else
{ {
//Instrucciones si es que no se cumple alguna condición //Instrucciones para valores entre 500 y 1000
}
}
M&C
Estructuras de Control
Su función es de echo la misma al caso de if-else if-else.
switch
switch Se utiliza para evaluar un valor con varios casos posibles
y según el caso, se ejecutan las instrucciones indicadas.
Sintaxis
switch (variable a evaluar) Ejemplo:
{
case valor1: //Instrucciones a ejecutarse switch (dato)
break;
{
case valor2: //Instrucciones a ejecutarse case 'I': giroIzquierda();
break;
case ...: //Instrucciones a ejecutarse break;
break; case 'D': giroDerecha();
case valorn: //Instrucciones a ejecutarse break;
break; default: mover_motor();
default: //Instrucciones a ejecutarse en caso de no }
//corresponder a ningún valor
}
M&C
Estructuras de Control
Se utiliza para repetir un bloque de sentencias encerradas entre llaves
for
for un número determinado de veces.
Cada vez que se ejecutan las instrucciones del bucle se vuelve a evaluar
la condición. La declaración for tiene tres partes separadas por (;)
Sintaxis Ejemplo:
Estructuras de Control
Es un bucle de ejecución continua mientras se cumpla la
while
while expresión colocada entre paréntesis en la cabecera del
bucle. La variable de prueba tendrá que cambiar para
salir del bucle.
Ejemplo:
Sintaxis
int pasos=0;
…
while (condición)
…
{
//Instrucciones a ejecutar hasta que while(pasos<200)
//deje de cumplirse la condición {
} mover_motor();
pasos++;
}
M&C
Estructuras de Control
Funciona de la misma manera que el bucle while,
do-while
do-while con la excepción de que la condición se evalúa al
final del bucle, por lo que el bucle siempre se
ejecutará al menos una vez.
menos una vez.
Sintaxis Ejemplo:
do
do
{
{
//Instrucciones a ejecutarse mientras x=leerSensor();
delay(50);
} while (condición) }while(x<100)
M&C
Entradas/Salidas digitales
pinMode() pinMode(pin,modo)
Sintaxis pin: número de pin a configurar
Permite configurar si algún pin será utilizado
como entrada o como salida. modo: INPUT o OUTPUT
digitalWrite() digitalWrite(pin,valor)
Sintaxis pin: número de pin
Manda un 1(5 V) o un 0(0 V) al pin digital.
valor: HIGH(1) o LOW(0)
digitalRead() digitalRead(pin)
Sintaxis pin: número de pin a leer
Manda un 1(5 V) o un 0(0 V) al pin digital.
M&C
Entradas/Salidas digitales
PORTD contiene los pines digitales del 0 al 7 de Arduino.
DDRD – Configura el Puerto D - lectura/escritura
PORTD – Puerto D, conexión física - lectura/escritura
PIND – Pines de entrada del Puerto D – solo lectura
PORTB contiene los pines digitales del 8 al 13 de Arduino, los pines 6 y 7 del Puerto B son para el cristal.
DDRB, PORTB, PINB.
Ejemplo
DDRD = B11111110; // Establece los pines del 1 al 7 como salidas. El 0, como entrada
PORTD = B10101000; // Pone en ALTO los pines 7, 5 y 3.
M&C
Salida MOSFET
Salida Transistor
M&C
Entradas Análogas
analogReference() analogReference(tipo)
máximo 5 V.
M&C
Entradas Análogas
analogRead()
analogRead(pin)
Lee el valor de voltaje en forma binaria que
se encuentra en el pin especificado. Sintaxis
Pin: canal a leer.
●
analogWrite()
analogWrite(pin,valor)
Escribe el valor análogo (onda PWM) al pin
especificado. Sintaxis
pin: Pin de salida (3, 5, 6, 9, 10 u 11).
●
La frecuencia es aprox. 490 MHz. valor: valor del ciclo de trabajo, valores
●
5V
Varia el voltaje
Promedio en la carga
0V
M&C
Funciones de Retardo
delay() delay(ms)
milisegundos.
que pausará el programa. El valor
máximo es 2,147,483,647 ms.
delayMicroseconds() delayMicroseconds(us)
microsegundos.
que pausará el programa. El valor
máximo es 2,147,483,647 us.
M&C
Funciones de Tiempo
millis() millis()
micros() micros()
Funciones Matemáticas
valor tendrá un nuevo valor deBajo. El límite inferior del valor actual.
●
dentro del rango determinado deAlto. El límite superior del valor actual.
●
aAlto
aBajo
deBajo deAlto