Conexiones internas en las placas de montaje:
OPCIONAL:
Instalamos los drivers para la versión de Arduino CTC-101.
Herramientas/Placa/Gestor de tarjetas, buscar 101, instalar Intel Curie Boards.
Gestionar Librerías/ buscar Education Shield.
1) Prueba el programa BLINK (parpadeo): en las páginas 95 y 96 del libro. Haz cambios en la duración del encendido:
CÓDIGO:
void setup() {
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH);
delay(1000); // Wait for 1000 millisecond(s)
digitalWrite(13, LOW);
delay(1000); // Wait for 1000 millisecond(s)
}
2) Haz una copia al circuito Blink, añade más diodos e intenta programar una ráfaga en la que la luz avance:
3) Amplía el programa anterior para que la luz, al llegar al final, rebote, al estilo de el coche fantástico.
4) Programa el encendido de un semáforo de vehículos.
5) Añade las luces de peatones.
6) ¿Eres capaz de programar los dos semáforos de vehículos de un cruce de calles?
7) ¿Puedes programar un cruce completo, con dos semáforos de peatones y vehículos?
6) FUNCIÓN NOT: (En la página 97 del libro, abajo).
CÓDIGO:
void setup()
{
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(2, INPUT);
}
void loop()
{
digitalWrite(13, HIGH);
delay(1000); // Wait for 1000 millisecond(s)
digitalWrite(13, LOW);
delay(1000); // Wait for 1000 millisecond(s)
if (digitalRead(2) == LOW) {
digitalWrite(12, HIGH);
}
else {
digitalWrite(12, LOW);
}
}
Funciones lógicas (Página 109 del libro, arriba).
7) Monta el siguiente circuito y prueba las funciones lógicas AND y OR:
La barra vertical que se necesita para la función OR la obtienes pulsando a la vez la tecla del 1 y Alt Gr.
Función NOT
Función AND:
Función OR:
Esquemas y programas para Arduino.
8) Control de giro un miniservo:
Aquí tienes un programa para controlar el movimiento del miniservo:
/* Programita para controlar un miniservo. Estos giran a una posición de 0 a 180º */
#include <Servo.h> // incluyo una librería o colección de programas para controlar servos
Servo myservo; // myservo es la etiqueta para referirme al servo que voy a conectar. Podré controlarlo con las instrucciones que incluye la librería anterior
int pos = 180; // variable para almacenar la posición del servo. Inicialmente está en la posición 180º
void setup(){
myservo.attach(9); // voy a conectar el servo al pin 9: cable naranja al pin 9, rojo a Vcc y marrón a GND, o bien cable
blanco al pin 9, rojo a Vcc y negro a GND
}
void loop(){
for (pos = 180; pos>0; pos--) {
//Avanza en el sentido de las agujas del reloj, de 180º a 0º, restando 1 a cada vuelta del bucle
myservo.write(pos); //doy la orden de que se desplace hasta los grados almacenados en pos
delay(20); // espero un momento para que le de tiempo al servo a llegar a la posición marcada
}
delay(2000); // esperamos 2 segundos
for (pos = 0; pos<180; pos++) {
//Avanza en sentido contrario a las agujas del reloj
myservo.write(pos); //damos la orden con los grados
delay(20); // esperamos que el servo llegue a la posición
}
delay(2000);
}