Í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
  14. Batería musical
  15. Servo y joystick coordinados
  16. Servo y joystick con luces
  17. Piano de tres botones
  18. Sensor de distancia
  19. Sensor de distancia avanzado

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. [SW]

  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]

Batería musical

Pasos para desarrollar el proyecto

  1. Conecta el servomotor al puerto 10 y comprobar que se mueve [HW + SW]

  2. Construye una estructura con envases de plástico o de metal [HW]

  3. Consigue que la máqina sea capaz de hacer un ritmo sencillo, es decir, un golpe en cada uno de los envasas y a continuación un golpe en el otro envase [SW]

  4. Logra que la máquina realice un ritmo complejo, es decir, además de alternar golpes entre los dos envases, en alguno de ellos debe ser capaz de dar dos o más golpes seguidos [SW]

Servo y joystick coordinados

Pasos para desarrollar el proyecto

  1. Poner un joystick conectado al puerto A1 y un servomotor en el puerto 9 [HW]

  2. Mostrar en el monitor serie el valor tomado por la entrada analógica y ver como varía según mueves el mando en el eje X [SW]

  3. Poner un servomotor que gire y adopte un ángulo proporcional a la entrada analógica del anterior apartado: ‘s1.write(analogRead(A1)/6.5);‘ [HW y SW]

  4. Un LED rojo se encenderá solo si el servomotor se encuentra cerca de uno de sus límites de movimiento [SW]

Servo y joystick con luces

Pasos para desarrollar el proyecto

  1. El servomotor se mueve en función del movimiento del joystick [HW y SW]

  2. Cuando el servomotor se mueve a un lado se enciende una luz roja [HW y SW]

  3. Cuando el servomotor se mueve al otro lado se encuende la luz verde [HW y SW]

  4. Cuando el servomotor está en el centro las luces deben parpadear [SW]

Piano de tres botones

Pasos para desarrollar el proyecto

  1. Poner botón en el puerto 4 y piezoeléctrico en el puerto 9 [HW]

  2. Si se pulsa el botón debe sonar una nota musical f=261.63 Hz y duración t=250 milisegundos. [SW]
    Recuerda como se usaba tone con estos ejemplos:

  3. Añadir dos botones más en los puertos 5 y 6 [HW]

  4. Al pulsar los botones 5 y 6 deben sonar las notas musicales con frecuencias f=293.66 Hz y f=329.63 Hz [SW]

Sensor de distancia

image

// PRIMER SOFTWARE -----------------------------------
long t;    // Tiempo
long x;    // Espacio o distancia

void setup(){
    pinMode(10, OUTPUT);  // Disparador
    pinMode(9, INPUT);    // Receptor
}

void loop(){
    delayMicroseconds(2);
    digitalWrite(10, HIGH);
    delayMicroseconds(10);
    digitalWrite(10, LOW);
    t = pulseIn(9, HIGH);
    x = t * 0.017;
}
// SEGUNDO SOFTWARE ------------------------------------
void setup(){
    Serial.begin(9600);
}

void loop(){
    Serial.println(x);
}

Pasos para desarrollar el proyecto

  1. Conectar el cableado siguiendo el esquema [HW]

  2. Escribir el primer software[SW]

  3. Añadir al primer software el segundo [SW]

  4. Modificarlo para que ponga en el monitor serie un mensaje cuando el sensor detecte corta distancia

Sensor de distancia avanzado

Pasos para desarrollar el proyecto

  1. Implementar el diseño de hardware del proyecto anterior [HW]

  2. Añadir dos luces LED, una roja y una verde [HW]

  3. Programa el software que permita que la luz verde se encienda si el objeto está lejos y la roja si el objeto que detecta el sensor está cerca [SW]

  4. Añade un piezoeléctrico que debe pitar en caso de que el objeto que detecta el sensor está extremadamente cerca [SW+HW]