Índice

  1. Hola mundo
  2. Botón doble LED
  3. Semáforo de tres luces
  4. Piezoeléctrico, LED y botón
  5. Emisor de código morse
  6. Botón de control
  7. Alarma
  8. Semáforo con aviso acústico
  9. Monitor serie
  10. Servomotor
  11. Botón hombre muerto
  12. Resistencia variable (potenciómetro)
  13. Pitidos de frecuencia variable

image

Hola mundo

Objetivos

Este proyecto sirve para testear un LED y empezar a familiarizarse con la placa de pruebas.

Pasos para desarrollar el proyecto

  1. Colocar la placa Arduino a la izquierda y la placa de pruebas a la derecha

  2. Buscar en el LED el ánodo y el cátodo y luego colocarlo en la placa de pruebas

  3. Realizar el cableado siguiendo el esquema

  4. Escribir el software en el editor Arduino y subirlo para probarlo

image

void setup() {
    pinMode(4, OUTPUT);
}

void loop() {
    digitalWrite(4, HIGH);
    delay(1000);
    digitalWrite(4, LOW);
    delay(1000);
}

Botón doble LED

Objetivos

Este proyecto sirve para prácticar la conexión de un botón y de un LED.

Pasos para desarrollar el proyecto

  1. Montar el botón siguiendo el esquema

  2. Montar el LED de color rojo y conectarlo al puerto 4

  3. Montar el LED de color verde y conectarlo al puerto 5

  4. Escribir el software y probarlo y conectarlo al puerto 6

image

void setup() {
    pinMode(4, OUTPUT);
    pinMode(5, OUTPUT);
    pinMode(6, INPUT);
}

void loop() {
    if (digitalRead(6)==HIGH){
        digitalWrite(4, HIGH);
        digitalWrite(5, LOW);
    } else {
        digitalWrite(4, LOW);
        digitalWrite(5, HIGH);
    }
}

Semáforo de tres luces

Objetivos

Las luces se encenderán siguiendo el orden

Pasos para desarrollar el proyecto

  1. El LED rojo se conecta al puerto 4

  2. El LED ambar se conecta al puerto 5

  3. El LED verde se conecta al puerto 6

  4. La luz roja luce durante 7 segundos, luego la verde 7 y finalmente la ambar durante 1 segundo antes de volver a comenzar el ciclo

image

void setup() {
    pinMode(4, OUTPUT);
    pinMode(5, OUTPUT);
    pinMode(6, OUTPUT);
}

void loop() {
    digitalWrite(4,HIGH);
    digitalWrite(5,LOW);
    digitalWrite(6,LOW);
    delay(7000);

    digitalWrite(4,LOW);
    digitalWrite(5,LOW);
    digitalWrite(6,HIGH);
    delay(7000);

    digitalWrite(4,LOW);
    digitalWrite(5,HIGH);
    digitalWrite(6,LOW);
    delay(1000);
}

Piezoeléctrico, LED y botón

Objetivos

El piezoeléctrico emitirá pitidos a intervalos de un segundo, y una frecuencia de 3000 Hz. El LED rojo parpadeará cuando suene el pitido. El botón inhibe el sonido del piezo, pero no del LED.

Pasos para desarrollar el proyecto

  1. El piezoeléctrico se conecta al puerto 9

  2. El LED rojo se conecta al puerto 4

  3. El botón se conecta al puerto 5

  4. Cuando el botón se pulsa, el sonido no se inhibe sino que suena otro tono diferente

image

void setup() {
    pinMode(4, OUTPUT);
    pinMode(5, OUTPUT);
    pinMode(6, INPUT);
}

void loop() {
    if (digitalRead(6)==HIGH){
        digitalWrite(4, HIGH);
        digitalWrite(5, LOW);
    } else {
        digitalWrite(4, LOW);
        digitalWrite(5, HIGH);
    }
}

Emisor de código morse

Objetivos

En este proyecto construimos una máquina generadora de código morse con dos botones. El código morse se empleaba en transmisiones telegráficas y cada letra tiene su representación. En nuestro hardware, dos botones controlan los pitidos del piezoeléctrico. Uno produce pitidos cortos y otro produce pitidos largos.

Práctica

Prueba a emitir un mensaje de SOS, para ello comprueba en la Figura [cod_morse] a que conjunto de puntos y letras corresponde cada letra (S, O, S).

Código Morse
Código Morse

[cod_morse]

Pasos para desarrollar el proyecto

  1. Se desarrolla y se sube el software

  2. El piezoeléctrico se conecta al puerto 9

  3. El botón A se conecta al puerto 4

  4. El botón B se conecta al puerto 5

image

void setup() {
  pinMode(4, INPUT);
  pinMode(5, INPUT);
  pinMode(9, OUTPUT);
}

void loop() {
  if (digitalRead(4)==HIGH){  // Si se pulsa el botón 4
    tone(9, 3000, 100);
  }
  if (digitalRead(5)==HIGH){  // Si se pulsa del botón 5
    tone(9, 3000, 300);
  }
  delay(500);
}

Botón de control

Pasos para desarrollar el proyecto

  1. Montar un LED rojo en el puerto 5 y uno verde en el 6 (HW)

  2. El LED rojo debe parpadear a intervalos de 1 segundo (SW)

  3. Montar un botón en el puerto 3 (HW)

  4. Si se pulsa el botón, el LED verde debe encenderse (SW)

Alarma

Pasos para desarrollar el proyecto

  1. Poner un piezoeléctrico conectado al puerto 9 (HW)

  2. El piezoeléctrico debe emitir un pitido cada segundo (SW)

  3. Montar un LED rojo conectado al puerto 7 (HW)

  4. El LED rojo debe parpadear intermitentemente cuando suene la alarma (SW)

Semáforo con aviso acústico

Nota Este proyecto presenta una dificultad añadida ya que el software del paso 2 y el 3 son diferentes. Además, el paso 4 depende tanto de hardware como de software para poder ser completado.

Pasos para desarrollar el proyecto

  1. Montar un LED verde y otro rojo en los puertos 4 y 5 respectívamente (HW)

  2. Los LED deben encenderse secuencialmente a intervalos de 4 segundos (SW)

  3. El LED verde debe estar encendido 2 segundos, luego parpadea a intervalos de medio segundo (durante dos segundos) antes de cambiar al rojo (SW)

  4. Conectar un piezoeléctrico al puerto 6 y hacer que emita un pitido cuando el semáforo esté en verde (HW + SW)

Monitor serie

Objetivos

Este proyecto no se firma Este es un proyecto que servirá para realizar pruebas.

Primer software

void setup() {
  Serial.begin(9600);
}

void loop() {
  Serial.println("Hola");
}

Segundo software

int n = 0;              // Inicializa la variable

void setup() {
  Serial.begin(9600); // Inicializa monitor serie
}

void loop() {
  n++;                // Incrementa la variable 
  Serial.println(n);  // Mostrar en pantalla el valor
  delay(100);
}

Servomotor

Objetivos

Este proyecto no se firma Este es un proyecto que servirá para realizar pruebas.

image

Primer software

#include <Servo.h>

Servo s1;             // Asigna nombre al servo

void setup() {
  s1.attach(9);       // Conectado al puerto 9
}

void loop() {
  s1.write(0);        // Posición 0 grados
  delay(1000);
  s1.write(90);       // Posición 90 grados
  delay(1000);
}

Segundo software

#include <Servo.h>

Servo s1;
int p = 0;             // posición

void setup() {
  s1.attach(9);
}

void loop() {
  p++;                 // Incrementa p
  s1.write(p);         // Mueve el servo
  delay(20);

  if (p == 170) {      // Si llega a 170 grados
      p = 0;           // Vuelve a la posición inicial
      s1.write(p);
      delay(500);
  }
}

Botón hombre muerto

Este proyecto no se firma Este es un proyecto que servirá para realizar pruebas.

image

Pasos para desarrollar el proyecto

  1. Montar un botón en el puerto 7 y un servomotor en el puerto 10 (HW)

  2. El servomotor debe hacer oscilar su brazo a intervalos de 1 segundo entre sus dos extremos solo si el botón se pulsa, el servomotor se detendrá si el botón se suelta (SW)

  3. Montar un LED rojo en el puerto 3 que debe encenderse si el botón del puerto 7 NO está pulsado (HW + SW)

  4. Añadir un piezoeléctrico al puerto 6 que sonará cuando el botón NO ESTÉ PULSADO (HW + SW)

#include <Servo.h>

Servo s;

void setup() {
  pinMode(3, OUTPUT);  // LED
  pinMode(6, OUTPUT);  // Piezoeléctrico
  pinMode(7, INPUT);   // Botón
  s.attach(10);        // Servomotor
}

void loop() {
  if (digitalRead(7)==HIGH){ // Botón pulsado
    digitalWrite(3, LOW);
    s.write(10);
    delay(1000);
    s.write(170);
    delay(1000);
  } else {                   // Botón NO pulsado
    digitalWrite(3, HIGH);
    tone(6, 4000, 2000);
    delay(2000);
  }
}

Resistencia variable (potenciómetro)

image

Este proyecto no se firma Este es un proyecto que servirá para realizar pruebas.

Pasos para desarrollar el proyecto

  1. Montar la resistencia variable siguiendo los pasos indicados

  2. Montar los tres LED sobre la placa

  3. Escribir el software

  4. Modificar el software para que las luces funcionen al revés


int x = 0;             // Variable

void setup() {
  pinMode(2, OUTPUT);  // LED
  pinMode(3, OUTPUT);  // LED
  pinMode(4, OUTPUT);  // LED
  Serial.begin(9600);  // Monitor serie
}

void loop() {
    x = analogRead(A0);
    Serial.println(x);
    if (x <= 200) {
        digitalWrite(2, HIGH);
        digitalWrite(3, LOW);
        digitalWrite(4, LOW);
    }
    if (x > 200 && x < 400) {
        digitalWrite(2, LOW);
        digitalWrite(3, HIGH);
        digitalWrite(4, LOW);
    }
    if (x >= 400) {
        digitalWrite(2, LOW);
        digitalWrite(3, LOW);
        digitalWrite(4, HIGH);
    }
}

Pitidos de frecuencia variable

Pasos para desarrollar el proyecto

  1. Montar la resistencia variable (potenciómetro) de manera que su salida se encuentre conectada con el puerto analógico A0 y un piezoeléctrico en el puerto 9. También es necesario montar un LED de color rojo en el puerto 7 y otro de color verde en el puerto 8. [HW]

  2. Escribir el software que permita mostrar en la pantalla del ordenador mediante el monitor serie el valor de la resitencia variable (potenciómetro). [SW]

  3. Hacer que el piezoeléctrico emita pitidos con intervalos de un segundo entre un pitido y el siguiente. La frecuencia del pitido estará dado por el valor indicado en el potenciómetro según la fórmula f = 2 * x + 500, donde f es la frecuencia del pitido y x es el valor del potenciómetro. Mientras se emite un pitido el LED rojo estará encendido y se apagará cuando deje de sonar el pitido.

  4. Hacer que el pitido siempre se emita a 2000 hercios pero el intervalo de espera entre un pitido y el siguiente sea variable en función de la posición del potenciómetro. Además el LED verde se encenderá cuando el piezo eléctrico no emita sonido. [SW]