Automatismos Con Arduino (Básico) - 2020.1
Automatismos Con Arduino (Básico) - 2020.1
HOJA DE EVALUACIÓN
aceptable
Excelente
Requiere
Regular
mejora
Bueno
No
CRITERIOS DE EVALUACIÓN
D Presenta adecuadamente el informe del laboratorio 4.0 3.0 2.0 1.0 0.0
CRITERIOS DE EVALUACIÓN
NOMBRE DE INTEGRANTES Nota
A B C D E F
MM6160
SISTEMAS MECATRÓNICOS INDUSTRIALES Página 3 / 12
Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D
1. Objetivo
• Asegúrese que usted y sus compañeros de grupo tienen los implementos necesarios de
seguridad. Recuerde que va a trabajar con elementos de aire comprimido, electricidad y fluidos de
alta presión.
3. RECURSOS
EQUIPOS, INSTRUMENTOS Y ACCESORIOS:
a. Tarjeta Arduino UNO.
b. Software Arduino.
c. Componentes eléctricos (leds, resistencias, potenciómetros, bocinas, sensores,etc).
MM6160
SISTEMAS MECATRÓNICOS INDUSTRIALES Página 4 / 12
Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D
II. INFORMACIÓN
Para poner a funcionar tú Arduino, es necesario que descargues primero la versión más actualizada del
software de Arduino, desde https://www.arduino.cc/en/Main/Software (software gratuito) Este software
conocido como “Arduino IDE”, te permitirá programar la tarjeta para que haga exactamente lo que tú
quieras. Es similar a un procesador de palabras, pero para escribir programas con una computadora.
Un circuito es básicamente un ciclo eléctrico con un punto de inicio y un punto final – con cualquier
número de componentes entre dichos puntos. Los circuitos pueden incluir resistencias, diodos,
inductores, sensores de todas las formas y tamaños, motores, y cualquier otro tipo entre cientos de miles
de componentes. Los circuitos se dividen generalmente en tres categorías: circuitos analógicos, circuitos
digitales o circuitos de señales mixtas.
Si se desea iluminar un LED utilizando la placa Arduino como fuente de alimentación, hay que tener en
cuenta que los 5 V que proporciona Arduino son demasiados para una caída de tensión de unos 1,7 V
que tienen los LEDs usuales. Es necesario, por lo tanto añadir una resistencia en serie al circuito para
que el LED soporte los 5 V de suministrados. La pregunta que surge es:
¿Cómo calculo la resistencia necesaria?
En la figura debajo se muestra el circuito correspondiente, del que deseamos calcular la resistencia R.
MM6160
SISTEMAS MECATRÓNICOS INDUSTRIALES Página 6 / 12
Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D
Por tratarse de dos dispositivos en serie, sabemos que la caída de potencial total (5 V) será igual a la
suma de las caídas de potencial de la resistencia (V2) y del LED (V1). Por otro lado, sabemos por la ley
de Ohm que la caída de potencial de la resistencia es el producto de la intensidad de corriente (0,015 A
para el LED) y la resistencia (V2=IxR). Por tanto, 5 = 1,7 + Rx 0,015. De donde, despejando R, se obtiene
R = 220 Ω.
Siguiendo el esquema de la Figura Superior es muy fácil realizar el montaje en la placa de pruebas. Para
ello conectamos el pin digital número 13 de la placa Arduino (que debe encontrarse desconectada del
PC) con la resistencia de 220 Ω. El otro extremo de la resistencia lo unimos a la parte positiva del LED,
que es la pata más larga, como puede apreciarse en la Placa Arduino. Por su parte, la pata negativa del
LED se conecta mediante un cable a tierra (GND) en la placa Arduino. El resultado final debe ser similar
al de la Figura debajo.
MM6160
SISTEMAS MECATRÓNICOS INDUSTRIALES Página 7 / 12
Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D
SOLUCION:
void setup() { //comienza la configuración
pinMode(13, OUTPUT); //Configura el pin 13 como de salida
} //termina la configuración
SOLUCIÓN 1:
int tiempo=100; //declara una variable como entero y de valor 100
void setup() { //comienza la configuración
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
}
SOLUCIÓN 2:
int iTiempo=100;
int iLed;
void setup() { //comienza la configuración
for (iLed=2;iLed<7;iLed++) {
pinMode (iLed, OUTPUT);
}
}
void secuencia() {
for (iLed=2;iLed<7;iLed++) {
digitalWrite (iLed, HIGH);
delay (iTiempo);
digitalWrite (iLed, LOW);
delay (iTiempo);
}
}
void loop() {
secuencia();
}
MM6160
SISTEMAS MECATRÓNICOS INDUSTRIALES Página 10 / 12
Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D
SOLUCION 3:
int aiLeds[]={2,3,4,5,6};// Declara variables tipo lista de valores
int iTiempo=100;
int iRecorre=0;
void setup() { //comienza la configuración
for (iRecorre=0;iRecorre<5;iRecorre++) {
pinMode (aiLeds[iRecorre], OUTPUT);
}
}
void secuencia() {
for (iRecorre=0;iRecorre<5;iRecorre++) {
digitalWrite (aiLeds[iRecorre], HIGH);
delay (iTiempo);
digitalWrite (aiLeds[iRecorre], LOW);
delay (iTiempo);
}
}
void loop() {
secuencia();
}
MM6160
SISTEMAS MECATRÓNICOS INDUSTRIALES Página 11 / 12
Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D
SOLUCION:
int aiLeds[]={2,3,4,5,6,7};
int iTiempo1=3000;
int iTiempo2=1000;
int iRecorre;
void setup() {
for (iRecorre=0;iRecorre<6;iRecorre++) {
pinMode (aiLeds[iRecorre],OUTPUT);
}
}
void loop () {
digitalWrite (aiLeds[0],HIGH); // Rojo 1
digitalWrite (aiLeds[5],HIGH); // Verde 2
delay (iTiempo1); // (3s)
digitalWrite (aiLeds[5],LOW); // Verde 1
digitalWrite (aiLeds[4],HIGH); // Ambar 2
delay (iTiempo2); // (0.5s)
digitalWrite(aiLeds[0],LOW); // Rojo 1
digitalWrite (aiLeds[4],LOW); // Ambar 2
digitalWrite (aiLeds[2],HIGH); // Verde 1
digitalWrite (aiLeds[3],HIGH); // Rojo 2
delay (iTiempo1); // (3s)
digitalWrite (aiLeds[2],LOW); // Verde 1
digitalWrite(aiLeds[1],HIGH); // Ambar 1
delay (iTiempo2);
digitalWrite(aiLeds[1],LOW); // Ambar 1
digitalWrite(aiLeds[3],LOW); // Rojo 2
}
MM6160
SISTEMAS MECATRÓNICOS INDUSTRIALES Página 13 / 12
Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D
SOLUCION 1:
int corto=100; //Declara la variable de argumento entero "corto" y la inicializa con el valor 100 (letra S)
int pausa=300;//tiempo entre letra y letra
int largo=300; //variable de argumento entero "largo" y la inicializa con el valor 300 (letra O)
int espera=1000;//variable argumento entero "espera" y la inicializa con el valor 1000 (tiempo entre SOS-SOS)
int n=0;
int zumb=13; //PIN digital al que conectamos el zumbador
void loop(){
for(n=0;n<3;n++){ //Iteración en la que la variable n comienza con el valor 0
digitalWrite(zumb, HIGH); // y va aumentando en 1 en cada ciclo hasta que toma el valor 2,
delay(corto); // con lo que las instrucciones comprendidas entre los corchetes
digitalWrite(zumb,LOW); // se repiten 3 veces
delay(corto);
}
delay(pausa); //Tiempo entre letras
for(n=0;n<3;n++){
digitalWrite(zumb, HIGH);
delay(corto);
digitalWrite(zumb,LOW);
delay(corto);
}
delay(espera); //Tiempo hasta repetir SOS de nuevo
}
SOLUCION 2:
int tcorto=100;
int tlargo=300;
int pausa=300;
int espera=1000;
int n=0;
delay (tcorto);
}
}
SOLUCION 1:
int leds[]={5,6,7,8,9,10,11};
int n=0;
int tiempo=50;
void loop() {
for (n=0;n<7;n++) {
digitalWrite (leds[n],HIGH);
delay(tiempo);
digitalWrite (leds[n],LOW);
delay(tiempo);
}
for (n=6;n>=0;n--) {
digitalWrite (leds[n],HIGH);
delay(tiempo);
digitalWrite (leds[n],LOW);
delay(tiempo);
}
}
void loop() {
for (n=5;n<12;n++) {
digitalWrite (n,HIGH);
delay(tiempo);
digitalWrite (n,LOW);
delay(tiempo);
}
for (n=11;n>=5;n--) {
digitalWrite (n,HIGH);
delay(tiempo);
digitalWrite (n,LOW);
delay(tiempo);
}
}
MM6160
SISTEMAS MECATRÓNICOS INDUSTRIALES Página 18 / 12
Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D
void loop() {
for (n=0;n<7;n++) {
digitalWrite (leds[n],HIGH);
delay(tiempo);
digitalWrite(leds[n+1],HIGH);
delay(tiempo);
digitalWrite (leds[n],LOW);
delay(tiempo*2);
}
for (n=6;n>=0;n--) {
digitalWrite (leds[n],HIGH);
delay(tiempo);
digitalWrite(leds[n-1],HIGH);
delay(tiempo);
digitalWrite (leds[n],LOW);
delay(tiempo*2);
}
}
MM6160
SISTEMAS MECATRÓNICOS INDUSTRIALES Página 19 / 12
Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D
La siguiente imagen muestra el anverso y el reverso de un botón. Las flechas azules indican
aquellas clavijas que se encuentran conectadas internamente, es decir, que su resistencia medida
con un multímetro es nula.
Figura A: Pulsador
Se trata de encender y apagar 1 led al accionar un pulsador. El pulsador debe estar conectado al
pin 2, y el led al pin 13.
Figura D: Montaje
Ponemos unir con un cable desde el PIN 5V a la pata del pulsador de la pata opuesta ponemos
otro cable tierra GMD, Para no provocar un cortocircuito insertamos por medio una resistencia
suficientemente grande por ejemplo de 1K/10K Ohm. En este circuito podemos medir la tensión
que hay entre el pulsador y la resistencia, cuando el circuito este abierto ahí habrá 0 o cinco voltios
según el orden en que hayamos puesto nuestros componentes.
• Si el orden es V5 – Pulsador – Resistencia – GMD o “tierra” (montaje PULL DOWN) (bajar), entre
pulsador y resistencia habrá 0 voltios si está abierto el circuito y 5 si está cerrado
• Si el orden es V5 – Resistencia – Pulsador – GMD o “tierra” (montaje PULL UP) (levantar), entre
la resistencia y el pulsador habrá 5 voltios si está abierto el circuito y 0 si está cerrado
SOLUCION 1:
const int buttonPin = 2; // the number of the pushbutton pin
const int ledPin = 13; // the number of the LED pin
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
}
void loop() {
buttonState = digitalRead(buttonPin);
// check if the pushbutton is pressed. If it is, the buttonState is HIGH:
if (buttonState == HIGH) {
// turn LED on:
digitalWrite(ledPin, HIGH);
}
else {
// turn LED off:
digitalWrite(ledPin, LOW);
}
}
MM6160
SISTEMAS MECATRÓNICOS INDUSTRIALES Página 22 / 12
Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D
SOLUCION 1:
int cadenaleds[]={5,6,7,8};
int pulsador=4;
int tiempo=200;
int n=0;
void setup() {
for(n=0;n<4;n++) {
pinMode (cadenaleds[n],OUTPUT);
}
pinMode (pulsador,INPUT);
}
void flash() {
for (n=0;n<4;n++) {
digitalWrite (cadenaleds[n],HIGH);
delay (tiempo);
digitalWrite (cadenaleds[n],LOW);
delay (tiempo);
}
}
void loop() {
if (digitalRead(pulsador)==HIGH) {
flash();
}
}
SOLUCION 2:
int leds[]={5,6,7,8};
int tiempo=200;
int pulsador=4;
int n=0;
int valorpulsador=0;
void setup(){
for(n=0;n<4;n++){
pinMode(leds[n],OUTPUT);
}
pinMode(pulsador,INPUT);
Serial.begin(9600);
}
void monitoriza(){
Serial.print("El valor del pulsador es ...");
Serial.println(valorpulsador);
delay(1000);
}
void secuencia(){
for(n=0;n<4;n++){
digitalWrite(leds[n],HIGH);
MM6160
SISTEMAS MECATRÓNICOS INDUSTRIALES Página 24 / 12
Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D
delay(tiempo);
digitalWrite(leds[n],LOW);
delay(tiempo);
}
}
void loop(){
valorpulsador=digitalRead(pulsador);
monitoriza();
if (valorpulsador==1){
secuencia();
}
}
MM6160
SISTEMAS MECATRÓNICOS INDUSTRIALES Página 25 / 12
Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D
SOLUCION 1:
int leds[]={5,6,7,8,9};
int n=0;
int tiempo=200;
int zumbador=10;
int pulsador=11;
void compruebaacierto(){
if(digitalRead(pulsador)==HIGH && n==2) {
digitalWrite(zumbador,HIGH);
delay (1000);
digitalWrite(zumbador,LOW);
tiempo=tiempo-20;
if(tiempo<10){
tiempo=200;}
}
}
void loop () {
for(n=0;n<5;n++) {
digitalWrite(leds[n],HIGH);
delay(tiempo);
compruebaacierto();
digitalWrite(leds[n],LOW);
delay(tiempo);
}
}
MM6160
SISTEMAS MECATRÓNICOS INDUSTRIALES Página 27 / 12
Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D
Únicamente debemos tener en cuenta que el pin digital 13 de la placa Arduino no es capaz de
realizar PWM, ya que, como indica la placa, no contiene el símbolo ~. Por lo tanto, en lugar del pin
13, se ha elegido el pin 11, que sí contiene el símbolo ~.
Para este proyecto se trata aumentar y disminuir la luminosidad de un led usando la capacidad de
ofrecer una tensión variable que da una salida analógica. Para ello se conecta un led al pin 11 y se
provoca que su luminosidad pase de mínima a máxima, para luego ir de máxima a mínima. Los
valores de salidas analógicas van del mínimo 0 al máximo 255.
void setup(){
// en el setup no hay nada que configurar
}
void loop(){
for (luminosidad = 0 ; luminosidad <= 255; luminosidad=luminosidad+3) // (desde min a un max)
{
analogWrite(led, luminosidad); // ilumina el led con el valor asignado a luminosidad (entre 0 y 255)
delay(30); // espera 30 ms para que se vea el efecto
}
Figura A: Potenciómetro
Figura C: Montaje
SOLUCION 1:
const int PinAnalogico =A0; // Se utiliza el pin AO para la entrada analógica
const int LedPin = 9;
int ValorEntrada = 0; // Variable que guarda el valor de entrada del potenciómetro
int ValorSalida =0; // Variable que guarda el valor de salida en escala 0 a 256.
void setup() {
// declare the LedPin as an OUTPUT:
pinMode(LedPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
// Pierde y gana intensidad según el potenciómetro
ValorEntrada = analogRead (PinAnalogico); // Lee el valor del potenciómetro
ValorSalida = map(ValorEntrada,0,1023,0,255); //convierte el valor de entrada en un número de 0 a 255
analogWrite(LedPin, ValorSalida); // Enciende el LED con intensidad del valor de salida
Serial.print("El valor del Potenciometro es ...");
Serial.println(ValorEntrada);
delay(1000);
Serial.print("El valor de la Intensidad es ...");
Serial.println(ValorSalida);
delay(1000);
}
MM6160
SISTEMAS MECATRÓNICOS INDUSTRIALES Página 31 / 12
Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D
Como se puede apreciar en los LEDs RGB estos poseen cuatro patas. La más larga es la de
conexión a tierra (GND). La aislada, a un lado de la más larga, es la relativa al color rojo R,
mientras que las dos restantes, al otro lado de la más larga, son la azul B, en un extremo, y la verde
G.
En este proyecto no sólo generaremos en un solo LED los tres colores fundamentales: rojo, verde
y azul, sino que también seremos capaces de crear colores combinados como el naranja, el amarillo,
el púrpura o el blanco.
Se han elegido los pines 9, 10 y 11 para los colores rojo, verde y azul, ya que contienen el
simbolo ~, que permite utilizar la función analogWrite(). Por otro lado, se ha definido la función color()
de tres variables enteras, que permite encender el LED RGB en el color
determinado por las tres coordenadas RGB. Por ejemplo, las tres coordenadas (255,255,255)
corresponden al blanco, mientras que (255,233,0) son las del amarillo.
Figura B: Montaje
SOLUCION 1:
const int PinRojo = 9;
const int PinVerde =10;
const int PinAzul = 11;
void setup() {
pinMode[PinRojo. OUTPUT};
pinMode(PinVerde, OUTPUT);
pinMode[PinAzul. OUTPUT);
}
void loop() {
// Enciende 1 s los colores básicos: rojo, verde, azul
color(255, 0,0);
delay(1000);
color[0,255, 0);
delay[1000);
color(0, 0, 255);
delay(1000);
SOLUCION 1:
int sensorPin = 2; // select the input pin for the potentiometer
int ledPin = 13; // select the pin for the LED
int sensorValue = 0; // variable to store the value coming from the sensor
void setup() {
// declare the ledPin as an OUTPUT:
pinMode(ledPin, OUTPUT);
}
void loop() {
// read the value from the sensor:
sensorValue = analogRead(sensorPin);
// turn the ledPin on
digitalWrite(ledPin, HIGH);
// stop the program for <sensorValue> milliseconds:
delay(sensorValue);
// turn the ledPin off:
digitalWrite(ledPin, LOW);
// stop the program for for <sensorValue> milliseconds:
delay(sensorValue);
}