Publicado el 2 comentarios

Sensor de aparcamiento por ultrasonidos

Daniel Esteban G., de Escuelas San José Jesuitas (www.escuelassj.com) participa en el concurso «Arduino in Love 2019» con este sensor de aparcamiento por ultrasonidos.

El proyecto desarrolla el sensor de aparcamiento de un coche, a pequea escala. Normalmente el sensor del coche tiene 1 metro de margen, pero en este caso a los 30 cm aproximadamente empieza a pitar, entre más cerca el objeto, con más frecuencia pita.

/* Programa que simula el funcionamiento de un sensor de aparcamiento,
pitando con una frecuencia mayor conforme nos aproximamos al objeto, DANI */

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

void loop(){
  digitalWrite(6,LOW); /* Por cuestión de estabilización del sensor*/
  delayMicroseconds(5);
  digitalWrite(6, HIGH); /* envío del pulso ultrasónico*/
  delayMicroseconds(10);
  tiempo=pulseIn(7, 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.println("Distancia ");
  Serial.println(distancia);
  Serial.println(" cm");
  //delay(1000);
  if(distancia<=40)
  {
  if(distancia >=0 && distancia<=3)
    j = 1;
  if(distancia >3 && distancia<=8)
    j = 50;
  if(distancia >8 && distancia<=20)
    j = 300;
  if(distancia >20 && distancia<=30)
    j = 600;
  if(distancia >30 && distancia<=40)
    j = 900;
  if(distancia >40)
    j = 1200; 
  tone(speakerPin,349);
    delay(j);
    noTone(speakerPin);
    delay(100);
  }
  else
  {
   noTone(speakerPin);
  } 

}

Material utilizado:

Publicado el 1 comentario

Simpático robot con dos servos

Sergio F. participa en el concurso «Arduino in Love 2019» con este simpático robot con dos servos.

Sergio Fernández, de Escuelas San José Jesuitas (www.escuelassj.com) nos envía este proyecto de un simpático robot con dos servomotores, uno de ellos mueve la superficie del robot horizontalmente y el otro lo mueve verticalmente.

nor
#include <Servo.h>

Servo myservo;
Servo myservo1;

int pos1 = 0;
int pos2 = 0;
int potPin1 = 5;
int potPin2 = 4;

void setup()
{

  myservo.attach(9);
  myservo1.attach(10);
  
}

void loop() {

   pos1 = analogRead(potPin1)/5,6;
   pos2 = analogRead(potPin2)/5,6;
   myservo.write(pos1);
    delay(20);
   myservo1.write(pos2);
    delay(20);
   
}

Material necesario:

Publicado el Deja un comentario

Incubadora con tratamiento de ictericia

El IES Laurona (Llíria, Valencia) participa en el concurso «Arduino in Love 2019» con esta incubadora de neonatos con tratamiento de ictericia por fototerapia controlada en intensidad y duración.

Dentro de la incubadora se efectúa el control de:

  • Peso del paciente
  • Tiempo de gestación y de nacimiento
  • Temperatura
  • Humedad
  • Luminosidad exterior (visible, UV e IR)
  • Nivel de ruido
  • Humedaddel colchón
  • Temperatura del paciente
  • Pulsaciones del paciente
  • Satuación de oxígeno en sangre (SpO2)
  • Calidad del aire (concentración de partículas y nivel de gases nocivos)

Hay indicaciones en display de los datos vitales, así como alarma visual y sonora de cualquier dato fuera de rango seguro.

Publicado el 1 comentario

iPro Cooler – bebida fresca en momentos

Cristian S. participa en el concurso «Arduino in Love 2019» con este fantástico enfriador de bebidas con Peltier.

iProcooler trata de un sistema de mantenimiento térmico mediante una célula peltier capaz de bajar la temperatura a 2 grados centígrados. El sistema es totalmente automático, gracias a la ayuda de un Arduino uno que controla la conexión y desconexión de la célula dependiendo de las condiciones. Tiene 3 fases:

1- ENFRIAMIENTO El sensor “CNY70” detecta que se ha colocado una taza, vaso, bote, etc… en ese momento el sensor “lm35” nos detecta la temperatura que tenemos en la célula y de ello dependerá la iluminación del anillo led que ayudara al usuario visualmente a saber cuando la célula ha llegado a su temperatura de funcionamiento encendiéndose esta de color azul.


2-BEBEMOS Cuando levantemos la taza, vaso, bote, etc.. para beber el “CNY70” no detectará y empezará un temporizador de 30 segundos el anillo en este momento cambia de color a amarillo, si lo dejamos de nuevo el anillo volverá a pasar a verde.


3- RETIRAMOS Cuando terminamos y retiramos la taza, vaso, bote, etc… el “CNY70” deja de detectar y empezará un temporizador de 30 segundos, cuando pase ese tiempo el anillo cambiará a color rojo y la célula se desconectará.

A continuación, el código para Arduino:

/ CONCURSO ------>  ARDUINO IN LOVE                 
//Nombre del proyecto--> iProCooler
//Proyecto I+D+i--> Christian Soriano 
//Codigo--> Iván Sanchis
//Rev.1
//CONCURSO------>  ARDUINO IN LOVE
#include "FastLED.h"

const char pausa = 100;
const char seg_off = 30;
const char tiempoLED = 50;
const boolean bote = HIGH;
const boolean encender = HIGH;
const boolean apagar = LOW;
const float tempBoteON = 30;
float serieGrados[50];

const char NUM_LEDS = 24;
#define LED_TYPE WS2812B
#define COLOR_ORDER GRB
const char BRIGHTNESS = 128;
CRGB leds[NUM_LEDS];

const char detectorBOTE = 8;
const char pinLM35 = A1;
const char celula = 0;
const char ventilador = 3;
const char DATA_PIN = 6;

float tempC;
float mediaGrados = 0;
int i,j,k;
void setup()
{
  Serial.begin(9600);
  analogReference(INTERNAL);
  pinMode(detectorBOTE, INPUT);
  pinMode(pinLM35, INPUT);
  FastLED.addLeds<LED_TYPE, DATA_PIN, COLOR_ORDER>(leds, NUM_LEDS);
  FastLED.setBrightness( BRIGHTNESS );
  for (i = 0; i < 50; i++)
  {
    mediaGrados = 0;
    for (j = 0; j < 50; j++)
    {
      tempC = analogRead(pinLM35);
      tempC = (1.1 * tempC * 100.0) / 1023.0;
      mediaGrados = mediaGrados + tempC;
    }
    mediaGrados = mediaGrados / 50.0;
    serieGrados[i] = mediaGrados;
  }
}

int haybote = 0;
float temperatura = 0.0;
unsigned long inicio;
boolean temporizador = LOW;
char pos = 0;
void loop()
{
  haybote = digitalRead(detectorBOTE );  //lectura digital de pin
  mediaGrados = 0;
  for (i = 0; i < 50; i++)
  {
    tempC = analogRead(pinLM35);
    tempC = (1.1 * tempC * 100.0) / 1023.0;
    mediaGrados = mediaGrados + tempC;
  }
  mediaGrados = mediaGrados / 50.0;
  serieGrados[pos] = mediaGrados;
  if (pos < 50)
  {
    pos++;
  }
  else
  {
    pos = 0;
  }
  temperatura = 0.0;
  for (k = 0; k < 50; k++)
  {
    temperatura = temperatura + serieGrados[k];
  }
  temperatura = temperatura / 50.0;
  if (haybote == bote)
  {
    temporizador = LOW;
    if (temperatura < tempBoteON)
    {
      digitalWrite(celula, encender);
      digitalWrite(ventilador, encender);
      for (j = 0; j < NUM_LEDS; j++)
      {
        leds[j] = CRGB::Green;
        FastLED.show();
        delay(tiempoLED);
      }
    }
    else
    {
      digitalWrite(celula, encender);
      digitalWrite(ventilador, encender);
      for (j = 0; j < NUM_LEDS; j++)
      {
        leds[j] = CRGB::Blue;
        FastLED.show();
        delay(tiempoLED);
      }
    }
  }
  else
  {
    if (temporizador == LOW)
    {
      inicio = millis();
      temporizador = HIGH;
    }
    if ( millis() - inicio < seg_off * 1000)
    {
      digitalWrite(celula, encender);
      digitalWrite(ventilador, encender);
      for (j = 0; j < NUM_LEDS; j++)
      {
        leds[j] = CRGB::Yellow;
        FastLED.show();
        delay(tiempoLED);
      }
    }
    else
    {
      digitalWrite(celula, apagar);
      digitalWrite(ventilador, apagar);
      for (j = 0; j < NUM_LEDS; j++)
      {
        leds[j] = CRGB::Red;
        FastLED.show();
        delay(tiempoLED);
      }
    }
  }
  delay(pausa);
}

¿Te lo quieres montar en casa? Estos son los componentes que necesitas:

Bebiendo
Desconexión