ARDUINO en la RED

Sitios interesantes para empezar con arduino:


La placa de arduino UNO te la muestro en la imagen (click sobre la imagen para AMPLIAR):

arduino_UNO_placa.png
Arduino UNO Patillaje



Ejemplo de FICHA WEB de una Práctica

Cada práctica de Arduino hay que documentarla en vuestra página de wikispaces, os dejo un enlace donde podéis ver el ejemplo de la primera práctia: LED que Parpadea

Prácticas y desafíos con Arduino UNO


Práctica 1: LED que parpadea

Funcionamiento: un diodo LED, montadoen el PIN 13 parpadeará en un ciclo de 1 s encendido y 1 s apagado.
  • Monta un LED sobre el pin 13 y protégelo con una R de 220 Ω
  • Abre Arduino Ejemplos/01 Basics/Blink.
  • Descarga el programa sobre la placa Arduino.

Si quieres comprender lo que estás haciendo te recomiento el tutorial de Prometec: Blinkin LED

Desafío 1: LED 3s-1s

modificar en el LED anterior el tiempo de parpadeo a 3 seg encendido y 1 segundo apagado en un ciclo continuo.

Desafío 2 Dos LEDs

Tienes que montar sobre la placa de protoboard 2 LEDs con dos resistencias (220 Ω ). Tal y como aparece en la captura.
Funcionamiento: ambos LEDs se encienden y apagan en ciclos de 0.5 segundos pero cuando uno luce el otro está apagado y viceversa.
Programa: eso es cosa tuya...
doble_LED.jpg
Doble LED

Práctica 2: Manejar 8 LEDs

Si sabemos manejar dos LEDs, ¿por qué no 8?
Lee muy despacio este tutorial de prometec:
http://www.prometec.net/circuito-multiples-leds/
En este ejemplo aprenderás a:
  • crear variables para guardar datos.
  • bucle for para repetir una secuencia de acciones un número determinado de veces.

8_LEDs_simple.jpg
8 LEDs


Desafío 3: 8 LEDs inv


  • Modificar el código del ejercicio de 8 LEDs para que los leds se enciendan en orden inverso

  • PISTA: igual que i++ incrementa de un en uno la variable i, existe i-- que resta de uno en uno.

Desafío 4: 8 LEDs vaivén

  • Modificar el código del ejercicio de 8 LEDs para que los leds se enciendan y apagen haciendo una onda hacia la derecha y luego hacia la izquierda en un ciclo continuo.

Práctica 3: Sensor de luz controla LED

Vamos a hacer que un sensor de luz (LDR) controle la frecuencia de parpadeo de un LED.
Monta el circuito de la ilustración.
Componentes:
  • LDR (sensor de luz)
  • RLDR = R1=1-2 KΩ
  • LED
  • RLED =100-300Ω

ldr CONTROLA PARPADEO led 2.JPG


LDR maneja LED.jpg
LDR controla intensidad de LED


El código sería el siguiente:
void setup() {
  // ponemos el pin 8 como SALIDA para usarlo con un LED
  pinMode(8, OUTPUT);
 // inicialización puerto serie a 9600 bps
  Serial.begin(9600);
}
 
void loop() {
  // creamos una variable para almacenar el valor del sensor
  int x ;
  // analogRead() lee en el pin A0 el voltaje y lo convierte en un valor entre 0-1023= 0-1023
  x = analogRead(A0);
  // enciende el LED
  digitalWrite(8, HIGH);
  delay(x); //retardo de x milisegundos
  // apaga el LED
  digitalWrite(8, LOW);
  delay(x); //retardo de x milisegundos
  // mostrar el valor de X en el Monitor Serie
  Serial.println(x);
}
Responde a las siguientes preguntas en tu espacio web.
  • Observa el ritmo de parpadeo del LED, acerca poco a poco tu mano hasta tapar completamente el sensor de LUZ y completa la siguiente frase: Cuanta más acerco la mano al sensor de luz, más _ _ _ _ _ _ _ parpadeará el LED.
  • ¿Qué hace la función analogRead()? Pista: busca analogRead en http://www.prometec.net/funciones1/
  • ¿Qué valores mínimo y máximo lee analogRead en tu montaje?
  • Además del Pin A0 ¿qué otros pines puede leer analogRead en la placa de arduino uno?


Practica 4: Theremin

La LDR puede controlar también un altavoz.
Para construirlo partimos del montaje anterior, pero necesitamos cambiar la salida quitando el LED+R y poniendo en su lugar un altavoz o timbre.
Tenemos que subir a la placa Arduino un nuevo CÓDIGO según se explica en el siguiente tutorial "El circuito para un Theremin óptico" --> http://www.prometec.net/ldrs/
Theremin.jpg
Theremin musical



CÓDIGO

NO TE OLVIDES DE SUSTITUIR EN LA FUNCIÓN map() los valores 500 y 900 por los valores mínimo y máximo que obtuviste en la lectura del pin analógico A0 en la práctica 3 "Sensor de luz controla LED".
int pinAltavoz = 13; //defino pin digital del altavoz
void setup()
  {
   Serial.begin(9600);
   pinMode (pinAltavoz , OUTPUT);
  }
void loop()
  {
   int sensor = analogRead(A0); //sensor luz 0-1023
   //nota = nota musical a reproducir en el altavoz
   int nota = map (sensor, 500,900, 50, 1000);
   tone ( pinAltavoz, nota);
   Serial.println(sensor);
   }

Busca información en internet... y responde a las siguientes preguntas en tu espacio WEB:
  • 1. ¿Qué es un Theremin?

  • 2.- ¿Para qué sirve la función map()?

  • 3.- ¿Que ocurre si cambias en el código la función map() invirtiento los dos últimos valores-> map(sensor, 500,900, 1000, 50)? PRUéBALO en TU ARDUINO y responde.

  • 4.-¿Para que sirve tone() en arduino? (busca en internet)


Desafío 5: La cucaracha

Vamos a tocar la cancion de la Cucaracha, usando la función tone()
Pasos a seguir:
  • Sólo tienes que conectar un altavoz entre un pin digital 7 y tierra (GND)

  • En el código de Arduino tienes que crear una variable para cada nota musical, por ejempo para la nota Do:int Do = 262; //crea la variable Do para 262 Hz

  • Usa la función tone() para generar las notas de la canción.
  • Las NOTAS de La Cucaracha:

do do do fa la
do do do fa la
fa fa mi mi re re do
do do do mi sol
do do do mi sol
do* re* do* sib la sol fa


do do fa fa la la do* la
do* re* do* sib la do* si* sol
do do mi mi sol sol si* sol
do* re* do* sib la sol fa


do do do fa la
do do do fa la
fa fa mi mi re re do
do do do mi sol
do do do mi sol
do* re* do* sib la sol fa

Las notas y sus frecuencias en Hz son:
Do 3: 262
Do# 3: 277
Re 3: 294
Re# 3: 311
Mi 3: 330
Fa 3: 349
Fa# 3: 370
Sol 3: 392
Sol#3: 415
La 3: 440 La# 3 = 466
Sib 3= 466
Si 3: 494
Do 4: 523


* #=sostenidob =
bemol

Práctica 5: Sensor de Ultrasonidos controla LED

Sensor HC-SR04 ¿Qué hace? El sensor emite un pulso muy breve de ultrasonido y, si regresa el pulso rebotado contra algún obstáculo, mide cuanto tiempo ha tardado el pulso en regresar, sumados la ida y vuelta. Conocida la velocidad del sonido 343 m/s es fácil calcular la distancia a la que se encuentra el objeto.

SENSOR ULTRASONICO HC SR04 FUNCIONAMIENTO.png

Objetivo de la práctica : Vamos a hacer que un sensor de ultrasonidos (HC-SR04) modifique la frecuencia de parpadeo de un LED cuando detecte un obstáculo delante de él.

Montaje
Sensor HC-SR04 con LED.jpg
Sensor ultrasonidso HC-SR04 modifica parpadeo de LED


En esta práctica empleamos dos nuevas instrucciones: if ... else if..., muy importantes para controlar más adelante el coche robot.
Su uso se explica en este tutorial de prometec: http://www.prometec.net/condicionales-botones/,
y también el la web oficial de arduino: https://www.arduino.cc/en/Reference/Else
échales un vistazo para comprender el código de esta práctica.
/*
  LED controlado por sensor ultrasonico HC-SR04
  Este sensor mide la distancia a un obstaculo en cm
//*****************************
//Conexiones del sensor
// Vcc = 5V
// trigger = 12
// echo = 11
// GND  = 0V
// led =8
//*****************************
 
*/
 
int trigPin = 12; // pin trigger dispara el pulso ultrasonico
const int echoPin = 11; //pin echo mide el tiempo de rebote del pulso
int led = 8; //pin LED
 
void setup()
{    Serial.begin (9600); // Inicia la comunicacion con el monitor serie
      pinMode(trigPin, OUTPUT);
      pinMode(echoPin, INPUT);
      pinMode(led, OUTPUT);
}
 
void loop()
{   long duracion, distancia ;
    digitalWrite(trigPin, LOW); // apaga el disarador del pulso ultrasonico
    delayMicroseconds(2);
    digitalWrite(trigPin, HIGH);     // Inicia el pulso ultrasonico
    delayMicroseconds(10);         //el pulso dura 10 microsegundos
    digitalWrite(trigPin, LOW);    // apaga el pulso y espera el echo
 
    duracion = pulseIn(echoPin, HIGH) ;
    distancia = duracion / 58.28  ; // Si hay rebote del pulso calcula la distancia en cm.
    delay(300);
    //Herramientas -> Serial Monitor para ver distancia
    Serial.println(String(distancia) + " cm.");
 
    //Según la distancia medida en cm hasta el obstaculo...
    //Determinamos diferentes frecuencias de parpadeo del LED
 
    if (distancia<5){
      digitalWrite ( led , HIGH) ;
      delay(20);
      digitalWrite( led , LOW) ;
      delay(20);
      } else if (distancia<10){
            digitalWrite ( led , HIGH) ;
            delay(50);
            digitalWrite( led , LOW) ;
            delay(50);
            } else if (distancia<20){
                    digitalWrite ( led , HIGH) ;
                    delay(100);
                    digitalWrite( led , LOW) ;
                    delay(100);
                    } else if (distancia<30){
                            digitalWrite ( led , HIGH) ;
                            delay(400);
                            digitalWrite( led , LOW) ;
                            delay(400);
                            } else if (distancia<40){
                                    digitalWrite ( led , HIGH) ;
                                    delay(600);
                                    digitalWrite( led , LOW) ;
                                    delay(600);
                                    } else {
                                        digitalWrite ( led , HIGH) ;
                                        }
 } //fin del loop()
 
 
 

Práctica 6: Control de Un Motor con MotorShield v.1

El escudo motor (motor shield en inglés) es una placa fabricada por Ada Fruit que se monta sobre la placa Arduino y permite manejar fácilmente hasta 4 motores DC (eléctricos de corriente continua).


motor_shield_v1.jpg
MotorShield v.1


Funcionamiento: vamos a hacer una práctica de manejo básico de un motor: girar hacia adelante, hacia atrás y parar siguiendo una secuencia con tiempo programados.

AYUDA

Práctica 7 : Manejo de 2 motores

Intenta gobernar dos motores, el de las ruedas traseras DERECHA e IZQUIERDA del robot de al lado.
En el código del programa que crees, llama a los objetos que controlan los motores, motor_der y motor_izqu.

Funcionamiento:
  • Mover el coche 2 segundos hacia ADELANTE.
  • PARAR 1 segundo.
  • Mover marcha ATRÁS otros 2 segundos.
  • Girar hacia la DERECHA durante 1 seg.
  • Girar hacia la IZQUIERDA durante 1 seg.
  • PARAR 1 seg.
robot_arduino.jpg

Desafío 6 final: Sensor de ultrasonidos Maneja coche

Este desafío supone el final de nuestro recorrido con Arduino: Hay que conectar a la placa MotorShield dos motores y un sensor de ultrasonidos HC-SR04.
  • Conecta el sensor HC-SR04 a los pines según lees en las primeras líneas del código de abajo.
  • Conecta los dos motores de las ruedas DERECHA e IZQUIERDA a la placa escudo motor.
  • Crea el código para que cuando el coche detecte un obstáculo a cierta distancia lo evite.
  • El coche será tuyo si es capaz de estar 15 segundos moviéndose por el taller sin chocarse.
¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ SUERTE ! ! ! ! ! !

//ROBOT-COCHE
// DOS MOTORES DC MUEVEN AMBAS RUEDAS TRASERAS
// UN SENSOR ULTRASÓNICO MIDE LA DISTANCIA A OBSTÁCULOS.
// SI EL COCHE ESTÁ CERCA DE UN OBSTÁCULO DEBE EVITARLO
// A VECES EL SENSOR SE QUEDA COLGADO MIDIENDO DISTANCIAS 0, 0, 0, 0 CM, REITERADAMENTE
// LO ARREGLAMOS CON INSTRUCCIONES PARA EL DESBLOQUEO METIDAS EN UN BUCLE WHILE
// SOLUCION AL 0,0,0,0,0,0,...
//When I detect the sensor is stuck, I simply switch echo pin to OUTPUT,
//put it into LOW state, and after a while re-set it to INPUT, then cycle again.
 
//conexiones del sensor HC-SR04
//trigger A1
//echo    A0
//Gnd     tierra (GND)
//Vcc     5V
// ---------
 
//Definicion de constantes y variables usadas
const int trigPin = A1; // pin disparo del sensor ultrasonico
const int echoPin = A0; // pin echo que recoge el rebote del pulso ultrasonico
int intentos = 0;//num de veces que el sensor ultrasónico se cuelga con 0
 
//AQUI CREO LOS DOS OBJETOS PARA CONTROLAR LOS 2 MOTORES
 
 
void setup()
{
  Serial.begin(9600); // Open serial monitor at 115200 baud
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  //pinMode (led, OUTPUT);
 
}
 
void loop()
{
 delay(50);
 //dos variables vamos a definir para el trabajo del sensor ulrasónico
 //duration = tiempo de duración del pulso ida y vuelta
 //y range = distancia en cm al obstáculo
 long duration, range;
 digitalWrite(trigPin, LOW);   // Resetea el disparador ulstrasónico
 delayMicroseconds(2);   //damos un tiempo de espera antes de lanzar un pulso
 digitalWrite(trigPin, HIGH);  // Manda EL PULSO
 delayMicroseconds(10);    //el pulso dura 10 microsegundos
 digitalWrite(trigPin, LOW); // Deshabilita la transimison de otros pulsos
 //y espera a que el pin echo recoja el pulso rebotado
 duration = pulseIn(echoPin, HIGH) ; //mide el tiempo de ida y vuelta del pulso en µs
 range = duration / 58.28  ; // Calcula la distancia al obstáculo en cm.
 delay(300);
//imprimimos la distancia al obstáculo en el monitor serie
 Serial.println(String(range) + " cm."); // Tools-->Serial Monitor to see the range
 
 /* Descomentamos el bucle while sólo si...
 //SI el sensor se cuelga enviando continuos 0 cm, lo solucionamos en el bucle while
 while (range == 0 && ++intentos < 3); {
      delay(50);//100
      pinMode(echoPin, OUTPUT);
      digitalWrite(echoPin, LOW);
      delay(50);//100
      pinMode(echoPin, INPUT);
 //AQUÍ DEBEMOS PARAR AMBOS MOTORES MIENTRAS REINICIAMOS EL SENSOR
 
}
 */
 
 if (range < 25 && range!=0) {
   //.......si encuentra obstaculo
 
 
  }//fin del if
  else {
  //... si no hay ningun obstaculo
 
 
  }//fin del else
}//fin del loop()
 

3C-3C PMAR Grupos para el coche
Coche
_Alumnos_
Notas
1
Ivan P., Iker Ald., Tania Ru. e Iker Alg.

2
Zaida Ig., Nuria To., Elena dos, y Annete V.

3
Eduard E., David L., Catalin C., Marta Ca.

4
Patricia Ca., Lucía Ga., Esther Lo., Isabel Mu.

5
Roberto Ta., Adrián Es., Christian For., y Alx. Álv.

6
Mario Po., Adrián L., y Ana M. Pr.

7
Zoe Men., Valentina Ma., y Fr. Javier La.


3E Grupos para el coche
Coche
_Alumnos_
Notas
1
Sandra Czy., Salma Bou., Óscar Vi. y Carlos Fe.

2
Natalia Ch., Helena Gon., Aitor Gu. e Iván Mi.

3
Sergio Fe., Kevin Ga. y Javier Du.

4
Adrián De., Laura Agu., Alicia Pi., y Camila Ve.

5
Andreea Ap., Geraldine Ace. y David Hu.

6
Cristina Ma., Nerea Ca., Andrei Do. y Sandra Cu.

7
Imanol K., Jorge Cañ y Víctor Pri.

8
Jesús Mu., Orobosa, Gonzalo Cre. y David Ta.





3D-3F Grupos para el coche
Coche
_Alumnos_
Notas
Profesor
1
Mariana Gismela N., Yosra Sa., Ibrahim, Anas K.

ANTONIO
2
Cristina Gar., Claudia Ro. Nerea Du. y Cedea Ndj.

JAVIER
3
John Fer. Ma., Anastazja Czy., Anna Me., y Karol Ang.

ANTONIO
4
Hicham El, Maksim Kuz., Ouyanng L., y Kevin Sant.

ANTONIO
5
Alejandro Marc., Yeray Ha.,Brandom Mu. y Jandy Me.

JAVIER
6
Claudia Hin., Ana Aza.,

ANTONIO
7
Omar Bou., Dylan Sant., Johnathan Guam. y Ayman El Fer.

JAVIER
8
Daniel Mon., Samuel Rod.

JAVIER