www.themegallery.
com
LOGO
APLICACIÓN AUTOMOTRIZ
MICROCONTROLADOR
Atmega-328P-PU
(ARDUINO)
AUTOTRÓNICA
Lic. Marcelo Quispe M.
ITA - 367
1
CONTENIDO TEMÁTICO
CONOCIENDO ARDUINO
1
3
CARACTERÍSTICAS DE LA PLACA ARDUINO ATMEGA-328P
2
Análisis de la placa Arduino
3
4 Las memorias del microcontrolador
2 Lic. Marcelo Quispe M. LOGO
CONTENIDO TEMÁTICO
APLICACIÓN AUTOMOTRIZ
5
3
6 TIPOS POSIBLES DE UNA VARIABLE
CAMBIO DE TIPO DE DATOS (NUMÉRICOS)
7
3
8 BLOQUES CONDICIONALES
3 Lic. Marcelo Quispe M. LOGO
CONOCIENDO ARDUINO
4 Lic. Marcelo Quispe M. LOGO
CONOCIENDO ARDUINO
5 Lic. Marcelo Quispe M. LOGO
CONOCIENDO ARDUINO
Fundamentalmente Arduino es una plataforma electrónica
abierta para la creación de prototipos y que gira entorno a un
microcontrolador.
6 Lic. Marcelo Quispe M. LOGO
CONOCIENDO ARDUINO
Conviene conocer estas características para identificar qué placa
Arduino es la que nos convendrá más en cada proyecto
7 Lic. Marcelo Quispe M. LOGO
CONOCIENDO ARDUINO
los microcontroladores incorporados en las diferentes placas Arduino
pertenecen todos a la misma “familia tecnológica”, por lo que su
funcionamiento en realidad es bastante parecido entre sí. En concreto, todos los
microcontroladores son de tipo AVR, una arquitectura de microcontroladores
desarrollada y fabricada por la marca Atmel
8 Lic. Marcelo Quispe M. LOGO
CARACTERÍSTICAS DE LA PLACA ARDUINO
ATMEGA-328P
La placa Arduino comprende tres partes principales:
FT232RL
Recepción de
datos Tx/Rx
9 Lic. Marcelo Quispe M. LOGO
Análisis de la placa Arduino
10 Lic. Marcelo Quispe M. LOGO
Esquema de conexionado de los pines digitales y
analógicos al microcontrolador Atmega328P
11 Lic. Marcelo Quispe M. LOGO
Esquema de conexionado de los pines de alimentación
al microcontrolador Atmega328P
12 Lic. Marcelo Quispe M. LOGO
Conector ICSP
13 Lic. Marcelo Quispe M. LOGO
Microcontrolador Atmega 328P
14 Lic. Marcelo Quispe M. LOGO
Microcontrolador Atmega 328P
15 Lic. Marcelo Quispe M. LOGO
Las memorias del microcontrolador
16 Lic. Marcelo Quispe M. LOGO
Las memorias del microcontrolador
Memoria Flash: memoria persistente donde se almacena
permanentemente el programa que ejecuta el microcontrolador
(hasta una nueva reescritura si se da el caso). En el caso del
ATmega328P tiene una capacidad de 32KB.
• 1 kilobyte (a veces escrito como KB) es un grupo de 1024 bytes
(es decir, 8192 bits).
• en la placa Arduino no podemos usar toda la capacidad de la
memoria Flash porque existen 512 bytes (el llamado
“bootloader block”) ocupados ya por un código preprogramado
de fábrica (el llamado “bootloader” o “gestor de arranque”)
17 Lic. Marcelo Quispe M. LOGO
LAS MEMORIAS DEL MICROCONTROLADOR
Memoria SRAM: memoria volátil donde se alojan los datos que
en ese instante el programa (grabado separadamente en la
memoria Flash, recordemos) necesita crear o manipular para su
correcto funcionamiento. Estos datos suelen tener un contenido
variable a lo largo del tiempo de ejecución del programa y cada
uno es de un tipo concreto (es decir, un dato puede contener un
valor numérico entero, otro un número decimal, otro un valor de
tipo carácter… también pueden ser cadenas de texto fijas u otros
tipos de datos más especiales). Independientemente del tipo de
dato, su valor siempre será eliminado cuando se deje de alimentar
eléctricamente al microcontrolador. En el caso del ATmega328P
esta memoria tiene una capacidad de 2KB.
18 Lic. Marcelo Quispe M. LOGO
LAS MEMORIAS DEL MICROCONTROLADOR
Memoria SRAM: memoria volátil donde se alojan los datos que
en ese instante el programa (grabado separadamente en la
memoria Flash, recordemos) necesita crear o manipular para su
correcto funcionamiento. Estos datos suelen tener un contenido
variable a lo largo del tiempo de ejecución del programa y cada
uno es de un tipo concreto (es decir, un dato puede contener un
valor numérico entero, otro un número decimal, otro un valor de
tipo carácter… también pueden ser cadenas de texto fijas u otros
tipos de datos más especiales). Independientemente del tipo de
dato, su valor siempre será eliminado cuando se deje de alimentar
eléctricamente al microcontrolador. En el caso del ATmega328P
esta memoria tiene una capacidad de 2KB.
19 Lic. Marcelo Quispe M. LOGO
LAS MEMORIAS DEL MICROCONTROLADOR
Memoria EEPROM: memoria persistente donde se almacenan
datos que se desea que permanezcan grabados una vez apagado el
microcontrolador para poderlos usar posteriormente en siguientes
reinicios. En el caso del ATmega328P esta memoria tiene una
capacidad de 1 KB, por lo que se puede entender como una tabla
de 1024 posiciones de un byte cada una.
20 Lic. Marcelo Quispe M. LOGO
Microcontrolador Atmega 328P
21 Lic. Marcelo Quispe M. LOGO
Algunos pines tienen funciones principales:
Serial: 0 (Rx) y 1 (Tx). Usados para recibir (Rx) y transmitir (Tx) datos TTL,
en serie. Estos pines están conectados a los pines correspondientes del chip
FTDI USB-a-TTL Serie.
Interruptores externos: 2 y 3. Estos pines pueden ser configurados para
disparar un interruptor en un valor bajo, un margen creciente o decreciente, o
un cambio de valor. Mirar la función attachInterrupt()
http://www.arduino.cc/en/Reference
PWM: 3, 5, 6, 9, 10 y 11. Proporcionan salida PWM de 8 bits con la función
analogWrite(). http://www.arduino.cc/en/Reference
LED: 13. Hay un LED instalado en la placa arduino conectado al pin D13.
Cuando el pin 13 está a valor HIGH, el LED está encendido, cuando el pin está
a LOW, está apagado.
Reset. Pone esta línea a LOW para resetear el microcontrolador. Típicamente
usada para añadir un botón de reset a dispositivo que bloquean a la placa
principal.
Entradas analógicas. Arduino Duemilanove tiene 6 entradas analógicas AN0
a AN5 (analog pins).
22 Lic. Marcelo Quispe M. LOGO
23 Lic. Marcelo Quispe M. LOGO
APLICACIÓN AUTOMOTRIZ
24 Lic. Marcelo Quispe M. LOGO
APLICACIÓN AUTOMOTRIZ
25 Lic. Marcelo Quispe M. LOGO
APLICACIÓN AUTOMOTRIZ
26 Lic. Marcelo Quispe M. LOGO
APLICACIÓN AUTOMOTRIZ
27 Lic. Marcelo Quispe M. LOGO
APLICACIÓN AUTOMOTRIZ
28 Lic. Marcelo Quispe M. LOGO
Tipos posibles de una variable
El tipo “boolean”: las variables de este tipo solo pueden tener dos
valores: cierto o falso. Se utilizan para almacenar un estado de
entre esos dos posibles, y así hacer que el skech reaccione según
detecte en ellas uno u otro.
Boolean mivariable=true; o bien boolean mivariable=1;
El tipo “char”: el valor que puede tener una variable de este tipo es
siempre un solo carácter (una letra, un dígito, un signo de
puntuación...). Si lo que queremos es almacenar una cadena de
caracteres (es decir, una palabra o una frase) el tipo “char” no nos
sirve, deberemos usar otro tipo explicado posteriormente.
char mivariable='A';.
29 Lic. Marcelo Quispe M. LOGO
Tipos posibles de una variable
El tipo “byte”: el valor que puede tener una variable de este tipo es
siempre un número entero entre 0 y 255. Al igual que las variables
de tipo “char”, las de tipo “byte” utilizan un byte (8 bits) para
almacenar su valor y, por tanto, tienen el mismo número de
combinaciones numéricas posibles diferentes (256), pero a
diferencia de aquellas, los valores de una variable “byte” no
pueden ser negativos.
El tipo “int”: el valor que puede tener una variable de este tipo es
un número entero entre -32768 (-215) y 32767 (215-1), gracias a
que utilizan 2 bytes (16 bits) de memoria para almacenarse.
30 Lic. Marcelo Quispe M. LOGO
Tipos posibles de una variable
El tipo “long”: el valor que puede tener una variable de este tipo
para todos los modelos de placa (ya sean basadas en
microcontroladores de tipo AVR o de tipo ARM) es un número
entero entre -2.147.483.648 y 2.147.483.647 gracias a que utilizan
4 bytes (32 bits) de memoria para almacenarse. En este sentido,
los tipos “long” e “int” para placas de la familia ARM son
equivalentes.
El tipo “unsigned long”: el valor que puede tener una variable de
este tipo para todos los modelos de placa (ya sean basadas en
microcontroladores de tipo AVR o ARM) es un número entero
entre 0 y 4.294.967.295 (232-1).
31 Lic. Marcelo Quispe M. LOGO
Tipos posibles de una variable
El tipo “double”: Es un sinónimo exactamente equivalente del tipo
“float”, y por tanto no aporta ningún aumento de precisión
respecto a este (a diferencia de lo que pasa en otros lenguajes,
donde “double” sí que aporta el doble de precisión). Tanto una
variable de tipo “double” como una de tipo “float” ocupan cuatro
bytes de memoria.
El tipo “array”: este tipo de datos en realidad no existe como tal. Lo
que existen son arrays de variables de tipo “boolean”, arrays de
variables de tipo “int”, arrays de variables de tipo “float”, etc. En
definitiva: arrays de variables de cualquier tipo de los mencionados
hasta ahora. Un array (también llamado “vector”) es una colección
de variables de un tipo concreto que tienen todas el mismo y único
nombre, pero que pueden distinguirse entre sí
por un número a modo de índice 32 Lic. Marcelo Quispe M. LOGO
Cambio de tipo de datos (numéricos)
float variablefloat=3.4;
byte variablebyte=126;
void setup() {
Serial.begin(9600);
Serial.println(byte(variablefloat));
Serial.println(int(variablefloat));
Serial.println(word(variablefloat));
Serial.println(long(variablefloat));
Serial.println(char(variablebyte));
Serial.println(float(variablebyte));
}
void loop() {
//No se ejecuta nada aquí
}
33 Lic. Marcelo Quispe M. LOGO
Cambio de tipo de datos (numéricos)
float resultado;
int numerador=5;
int denominador=2;
void setup() {
Serial.begin(9600);
resultado= float numerador/denominador;
Serial.println(resultado);
}
void loop() {}
34 Lic. Marcelo Quispe M. LOGO
Cambio de tipo de datos (numéricos)
int numero=100;
long resultado;
void setup() {
Serial.begin(9600);
resultado= numero*1000;
Serial.println(resultado);
}
void loop() {}
35 Lic. Marcelo Quispe M. LOGO