miércoles, 31 de mayo de 2017

Sesión 8

31 de mayo - 15:45-18:45
Hola a todos:

En esta sesión vamos a seguir con estructuras de programación como el condicional, utilizar salidas y entradas analógicas.

PROYECTOS DE LA SESIÓN 8:

  1. Sensor de alcohol
  2. Motor por pasos
  3. Control de microservo con potenciómetro (función map)
  4. Control de encendido de LEDs con potenciómetro (función map)
  5. Acabar de construir el coche automatizado
  6. Acabar de construir el semáforo inteligente
  7. Acabar de construir la farola inteligente

Proyectos finales:

Farola inteligente:


Semáforo inteligente:

miércoles, 24 de mayo de 2017

Sesión 7

24 de mayo - 15:45-18:45
Hola a todos:

En esta sesión vamos a seguir con estructuras de programación como el condicional, utilizar salidas y entradas analógicas.

PROYECTOS DE LA SESIÓN 7:

  1. Encender LED con palmadas
  2. Seguir con el coche automatizado
  3. Seguir con el semáforo inteligente
  4. Seguir con la farola inteligente
CÓDIGOS Y ESQUEMAS:

1.  Encender LED con palmadas
int sensorPin = A7;   // entrada para nuestro sensor de sonido
int relayPin = 13;    // pin relé
int sensorValue = 0;  // variable para almacenar el valor del sensor
int knockUp=0;


void setup() {
  // declarar la relayPin como salida:
  pinMode(relayPin, OUTPUT); 
  digitalWrite(relayPin, LOW);
  Serial.begin(9600);
}

void loop() {
  // leer el valor del sensor:
  sensorValue = analogRead(sensorPin);   

 long startTime = millis();
 //Serial.println(sensorValue);
 while(millis() - startTime < 1500){
      sensorValue = analogRead(sensorPin);
       if (sensorValue > 800)
       {
        knockUp = knockUp + 1;
        //digitalWrite(relayPin, LOW);
        delay(200);
        //digitalWrite(relayPin, HIGH);
        Serial.println(knockUp, DEC);
       }
     }
if (knockUp == 1){
   //digitalWrite(relayPin, HIGH);
   delay(2000);
   Serial.println("Nuevo valor:");
   //digitalWrite(relayPin, HIGH);
  } 
 
if (knockUp == 2){
   //digitalWrite(relayPin, HIGH);
   delay(2000);
   Serial.println("Nuevo valor:");
   //digitalWrite(relayPin, HIGH);
  }
if (knockUp == 3){ // APAGAMOS
   digitalWrite(relayPin, LOW);
   delay(5000);
   Serial.println("Nuevo valor:");
}
 if (knockUp == 4){ // ENCENDEMOS
   digitalWrite(relayPin, HIGH);
   delay(5000);
   Serial.println("Nuevo valor:");
}   

  knockUp = 0;
}

martes, 16 de mayo de 2017

Sesión 6

17 de mayo - 15:45-18:45
Hola a todos:

En esta sesión vamos a seguir con estructuras de programación como el condicional, utilizar salidas y entradas analógicas.

PROYECTOS DE LA SESIÓN 6:

  1. Sensor de temperatura
  2. Sensor de temperatura con LED
  3. Sensor de temperatura con LED y altavoz
  4. Motor sg90 (girarlo de 0º a 180º)
  5. Motor sg90 (girarlo de grado en grado)
  6. Motor sg90 y sensor de ultrasonidos (puerta que se abre al detectar presencia)
CÓDIGOS Y ESQUEMAS:

1. Sensor de temperatura LM35

CÓDIGO

const int sensorPin= A0;
void setup()
{
  Serial.begin(9600);
}
void loop()
{
  int value = analogRead(sensorPin);
  float millivolts = (value / 1023.0) * 5000;
  float celsius = millivolts / 10;
  Serial.print(celsius);
  Serial.println(" ºC");
  delay(1000);
}
arduino-LM35-montaje-electrico 
 2. Sensor de temperatura LM35 con LED
Deberás de añadir al termómetro un juego de 3 LED (verde, amarillo y rojo). Utilizarás un condicional que encienda los LED a medida que vaya aumentando la temperatura, de manera que se quede encendida la luz verde para la temperatura ambiente, se encienda, además de la verde, la amarilla si aumenta la temperatura en 5 ºC y se encienda, además de la verde y la amarilla, la roja si aumenta la temperatura otros 5 ºC.

CÓDIGO:

 const int sensorPin= A0;
void setup()
{
  Serial.begin(9600);
  pinMode(11,OUTPUT);
  pinMode(12,OUTPUT);
  pinMode(13,OUTPUT);
}
void loop()
{
  int value = analogRead(sensorPin);
  float millivolts = (value / 1023.0) * 5000;
  float celsius = millivolts / 10;
  Serial.print(celsius);
  Serial.println(" ºC");
 
   //Introducimos el condicional
  if (celsius<27)
   {  
    digitalWrite(11,HIGH);
   }
  if (celsius>=27 && celsius<30)
  {
    digitalWrite(11,HIGH);
    digitalWrite(12,HIGH);
  }
  if (celsius>=30)
  {
    digitalWrite(11,HIGH);
    digitalWrite(12,HIGH);
    digitalWrite(13,HIGH);
  }
  delay(200);

  //Ahora los apagamos todos los LED y empezamos de nuevo.
  digitalWrite(11,LOW);
  digitalWrite(12,LOW);
  digitalWrite(13,LOW);
}


 3. Sensor de temperatura con LED y altavoz
Deberás de añadir al ejercicio anterior, un altavoz que emita un pitido continuo al sobrepasar una temperatura que coincidirá con aquella que encienda el LED rojo.

CÓDIGO:

 const int sensorPin= A0;
int pinzumbador=9;
int frecuencia=220;
void setup()
{
  Serial.begin(9600);
  pinMode(11,OUTPUT);
  pinMode(12,OUTPUT);
  pinMode(13,OUTPUT);
}
void loop()
{
  int value = analogRead(sensorPin);
  float millivolts = (value / 1023.0) * 5000;
  float celsius = millivolts / 10;
  Serial.print(celsius);
  Serial.println(" ºC");
 
   //Introducimos el condicional
  if (celsius<27)
   {  
    digitalWrite(11,HIGH);

digitalWrite(12,LOW);
digitalWrite(13,LOW); 
noTone(pinzumbador);
  }
  if (celsius>=27 && celsius<30)
  {
    digitalWrite(11,HIGH);
    digitalWrite(12,HIGH);

digitalWrite(13,LOW);  
noTone(pinzumbador);   }
  if (celsius>=30)
  {
    digitalWrite(11,HIGH);
    digitalWrite(12,HIGH);
    digitalWrite(13,HIGH);

tone(pinzumbador,frecuencia);
  }
  delay(200);


}



4. Motor sg90 (girarlo de 0º a 180º)

CÓDIGO:
// Incluímos la librería para poder controlar el servo
#include <Servo.h>
// Declaramos la variable para controlar el servo
Servo servoMotor;
void setup() {
  // Iniciamos el monitor serie para mostrar el resultado
  Serial.begin(9600);
  // Iniciamos el servo para que empiece a trabajar con el pin 9
  servoMotor.attach(9);
}
void loop() {
  
  // Desplazamos a la posición 0º
  servoMotor.write(0);
  // Esperamos 1 segundo
  delay(1000);
  
  // Desplazamos a la posición 90º
  servoMotor.write(90);
  // Esperamos 1 segundo
  delay(1000);
  
  // Desplazamos a la posición 180º
  servoMotor.write(180);
  // Esperamos 1 segundo
  delay(1000);
}
 Conexion servomotor con Arduino

 5. Motor sg90 (girarlo de grado en grado)

CÓDIGO:
// Incluímos la librería para poder controlar el servo
#include <Servo.h>
// Declaramos la variable para controlar el servo
Servo servoMotor;
void setup() {
  // Iniciamos el monitor serie para mostrar el resultado
  Serial.begin(9600);
  // Iniciamos el servo para que empiece a trabajar con el pin 9
  servoMotor.attach(9);
  // Inicializamos al ángulo 0 el servomotor
  servoMotor.write(0);
}
void loop() {
  // Vamos a tener dos bucles uno para mover en sentido positivo y otro en sentido negativo
  // Para el sentido positivo
  for (int i = 0; i <= 180; i++)
  {
    // Desplazamos al ángulo correspondiente
    servoMotor.write(i);
    // Hacemos una pausa de 25ms
    delay(25);
  }
  // Para el sentido negativo
  for (int i = 179; i > 0; i--)
  {
    // Desplazamos al ángulo correspondiente
    servoMotor.write(i);
    // Hacemos una pausa de 25ms
    delay(25);
  }
}

6. Motor sg90 y sensor de ultrasonidos (puerta que se abre al detectar presencia)
Deberás de construir una compuerta que se abra o se cierre en función de si detecta la presencia de una persona o coche.

martes, 9 de mayo de 2017

Sesión 5

10 de mayo - 15:45-18:45
Hola a todos:

En esta sesión vamos a seguir con estructuras de programación como el condicional, utilizar salidas y entradas analógicas.

PROYECTOS DE LA SESIÓN 3:

  1. Buzzer piezoeléctrico
  2. Sensor de ultrasonidos
  3. Sensor de ultrasonidos con luces
  4. Sensor de ultrasonidos con luces y aviso acústico

CÓDIGOS Y ESQUEMAS:

1. Buzzer piezoeléctrico
Código:

int pinzumbador = 9;    // pin del zumbador
int frecuencia = 220;      // frecuencia correspondiente a la nota La

void setup()
{
}

void loop()
{
    tone(pinzumbador,frecuencia);    // inicia el zumbido
    delay(2000);                    
    noTone(pinzumbador);               // lo detiene a los dos segundos
    delay(1000);
}




2. Sensor de ultrasonidos.

Código:


long distancia;
long tiempo;
void setup(){
  Serial.begin(9600);
  pinMode(9, OUTPUT); /*activación del pin 9 como salida: para el pulso ultrasónico*/
  pinMode(8, INPUT); /*activación del pin 8 como entrada: tiempo del rebote del ultrasonido*/
}

void loop(){
  digitalWrite(9,LOW); /* Por cuestión de estabilización del sensor*/
  delayMicroseconds(5);
  digitalWrite(9, HIGH); /* envío del pulso ultrasónico*/
  delayMicroseconds(10);
  tiempo=pulseIn(8, HIGH); /* Función para medir la longitud del pulso entrante. Mide el tiempo que transcurrido entre el envío
  del pulso ultrasónico y cuando el sensor recibe el rebote, es decir: desde que el pin 12 empieza a recibir el rebote, HIGH, hasta que
  deja de hacerlo, LOW, la longitud del pulso entrante*/
  distancia= int(0.017*tiempo); /*fórmula para calcular la distancia obteniendo un valor entero*/
  /*Monitorización en centímetros por el monitor serial*/
  Serial.print("Distancia ");
  Serial.print(distancia);
  Serial.println(" cm");
  delay(1000);
}








3. Sensor de ultrasonidos con luces.

Debes crear una configuración en la que si se detecta una cercanía:
   -Inferior a 5 cm, se encienda la luz roja.
   -Entre 5 y 15 cm, se encienda la luz amarilla.
   -Mayor de 15 cm, se encienda la luz verde

Código:

long distancia;
long tiempo;
void setup(){
  Serial.begin(9600);
  pinMode(9, OUTPUT); /*activación del pin 9 como salida: para el pulso ultrasónico*/
  pinMode(8, INPUT); /*activación del pin 8 como entrada: tiempo del rebote del ultrasonido*/

 //Definimos los puertos que usarán los LED.
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
}

void loop(){
  digitalWrite(9,LOW); /* Por cuestión de estabilización del sensor*/
  delayMicroseconds(5);
  digitalWrite(9, HIGH); /* envío del pulso ultrasónico*/
  delayMicroseconds(10);
  tiempo=pulseIn(8, HIGH); /* Función para medir la longitud del pulso entrante. Mide el tiempo que transcurrido entre el envío
  del pulso ultrasónico y cuando el sensor recibe el rebote, es decir: desde que el pin 12 empieza a recibir el rebote, HIGH, hasta que
  deja de hacerlo, LOW, la longitud del pulso entrante*/
  distancia= int(0.017*tiempo); /*fórmula para calcular la distancia obteniendo un valor entero*/
  /*Monitorización en centímetros por el monitor serial*/
  Serial.print("Distancia: ");
  Serial.print(distancia);
  Serial.println(" cm");

  //Introducimos el condicional
  if (distancia<5)
   {   
    digitalWrite(11,HIGH);
   }
  if (distancia>=5 && distancia<15)
  {
    digitalWrite(12,HIGH);
  }
  if (distancia>=15)
  {
    digitalWrite(13,HIGH);
  }
  delay(1000);
 
  //Ahora los apagamos todos los LED y empezamos de nuevo.
  digitalWrite(11,LOW);
  digitalWrite(12,LOW);
  digitalWrite(13,LOW);
}

4. Sensor de ultrasonidos con luces y aviso acústico.

Código:
 

Sesión 8