Chaleco para ciclista

Chaleco para ciclista. 

crearemos a continuación un  circuito con el objetivo de funcionar como luces direccionales y adviertan presencia, estas integradas en un chaleco destinado para ciclistas, se mostratara todos los pasos desde el armado del circuito, hasta la integracion en una placa impresa  para una mejor colocacion en el chaleco.

Componentes:

  • 10 LED's del color que se desee
  • 10 resistencias de 330 ohmnios
  • 3 push botton
  • 4 resistencias de 10 Kohmnios
  • Bornera de 2 pines
  • regulador de voltaje 7805
  • 1 condensador de 100uF, 10uF Y 0,1uF
  • 2 condensadores de 22uF
  • Integrado ATMEGA 328-P

Programa:

El funcionamiento de las luces esta basado en 3 programas distintos que seran activados por los pulsadores y uno mas que correra al no pulsarse ningun boton(siendo este para advertir laposicion del ciclista), estos programas son Izquierda, Derecha, Alto  y Ociosa
Fnalmente integraremos todos estos programas para crear el código completo al cual denominaremos CHALECO

    IZQUIERDA

  •   Este programa sera activado con el primer pulsador comenzando desde la izquierda e iniciara un patrón en los LED's de  manera que se podrá observar como una flecha (apuntando a la izquierda) se desplazara de derecha a izquierda, siempre y cuando se mantenga presionado el pulsador.
// Variables
int bot = 3;
int led[] = {4,5,6,7,8,9,10,11,12,13};
int numLeds = 10;
int tiempoRet = 400;
int estePin;
int cuenta_izq = 0;
boolean bot_izq = LOW;
// Función setup
void setup ()
{
 pinMode (bot,INPUT);
 for (estePin = 0; estePin < numLeds; estePin++)
 {
 pinMode (led[estePin],OUTPUT);
 }
}
// Función loop
void loop ()
{
 bot_izq = digitalRead (bot);
 if (bot_izq==HIGH)
 {
 switch (cuenta_izq)
 {
 case 0:
 digitalWrite (led[2],HIGH);
 digitalWrite (led[9],HIGH);
 digitalWrite (led[4],HIGH);
 break;
 case 1:
 digitalWrite (led[1],HIGH);
 digitalWrite (led[8],HIGH);
 digitalWrite (led[5],HIGH);
 break;
 case 2:
 digitalWrite (led[0],HIGH);
 digitalWrite (led[7],HIGH);
 digitalWrite (led[6],HIGH);
 break;
 default:
 ;
 }
 delay (tiempoRet);
 cuenta_izq++;
 if (cuenta_izq > 3)
 {
 cuenta_izq = 0;
 }
 }
 for (estePin = 0; estePin < numLeds; estePin++)
 {
 digitalWrite (led[estePin],LOW);
 }
}



   DERECHA

  •   Este programa sera activado con el tercer pulsador comenzando desde la izquierda e iniciara un patrón en los LED's de  manera que se podrá observar como una flecha (apuntando a la derecha) se desplazara de izquierda a derecha, siempre y cuando se mantenga presionado el pulsador.
// Variables
int bot = 2;
int led[] = {4,5,6,7,8,9,10,11,12,13};
int numLeds = 10;
int tiempoRet = 400;
int estePin;
int cuenta_der = 0;
boolean bot_der = LOW;
// Función setup
void setup ()
{
 pinMode (bot,INPUT);
 for (estePin = 0; estePin < numLeds; estePin++)
 {
 pinMode (led[estePin],OUTPUT);
 }
}
// Función loop
void loop ()
{
 bot_der = digitalRead (bot);
 if (bot_der ==HIGH)
 {
 switch (cuenta_der)
 {
 case 0:
 digitalWrite (led[0],HIGH);
 digitalWrite (led[8],HIGH);
 digitalWrite (led[6],HIGH);
 break;
 case 1:
 digitalWrite (led[1],HIGH);
 digitalWrite (led[9],HIGH);
 digitalWrite (led[5],HIGH);
 break;
 case 2:
 digitalWrite (led[2],HIGH);
 digitalWrite (led[3],HIGH);
 digitalWrite (led[4],HIGH);
 break;
 default:
 ;
 }
 delay (tiempoRet);
 cuenta_der++;
 if (cuenta_der > 3)
 {
 cuenta_der = 0;
 }
 }
 for (estePin = 0; estePin < numLeds; estePin++)
 {
 digitalWrite (led[estePin],LOW);
 }
}

   ALTO

  •   Este programa sera activado con el segundo pulsador comenzando desde la izquierda que correrá una secuencia de iluminación en los LED's de forma en que todos se encenderán y apagaran simultáneamente con un tiempo de delay de 1 segundo, haciendo que la señal se puede percibir parpadeando.
 // variables

 int bot=2;
 int led[]={4,5,6,7,8,9,10,11,12,13};
 int numLeds=10;
 int tiempoRet=400;
 int estePin;

 void setup()
 {
  pinMode(bot,INPUT);

  for(estePin=0; estePin < numLeds; estePin++)
  {
   pinMode(led[estePin],OUTPUT); 
  }
 }

 void loop()
 {
  boolean bot_alto=digitalRead(bot);
  if(bot_alto)
  {
    for(estePin=0; estePin < numLeds; estePin++)
    {
      digitalWrite(led[estePin],HIGH);
    }
    delay(tiempoRet);
    for(estePin=0; estePin < numLeds; estePin++)
    {
      digitalWrite(led[estePin],LOW);
    }
    delay(tiempoRet);
  }
 }

 OCIOSA

  •   Finalmente este programa se desarrollara siempre que ningún pulsador este presionado  activando la secuencia de que los LED's se encenderán uno tras otro en fila y según la posición en que los colocamos, se podrá notar como un movimiento circular en el arreglo.
int led[]={4,5,6,7,8,9,10,11,12,13};
 int tiempoRetOciosa=200;

 void setup()
 {
  pinMode(led[0],OUTPUT);
  pinMode(led[1],OUTPUT);
  pinMode(led[2],OUTPUT);
  pinMode(led[3],OUTPUT);
  pinMode(led[4],OUTPUT);
  pinMode(led[5],OUTPUT);
  pinMode(led[6],OUTPUT);
  pinMode(led[7],OUTPUT);
  pinMode(led[8],OUTPUT);
  pinMode(led[9],OUTPUT);
 }

 void loop()

 {
  digitalWrite(led[0],HIGH);
  digitalWrite(led[4],HIGH);
  delay(tiempoRetOciosa);

  digitalWrite(led[0],LOW);
  digitalWrite(led[4],LOW);
  digitalWrite(led[1],HIGH);
  digitalWrite(led[5],HIGH);
  delay(tiempoRetOciosa);

  digitalWrite(led[1],LOW);
  digitalWrite(led[5],LOW);
  digitalWrite(led[2],HIGH);
  digitalWrite(led[6],HIGH);
  delay(tiempoRetOciosa);

  digitalWrite(led[2],LOW);
  digitalWrite(led[6],LOW);
  digitalWrite(led[3],HIGH);
  digitalWrite(led[7],HIGH);
  delay(tiempoRetOciosa);

  digitalWrite(led[3],LOW);
  digitalWrite(led[7],LOW);
  delay(tiempoRetOciosa);
 }

    CHALECO

// Variables
int bot[] = {1,2,3};
int led[] = {4,5,6,7,8,9,10,11,12,13};
int numLeds = 10;
int numBots = 3;
int tiempoRet = 400;
int tiempoRetOciosa = 200;
int estePin;
int cuenta_der = 0;
int cuenta_alto = 0;
int cuenta_izq = 0;
int cuenta_ocio = 0;
boolean bot_derecha = LOW;
boolean bot_alto = LOW;
boolean bot_izquierda = LOW;
// Función setup
void setup ()
{
for (estePin = 0; estePin < numBots; estePin++)
{
pinMode (bot[estePin],INPUT);
}
for (estePin = 0; estePin < numLeds; estePin++)
{
pinMode (led[estePin],OUTPUT);
}
}
// Función loop
void loop ()
{
for (estePin = 0; estePin < numLeds; estePin++)
{
digitalWrite (led[estePin], LOW);
}
bot_derecha = digitalRead (bot[0]);
bot_alto = digitalRead (bot[1]);
bot_izquierda = digitalRead (bot[2]);
if (bot_derecha==HIGH)
{
Derecha ();
}
else if (bot_alto==HIGH)
{
Alto ();
}
else if (bot_izquierda==HIGH)
{
Izquierda ();
}
else
{
Ociosa ();
}
}
// Función Derecha
void Derecha ()
{
switch (cuenta_der)
{
case 0:
digitalWrite (led[0],HIGH);
digitalWrite (led[8],HIGH);
digitalWrite (led[6],HIGH);
break;
case 1:
digitalWrite (led[1],HIGH);
digitalWrite (led[9],HIGH);
digitalWrite (led[5],HIGH);
break;
case 2:
digitalWrite (led[2],HIGH);
digitalWrite (led[3],HIGH);
digitalWrite (led[4],HIGH);
break;
default:
;
}
delay (tiempoRet);
cuenta_der++;
if (cuenta_der > 3)
{
cuenta_der = 0;
}
}
// Función Alto
void Alto ()
{
if (cuenta_alto == 1)
{
for (estePin = 0; estePin < numLeds; estePin++)
{
digitalWrite (led[estePin],HIGH);
}
}
else
{
for (estePin = 0; estePin < numLeds; estePin++)
{
digitalWrite (led[estePin],LOW);
}
}
delay (tiempoRet);
cuenta_alto++;
if (cuenta_alto > 1)
{
cuenta_alto = 0;
}
}
// Función Izquierda
void Izquierda ()
{
switch (cuenta_izq)
{
case 0:
digitalWrite (led[2],HIGH);
digitalWrite (led[9],HIGH);
digitalWrite (led[4],HIGH);
break;
case 1:
digitalWrite (led[1],HIGH);
digitalWrite (led[8],HIGH);
digitalWrite (led[5],HIGH);
break;
case 2:
digitalWrite (led[0],HIGH);
digitalWrite (led[7],HIGH);
digitalWrite (led[6],HIGH);
break;
default:
;
}
delay (tiempoRet);
cuenta_izq++;
if (cuenta_izq > 3)
{
cuenta_izq = 0;
}
}
// Función Ociosa
void Ociosa ()
{
digitalWrite (led[cuenta_ocio],HIGH);
digitalWrite (led[cuenta_ocio+4],HIGH);
delay (tiempoRetOciosa);
cuenta_ocio++;
if (cuenta_ocio > 3)
{
cuenta_ocio = 0;
}
}

CIRCUITO EN NUESTRA PLACA

Usaremos un placa de fibra de vidrio con dimensiones de 8 x 8cm donde diseñaremos nuestro circuito con el programa de eagle.
siguiendo el mismo orden aqui mostrado
y los componentes distribuidos de la siguiente forma



¿Cómo usarlas correctamente?

Girar el medio de transporte, es decir nuestra bicicleta y cambiar de carril (sobre todo en vías rápidas) no son maniobras que deban tomarse a la ligera por eso:
  • Antes de realizar un giro o cambio de carril, reduce la velocidad.
  • Indica la dirección correcta: Si vas a la derecha, marca el giro a la derecha, y viceversa.
  • También es importante observar el paso de ciclistas y peatones por donde se va a realizar el giro.

EXPLICACIÓN DEL CÓDIGO "CHALECO"


PRESENTACIÓN DEL CÓDIGO "CHALECO" EN LA PLACA

Comentarios

Entradas populares de este blog

Araña robótica con Arduino

Pastillero inteligente