Este proyecto sirve para testear un LED y empezar a familiarizarse con la placa de pruebas.
Colocar la placa Arduino a la izquierda y la placa de pruebas a la derecha
Buscar en el LED el ánodo y el cátodo y luego colocarlo en la placa de pruebas
Realizar el cableado siguiendo el esquema
Escribir el software en el editor Arduino y subirlo para probarlo
void setup() {
pinMode(4, OUTPUT);
}
void loop() {
digitalWrite(4, HIGH);
delay(1000);
digitalWrite(4, LOW);
delay(1000);
}
Este proyecto sirve para prácticar la conexión de un botón y de un LED.
Montar el botón siguiendo el esquema
Montar el LED de color rojo y conectarlo al puerto 4
Montar el LED de color verde y conectarlo al puerto 5
Escribir el software y probarlo y conectarlo al puerto 6
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);
}
}
Las luces se encenderán siguiendo el orden
El LED rojo se conecta al puerto 4
El LED ambar se conecta al puerto 5
El LED verde se conecta al puerto 6
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
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);
}
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.
El piezoeléctrico se conecta al puerto 9
El LED rojo se conecta al puerto 4
El botón se conecta al puerto 5
Cuando el botón se pulsa, el sonido no se inhibe sino que suena otro tono diferente
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);
}
}
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.
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).
[cod_morse]
Se desarrolla y se sube el software
El piezoeléctrico se conecta al puerto 9
El botón A se conecta al puerto 4
El botón B se conecta al puerto 5
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);
}
Montar un LED rojo en el puerto 5 y uno verde en el 6 (HW)
El LED rojo debe parpadear a intervalos de 1 segundo (SW)
Montar un botón en el puerto 3 (HW)
Si se pulsa el botón, el LED verde debe encenderse (SW)
Poner un piezoeléctrico conectado al puerto 9 (HW)
El piezoeléctrico debe emitir un pitido cada segundo (SW)
Montar un LED rojo conectado al puerto 7 (HW)
El LED rojo debe parpadear intermitentemente cuando suene la alarma (SW)
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.
Montar un LED verde y otro rojo en los puertos 4 y 5 respectívamente (HW)
Los LED deben encenderse secuencialmente a intervalos de 4 segundos (SW)
El LED verde debe estar encendido 2 segundos, luego parpadea a intervalos de medio segundo (durante dos segundos) antes de cambiar al rojo (SW)
Conectar un piezoeléctrico al puerto 6 y hacer que emita un pitido cuando el semáforo esté en verde (HW + SW)
Este proyecto no se firma Este es un proyecto que servirá para realizar pruebas.
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);
}
Este proyecto no se firma Este es un proyecto que servirá para realizar pruebas.
#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);
}
#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);
}
}
Este proyecto no se firma Este es un proyecto que servirá para realizar pruebas.
Montar un botón en el puerto 7 y un servomotor en el puerto 10 (HW)
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)
Montar un LED rojo en el puerto 3 que debe encenderse si el botón del puerto 7 NO está pulsado (HW + SW)
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);
}
}
Este proyecto no se firma Este es un proyecto que servirá para realizar pruebas.
Montar la resistencia variable siguiendo los pasos indicados
Montar los tres LED sobre la placa
Escribir el software
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);
}
}
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]
Escribir el software que permita mostrar en la pantalla del ordenador mediante el monitor serie el valor de la resitencia variable (potenciómetro). [SW]
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]
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]
Conecta el servomotor al puerto 10 y comprobar que se mueve [HW + SW]
Construye una estructura con envases de plástico o de metal [HW]
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]
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]
Poner un joystick conectado al puerto A1 y un servomotor en el puerto 9 [HW]
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]
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]
Un LED rojo se encenderá solo si el servomotor se encuentra cerca de uno de sus límites de movimiento [SW]
El servomotor se mueve en función del movimiento del joystick [HW y SW]
Cuando el servomotor se mueve a un lado se enciende una luz roja [HW y SW]
Cuando el servomotor se mueve al otro lado se encuende la luz verde [HW y SW]
Cuando el servomotor está en el centro las luces deben parpadear [SW]
Poner botón en el puerto 4 y piezoeléctrico en el puerto 9 [HW]
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:
Añadir dos botones más en los puertos 5 y 6 [HW]
Al pulsar los botones 5 y 6 deben sonar las notas musicales con frecuencias f=293.66 Hz y f=329.63 Hz [SW]
// 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);
}
Conectar el cableado siguiendo el esquema [HW]
Escribir el primer software[SW]
Añadir al primer software el segundo [SW]
Modificarlo para que ponga en el monitor serie un mensaje cuando el sensor detecte corta distancia
Implementar el diseño de hardware del proyecto anterior [HW]
Añadir dos luces LED, una roja y una verde [HW]
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]
Añade un piezoeléctrico que debe pitar en caso de que el objeto que detecta el sensor está extremadamente cerca [SW+HW]