Está en la página 1de 48

Microcontroladores

¿Qué son los microcontroladores?

Son circuitos digitales integrados “programables”, que contienen todos los


elementos de un computador, diseñados para controlar sistemas que realizan una
tarea específica, revolucionando las técnicas de diseño de “sistemas de control
industrial”. Al estar integrado en una sola pastilla (chips), de reducido tamaño,
suele estar incorporado al propio dispositivo que gobierna.
Aplicaciones comunes: Hornos microondas, lavarropas, sistema de inyección de
automóviles, teclados de PC, impresoras, videos, sistemas de comunicaciones,
procesos industriales etc.
Microcontroladores vs Microprocesadores
Microprocesadores: “sistema abierto”. Microcontrolador: “sistema cerrado” entradas y salidas
adaptadas eléctricamente a periféricos a controlar.
CPU de microcontroladores más simple con instrucciones orientadas a operación de entrada/salida.
Memoria RAM de datos de microcontroladores de menor capacidad, para control no se necesita
almacenar gran cantidad de información. Microprocesadores acceden a través de los buses, a
grandes bancos de memoria RAM externa.
En microcontroladores, la memoria ROM de programa también es limitada.
Los microcontroladores incluyen internamente el mapa de memoria y de puertos I/O, no son
necesarios circuitos decodificadores.
En los microprocesadores, la expansión de memoria RAM y ROM es más fácil porque dan acceso al
usuario a los buses de direcciones, datos y control de la CPU. Algunos modelos de
microprocontroladores lo pueden hacer a través de los puertos I/O.
La velocidad de operación de los microcontroladores es más lenta que los sistemas con
microprocesadores.
Los microcontroladores necesitan un sistema de desarrollo para cada familia, compuestos por un
paquete “software” con editor de textos, ensamblador y simulador de programas y al mismo tiempo,
se necesita de un “hardware”, para poder almacenar el “programa de aplicación”, en la memoria
ROM del microcontrolador.
Ventajas de los Microcontroladores
Circuito impreso más pequeño porque muchos componentes se encuentran dentro del
circuito integrado.
Bajo costo del sistema, dado que el reducido número de componentes.
Se eliminan los problemas de ruido eléctrico que pueden afectar a los sistemas con
microprocesador porque todo el sistema principal se encuentra en un solo encapsulado.
Se reduce notablemente el tiempo de desarrollo de un sistema con microcontrolador.
Inconvenientes de los Microcontroladores
Si una aplicación sobrepasa las características del microcontrolador (capacidad de memoria,
velocidad de proceso, número de entradas y salidas, etc.), se debe recurrir a un sistema con
microprocesador o una computadora completa.
Muchas aplicaciones requieren solamente entradas y salidas de tipo digital, pero si los
fenómenos que se necesitan controlar, son de naturaleza analógica (temperatura, presión,
voltaje, etc.) se debe disponer de un conversor analógico/digital fuera o dentro del mismo
microcontrolador.
Si es necesario medir periodos de tiempo, o generar temporizaciones en las salidas, tonos o
frecuencias, se deberá contar con uno o más contadores programables (timer).
Si la información obtenida se debe enviar a otro microcontrolador, computadora o red, el
microcontrolador de contar con un circuito de comunicaciones (RS232, I2C, USB, etc.).
Se dispone de microcontroladores con módulos PWM para los sistemas que requieran
control por modulación de ancho de pulso PWM (Phase Width Modulation), como el caso de
motores, cargas resistivas, etc.;
Cuando se actúa en tiempo real o los procesos no dan “espera”, se utiliza la técnica de
“interrupciones”; donde una señal externa activa una línea de interrupción y el
microcontrolador atiende una situación especial para luego regresar con la labor que estaba
realizando.
Arquitecturas de Microcontroladores
Arquitectura de Von Neuman: Se utilizó en los primeros microcontroladores. Datos e instrucciones
comparten el uso de la memoria principal y los buses de direcciones y de “datos e instrucciones”..

Arquitectura Harvard: Utilizada por los modernos microcontroladores. Son independientes la


memoria de instrucciones y la memoria de datos con propio sistema de bus de direcciones. La CPU es de
arquitectura RISC (juego de instrucciones reducido), donde la mayoría se ejecuta en un ciclo.
Memoria de programa
ROM con mascara: Se graba el chip durante el proceso de fabricación. Se justifica cuando se deben
grabar grandes cantidades de microcontroladores.
EPROM: Se graba con circuito electrónico (grabador) desde una PC. Tiene una ventana de cristal para
borrarla con rayos ultravioleta.
OTP: se graban una sola vez y no se pueden borrar. De bajo precio, se justifican para prototipos finales
y series cortas.
EEPROM: Se graban como las OTP y EPROM pero se borran eléctricamente con el mismo grabador,
hasta 1.000.000 de veces. Capacidad de memoria limitada, tiempo de grabado relativamente alto y
elevado consumo de energía.
FLASH: variante de las EEPROM de bajo consumo con posibilidad de escribir y borrar (unas 1000
veces) pero de mayor capacidad. Son recomendables en aplicaciones que sea necesario modificar el
programa a lo largo de la vida del producto a controlar sea por desgaste, optimización etc.

Memoria de datos
Debe ser de lectura/escritura (R/W), la más adecuada es la memoria “RAM estática” (SRAM), aunque
sea volátil con la tensión de alimentación. Algunos microcontroladores utilizan dos memorias de datos:
una EEPROM y otra SRAM.
Líneas o puertos de entradas y salidas (I/O)
Soportan los periféricos exteriores que controlan. Pueden actuar como entradas o salidas según se las
programe adaptándose con los periféricos, manejando información paralela agrupadas en “Puertas”.
Suministran corriente eléctrica en el estado binario alto, con el nivel de tensión aproximado al de la
fuente de alimentación, y absorben corriente en el estado binario bajo.
Existen modelos que soportan comunicación serie o protocolos de comunicación como I2C, USB etc.
Otros terminales son: entradas para alimentación de energía eléctrica (VDD (+) y Vss (-); una entrada
para el “reinicio” o “reset”(MCLR#) y dos entradas para el oscilador externo (osc1/CLKIN y
osc2/CLKOUT); una entrada para interrupción.
Principales Familias de Microcontroladores
Existen en el mercado varias marcas reconocidas por sus características, comercialización, soporte
técnico, difusión, usos en la industria etc.:
INTEL (Familia Intel 8051).
MOTOROLA (Derivados del microprocesador 6800).
PIC de MICROCHIP (12XXX, 16XXXX, 17XXX y 18XXX, dependiendo de la longitud de palabra de
instrucción que pueden manejar) de arquitectura Hardvard y tipo RISC.
PHILLIPS.
NATIONAL.
ATMEL con 3 grandes grupos de microcontroladores RISC (8051, AT91 y AVR) cuyas CPU llegan
hasta los 32 bits.
Basic Stamp: Basados microcontroladores PIC formando un sistema en una placa que les permite
programarlos en lenguaje “Basic Stamp”, fabricados por PARALLAX INC.
Arduino: Sistema en placa basados en microcontroladores Atmel.
Arduino
¿Qué es Arduino?

Placa de microcontrolador con puerto USB de conexión a computadora y otros


zócalos para conectar componentes electrónicos externos (motores, relés,
sensores de luz, diodos láser, altavoces, micrófonos, etc.).

Se alimenta mediante la conexión USB desde la computadora o con una


batería de 9V.

Se puede controlar directamente desde la PC o programarla con ella y luego


desconectarla para que trabaje en forma autónoma.
Inicios
Del estudiante del Instituto de Diseño Interactivo IVREA Massimo Banzi en 2005.
Nace de una necesidad de aprendizaje para los estudiantes de computación
y electrónica del instituto ya que era caro adquirir una placa de micro
controladores. Fue creado no solo para economizar la creación de proyectos
sino además ayudar a su escuela vendiendo sus placas a un precio accesible
(1 euro por unidad).
El nombre del proyecto viene del nombre del Bar di Re Arduino (Bar del Rey
Arduino) donde Massimo Banzi pasaba algunas horas. El rey Arduino fue rey de
Italia entre los años 1002 y 1014.
Inicialmente era una simple placa de circuitos, donde se conectaban a un
micro controlador un conjunto de resistencias para conectar sensores simples y
aún no contaba con el soporte de algún lenguaje de programación para
manipularla.
Aportes posteriores
Hernando Barragán (Colombia) entorno de programación del procesador (Wirin)
David Mellis (USA) mejora interfaz de software.
David Cuartielles (España) mejora interfaz de hardware (microcontroladores
de soporte y memoria
Tom Igoe (USA) agrega puertos USB para poder conectarla a
un ordenador

Su distribución comenzó de manera gratuita dentro de las facultades de electrónica y, al


ver su gran aceptación, pensaron en su distribución a nivel mundial, primero en Italia,
luego en España, hasta colocarse en el número uno de herramientas de aprendizaje
para el desarrollo de sistemas autómatas, siendo además muy económica.
Diseño abierto y clones
Arduino es un diseño de hardware de código abierto.
Clones.
El nombre Arduino está reservado por los creadores originales
Clones llevan el nombre duino al final de su nombre (Freeduino, DFRduino,
etc.)
Software fácil de usar disponible libremente para Windows, Mac y Linux, sin
costo.
Herramientas de desarrollo de software también gratuitas.
Gran comunidad de aficionados al montaje, programación y electrónica
dispuestos a compartir sus conocimientos y experiencia en Internet.
Diferentes diseños de placas Arduino para diferentes aplicaciones y todas se
pueden programar desde el mismo software de desarrollo.
Alimentación y datos

La fuente de alimentación: 7 a 12 voltios


Aplicaciones portátiles: pila de 9 V

Mientras se esté montando su proyecto, se la alimenta desde el USB por razones


de comodidad y cuando esté listo podrá alimentar la placa de forma
independiente con una fuente de alimentación externa o con una pila de 9V al
conector de alimentación.

Conexión USB para pasar datos entre la placa Arduino y su computadora en


ambos sentidos.
Conectores y Placas Shield
Filas de conectores en los bordes de la placa.
Una fila corresponde a pines digitales (on/off),
aunque cualquier pin marcado con PWM
puede ser utilizado también como salida
analógica.
Otra fila posee pines con diferentes tensiones
de alimentación, otra con entradas analógicas
y otra con pines de comunicación.
Estos conectores están organizados para que
las placas shields puedan enchufarse a la
placa base de forma superpuesta.
Shields para diferentes propósitos: Conexión a
redes Ethernet, Displays LCD y pantallas
táctiles, XBee (comunicaciones de datos
inalámbricas), Sonido, Control de motores,
Seguimiento por GPS y otras.
Placas de pruebas Protoboard

Los proyectos más sencillos se pueden construir sin soldar, utilizando las
placas de pruebas protoboard; que consisten en un bloque de plástico
con agujeros y láminas metálicas de conexión por detrás. Los
componentes electrónicos se insertan en los orificios de la parte superior.
Para montar diseños permanentes deberá utilizar una placa de circuito
impreso.
Componentes de la placa Arduino

Microcontrolador

Fuente de alimentación

Conexiones eléctricas

Entradas analógicas

Conexiones Digitales
Microcontrolador

Arduino UNO o Duemilanove: ATmega328 de 28 pines


Arduino MEGA: ATmega 2560 de 100 pines.

El cerebro es la CPU (unidad central de procesamiento), que controla todo


lo que ocurre dentro del dispositivo, obteniendo y ejecutando las
instrucciones de programa almacenadas en la memoria Flash no volátil y
almacenando datos temporales en la RAM volátil.
La memoria EEPROM se asemeja a la memoria Flash y no es volátil; ya que
no se pierde al apagar y encender el dispositivo. Se utiliza para almacenar
datos que no queremos perder en caso de reinicio o de fallo de la
alimentación.
Microcontrolador

El componente plateado encima y a la izquierda del microcontrolador es


un cristal de cuarzo, el cual oscila 16 millones de veces por segundo,
pudiendo el microcontrolador realizar una operación en una o varias de
ellas.
Presionando el pulsador de Reset (reinicio), se envía un impulso lógico al
pin Reset del microcontrolador, haciendo que inicie su programa desde
cero y borre su memoria RAM. Cualquier programa se conserva debido a
que se guardan en la memoria Flash no volátil (memoria que recuerda aún
cuando el dispositivo no está encendido).
Entradas de programación

A la derecha del procesador se encuentra el conector de programación


serie, formado por seis pines, que permite programar la placa Arduino sin
utilizar el puerto USB, el cual no se suele utilizar ya que que disponemos de
una conexión USB y del software que facilita su utilización.
En la parte superior izquierda de la placa, junto al conector USB, se
encuentra el chip de interfaz USB; el cual convierte los niveles de tensión
de señal del estándar USB a niveles que pueden ser utilizados directamente
por la placa Arduino.
Fuente de alimentación

Regulador de tensión regula a 5 V estabilizados cualquier tensión (entre 7 y


12 voltios) que se suministre desde el conector de alimentación. Estos 5 V
(junto con 3V, 6V, 9V y 12V) es una de las tensiones estándar en
electrónica. 3, 6 y 9V todos ellos son múltiplos de 1,5V (la tensión de una
pila alcalina); y 5 V porque, en los primeros días de la informática, los chips
usaban tecnología llamada TTL (Transistor-Transistor Logic, lógica
transistor-transistor), que requería una tensión entre 4,5 V y 5,5 V. Con lo
cual, 5 V se convirtió en el estándar de tensión en electrónica digital.
Conexiones Eléctricas

Cada pin de los conectores está identificado con su nombre impreso.


Pin Reset (reiniciar) cumple la misma función que presionar el botón Reset;
inicia el microcontrolador, haciendo que comience su programa desde el
principio, estableciendo momentáneamente este pin alto (conectándolo
a +5V).
El resto de los pines de esta sección proporcionan distintas tensiones (3,3V,
5V, 9V y GND o tierra, que significa cero voltios, que es la tensión de
referencia con la que se comparan el resto de tensiones de la placa.
Cada una de las conexiones de alimentación tiene un límite de corriente
máxima que puede suministrar; son 50 mA para la alimentación de 3.3 V y
alrededor de 300 mA para los 5 V.
Entradas analógicas

ANALOG IN, se utilizan para medir la tensión que se les conecte, de forma
que el valor se pueda utilizar en los programas (sketches).
Miden una tensión y no una corriente, por ellos sólo fluirá una pequeña
corriente.
Aunque aparecen etiquetadas como entradas analógicas, también
pueden utilizarse como entradas o salidas digitales.
Entradas digitales

Se pueden utilizar como entradas o salidas.


Como salida, se comportan como las tensiones de alimentación, salvo que todas
son de 5 V y se pueden activar o desactivar desde el programa (sketch). Si los
activamos tendrán 5 V y si los desactivamos tendrán 0 V.
Al igual que con los pines de alimentación, no exceder su máxima capacidad de
corriente, 50 mA a 5 V (suficiente para encender un LED, pero no para manejar
directamente un motor eléctrico o u relé).
Si no utilizamos una resistencia en serie con el LED, podríamos quemarlo ya que
los LEDs tienen una resistencia muy baja y fluirá una corriente muy alta.
Un LED necesita unos 10 mA para iluminarse razonablemente. La placa Arduino
puede suministrar 50 mA, pero pueden quemarse con más de 30 mA.
En los LEDs siempre habrá alrededor de 2V entre sus pines. Podemos utilizar la ley
de Ohm para averiguar el valor correcto de la resistencia serie a utilizar.
Sabiendo que, cuando está activado, el pin de salida suministra 5 V y que 2 V
son "utilizados" por el LED; deja 3 V (5 - 2) circulando a través de nuestra
resistencia de limitación de corriente y obtenemos una resistencia serie de 300
Ohm, o 270 Ohm normalizados.
Entradas digitales

Podemos configurar algunas de estas conexiones digitales para que sean


entradas, en cuyo caso, su funcionamiento será parecido a una entrada
analógica, salvo que nos indicará si la tensión en el pin está o no por
encima de un umbral de aproximadamente 2,5 V.
Algunas de las conexiones digitales están rotuladas PWM porque se
pueden utilizar para proporcionar una tensión de salida variable, en lugar
de simplemente 5 V o 0 V.
En el lado izquierdo hay otra conexión GND y una conexión denominada
AREF, que se utiliza para escalar las lecturas de las entradas analógicas.
Puesta en marcha

De fábrica, Arduino suele traer un programa de muestra


presinstalado llamado Blink que hará parpadear un pequeño LED
en la placa para verificar que ésta funciona. Este LED (rotulado
con una L) está conectado al pin digital 13, limitándolo a que sólo
pueda utilizarse como salida, pero como el LED utiliza una
pequeña cantidad de corriente, podemos conectar otras salidas a
ese conector.
Para que Arduino funcione se necesita proporcionar la
alimentación al puerto USB (Bus Serie Universal) desde la PC,
utilizando un cable USB tipo A a tipo B como el que se utiliza para
conectar las impresoras.
Al energizar Arduino, el LED de la placa debe parpadear cada dos
segundos. Además, si se hace clic en el botón Reset (reinicio) el
LED debería parpadear momentáneamente. Si el LED no
parpadea, puede ser que la placa no tenga preinstalado el
programa Blink. Habrá que a instalar ese programa.
Software de programación

La página web de Arduino, www.arduino.cc/es para la versión en


español, contiene la última versión del software con:

Controlador USB: permite a la computadora comunicarse con el


puerto USB de la placa Arduino y que se utilizará para la
programación y para enviar mensajes
Entorno de desarrollo Arduino: que es el programa que se ejecuta
en la computadora y permite crear los programas y descargarlos
en la placa.
Software de programación

En la página de Arduino, en la pestaña Descarga seleccionamos


descarga para Windows del archivo zip que contiene el software y
lo descomprimimos en C:\Archivos de programa\Arduino.
Ahora se pueden instalar los controladores USB: Conectamos la
placa Arduino y esperamos hasta que el proceso automático de
Windows de instalación del driver falle. Luego abrimos el
Administrador de dispositivos de Windows, buscamos Otros
dispositivos/USB device y hacemos click con el botón derecho
sobre Arduino YY (Com xx), donde YY es la versión de la placa
(UNO, MEGA, etc.) y elegimos actualizar controlador. Clickeamos
en Instalar desde una lista específica y saldrá el directorio donde
está instalado Arduino, que debe ser algo parecido a C:\Archivos
de programa\arduino-1.0\arduino-1.0\drivers. En esta carpeta
seleccionamos el archivo ¨ArduinoYY.inf\¨ con el que Windows
finalizará la instalación del driver.
Software de programación

Una vez instalado el software Arduino, debemos realizar un par de


ajustes:

Conectar Arduino al equipo mediante el puerto USB para


seleccionar el puerto serie.
El puerto serie se establece desde el menú Herramientas (Tools) y
se puede configurar a COM3.

También desde Tools seleccionamos la placa que vamos a utilizar


Primer programa: Led
intermitente (Blink)
Cargar el sketch (programa) Blink en el software Arduino. Podemos
cargarlo usando el menú File.
Primer programa: Led
intermitente (Blink)
Cargar el sketch (programa) Blink en el software Arduino. Podemos
cargarlo usando el menú File.
Primer programa: Led
intermitente (Blink)
Los comentarios no son realmente parte de del programa ni
son necesarios para su funcionamiento, pero explican lo que
está haciendo el programa. Éstos pueden ser de una sola línea
que comienzan tras // y continúan hasta el final de la línea, o
pueden ser comentarios de varias líneas que comienzan con /*
y finalizan algunas líneas más abajo con */.
Primer programa: Led
intermitente (Blink)

int ledPin = 13; // LED conectado al pin digital 13


void setup()
{
pinMode(ledPin, OUTPUT);
}
void loop()
{
digitalWrite(ledPin, HIGH); // enciende el LED
delay(1000); // espera un segundo
digitalWrite(ledPin, LOW); // apaga el LED
delay(1000); // espera un segundo
}
Leer un sensor: DHT11 sensor
de temperatura y humedad
Es un sensor de humedad y temperatura que utiliza un sensor de capacidad para medir la
humedad y un termistor para medir la temperatura del aire que lo rodea.
Mide temperaturas entre 0 y 50°C con precisión de ±2°C.
Mide humedad entre 20% y 90% con precisión de 5% con períodos de muestreo de 1 segundo.
Se presenta en una pequeña caja de plástico de 15.5mm x 12mm x 5.5mm con una cara en la
cual tiene una rejilla que le permite obtener las lecturas del aire que lo rodea. Si se requiere
mayor precisión podemos trabajar con su hermano, el sensor DHT22.
Tiene cuatro pines de los cuales solo usaremos el pin 1,2 y 4
DHT11: conexión al Arduino
Leer un sensor: programa
/* void loop() {
* // Lee el valor de la entrada analógica del pin 0
* Lee el sensor DHT11 float t = dht.readTemperature();
* y saca un valor proporcional por tres salidas analógicas float h = dht.readHumidity();
(PWM)
Serial.println("Temperatura");
*
Serial.println(t); // Muestra valor en la compu
*/
delay(20);
#include <avr/pgmspace.h>
Serial.println("Humedad");
#include <stdlib.h>
Serial.println(h);
#include "DHT.h"
// Escribe en las salidas digitales 22 24 26
#define DHTPIN 2 // Pin al que esta conectado el DHT11
if (t>28) digitalWrite(22,HIGH);
#define DHTTYPE DHT11 // Tipo de sensor en este caso DHT11
else digitalWrite(22,LOW);
DHT dht(DHTPIN,DHTTYPE);
if (t>27) digitalWrite(24,HIGH);
int val=0;
else digitalWrite(24,LOW);
void setup() {
if (t>26) digitalWrite(26,HIGH);
Serial.begin(9600); //setea puerto serie
else digitalWrite(26,LOW);
dht.begin();
delay(1000);
}
}
Tipos de variables en Arduino
Tipos de datos en C

Tipo Memoria (byte) Rango Notas

boolean 1 Verdadero o falso (0 or 1)

Se utiliza para representar un código de carácter ASCII (es decir,


char 1 -128 a +128 “A” se representa como 65). Normalmente, sus números negativos
no se utilizan.

byte 1 O a 255
int 2 -32,768 a +32,767

Se pueden utilizar para disponer de precisión extra, cuando no se


necesitan números negativos. Deben utilizarse con cuidado ya que
unsigned int 2 0 a 65,536
las operaciones aritméticas con ints pueden producir resultados
inesperados.

long -2,147,483,648 a
4 Sólo se necesitan para representar números muy grandes.
+2,147,483,647
unsigned long 4 O a 4,294,967,295 Ver “unsigned int”.
-3.4028235E+38 a
float 4
+3.4028235E+38

Normalmente, esto serían 8 bytes y mayor precisión que los


valores “float”, con un rango superior. Sin embargo, en Arduino
double 4 igual que float
son iguales a “float”.
Controlar un servomotor

El servomotor es un tipo de accionador que, a diferencia de otros tipos de


motores en los que controlamos la velocidad de giro, indicamos
directamente el ángulo deseado y el servo se encarga de posicionarse en
este ángulo.
Rango de movimiento de entre 0 a 180º, es decir, no son capaces de dar la
vuelta completa (topes internos que limitan el rango de movimiento)
Internamente consta de un mecanismo reductor, por lo que proporcionan
un alto par y un alto grado de precisión (incluso décimas de grado). Por
contra, las velocidades de giro son pequeñas frente a los motores de
corriente continua.
Admiten una tensión de alimentación entre 4,8V a 7,2V, siendo el valor más
adecuado es 6V. Con tensiones inferiores el motor tiene menos fuerza y
velocidad y con tensiones superiores a 6,5V empiezan a oscilar demasiado.
Controlar un servomotor

Internamente están constituidos por un motor de corriente continua,


acoplado a un reductor para reducir la velocidad de giro y la
electrónica para controlar su posición.
Se dispone de un potenciómetro unido al eje del servo, que le
permite conocer la posición del eje. Esta información es tratada por
un controlador integrado que se encarga de actuar sobre el motor
para alcanzar la posición deseada.
Controlar un servomotor
La comunicación de la posición deseada se realiza mediante
la transmisión de un señal pulsada con periodo de 20ms. El
ancho del pulso determina la posición del servo.
La relación entre el ancho del pulso y el ángulo depende del
modelo del motor. Por ejemplo, algunos modelos responden
con 0º a un pulso de 500 μs, y otros a un pulso de 1000 μs
En general, en todos los modelos:
Un pulso entre 500-1000 μs corresponde con 0º
Un pulso de 1500 μs corresponde con 90º (punto neutro)
Un pulso entre 2000-2500 μs corresponde con 180º
Por tanto, variando la señal en microsegundos podemos
disponer de una precisión teórica de 0.18-0.36º, siempre que
la mecánica del servo acompañe.
Controlar un servomotor: conexión a Arduino
Controlar un servomotor: programa
// Incluímos la librería para poder controlar el servo
#include <Servo.h>;
// Declaramos la variable para controlar el servo
Servo servoMotor;
char Angulo;
void setup() {
// Iniciamos el monitor serie para mostrar el resultado
Serial.begin(9600);
// Iniciamos el servo para que empiece a trabajar con el
pin 9
servoMotor.attach(9);
}
Controlar un servomotor
loop() {
if (Angulo == '6' ) { //Si la posición es 6
if (Serial.available()) //¿hay algo que leer del USB?
servoMotor.write(100); //Mover el servo a la posición 6 (100 grados)
{
delay(500); //Esperamos medio segundo
Angulo=Serial.read(); //Leer una posición
};
if (Angulo == '1' ) { //Si la posición es 1
if (Angulo == '7' ) { //Si la posición es 7
servoMotor.write(0); //Mover el servo a la posición 1 (0 grados)
servoMotor.write(120); //Mover el servo a la posición 7 (120 grados)
delay(500); //Esperamos medio segundo

}; delay(500); //Esperamos medio segundo

if (Angulo == '2' ) { //Si la posición es 2 };

servoMotor.write(20); //Mover el servo a la posición 2 (20 grados) if (Angulo == '8' ) { //Si la posición es 8

delay(500); //Esperamos medio segundo servoMotor.write(140); //Mover el servo a la posición 8 (140 grados)
}; delay(500); //Esperamos medio segundo
if (Angulo == '3' ) { //Si la posición es 3 };
servoMotor.write(40); //Mover el servo a la posición 3 (40 grados)
if (Angulo == '9' ) { //Si la posición es 9
delay(500); //Esperamos medio segundo
servoMotor.write(160); //Mover el servo a la posición 9 (160 grados)
};
delay(500); //Esperamos medio segundo
if (Angulo == '4' ) { //Si la posición es 4
};
servoMotor.write(60); //Mover el servo a la posición 4 (60 grados)
if (Angulo == '0' ) { //Si la posición es 0
delay(500); //Esperamos medio segundo
servoMotor.write(180); //Mover el servo a la posición 0 (180 grados)
};
delay(500); //Esperamos medio segundo
if (Angulo == '5' ) { //Si la posición es 5

servoMotor.write(80); //Mover el servo a la posición 5 (80 grados) };

delay(500); //Esperamos medio segundo };

}; }
Sensor ultrasónico HC-SR04 en Arduino
En muchos proyectos, es necesario sensar el entorno, saber si en frente hay un
obstáculo y a que distancia se encuentra, el sensor HC-SR04 nos permite hacer eso.
Su funcionamiento consiste en emitir un sonido ultrasónico de 40 KHz por uno de sus
transductores, y esperar que el sonido rebote de algún objeto presente, el eco es
captado por el segundo transductor.
Sensor ultrasónico HC-SR04 en Arduino
Luego, la distancia es proporcional al tiempo que demora en llegar el eco.

Donde Velocidad es la del sonido (340m/s), pero usaremos las unidades en cm/μs
pues trabajaremos en centímetros y microsegundos, tiempo es el tiempo que
demora en llegar el ultrasonido al objeto y regresar al sensor, y la distancia
recorrida es dos veces la distancia hacia el objeto, reemplazando en la formula
tenemos:
Sensor ultrasónico HC-SR04 conexión a Arduino
Sensor ultrasónico HC-SR04 programación
void loop()
const int Trigger = 2; //Pin digital 2 para el
Trigger del sensor {
const int Echo = 3; //Pin digital 3 para el long t; //timepo que demora en llegar el eco
Echo del sensor
long d; //distancia en centimetros

void setup() { digitalWrite(Trigger, HIGH);

Serial.begin(9600);//iniciailzamos la delayMicroseconds(10); //Enviamos un pulso de 10us


comunicación digitalWrite(Trigger, LOW);
pinMode(Trigger, OUTPUT); //pin como t = pulseIn(Echo, HIGH); //obtenemos el ancho del pulso
salida
pinMode(Echo, INPUT); //pin como d = t/59; //escalamos el tiempo a una distancia en cm
entrada Serial.print("Distancia: ");
digitalWrite(Trigger, LOW);//Inicializamos Serial.print(d); //Enviamos serialmente el valor de la distancia
el pin con 0
Serial.print("cm");
}
Serial.println();
delay(100); //Hacemos una pausa de 100ms
}

También podría gustarte