viernes, 24 de enero de 2014

Leds

Los leds son la forma más habitual de mostrar un estado en arduino. Los hay de varios colores, pero los más habituales son rojos y verdes. También son comunes los blancos y azules que dan mucha luminosidad. 

Los diodos leds consumen unos 2,2 voltios y 15 ma , por lo que hace falta poner una resistencia en serie que consuma los 3-3,3 voltios que quedan hasta 5,5 o probablemente se queme en unos minutos.

 Usando la formula de V=R*I, para calcular la resistencia : 3,3= R*0,015 --> R = 220 ohmios. Yo he probado con resistencias de 100 Ohmios (no tenia de 220 y poner dos en serie afea mucho ;) ) y los leds se comportan adecuadamente.

El  primer programa de prueba utiliza 10 leds para hacer efectos de flash como los de los arboles de navidad. Derivado de un programa que cogí de un kit de SainSmart)fabricante y vendedor de arduinos y componentes (Sample Code And Tutorials Download (23 Chapters Included) ).

en el video se ve un shield (PCB con pies que encaja directamente sobre arduino Uno ) de prototipado, esto permite montar un esquema con uchos componentes y dejarlo montado sin inhabilitar el arduino. Hasta que se te acaban las Bread boards y los cables ;(...

El shield es de DX.com y cuesta unos 3,5€ incluida una pequeña bread board que cabe en la zona de prototipo por si no quieres soldar y el montaje es pequeño.


int n =10; //Número de leds
int t=100; //Retardo
int m=5;//la mitad de 10 :)

void style_1(int a) //cuantas veces queremos que se repita el estilo 1
{
  int j,i;
  for(i=1;i<=a;i++){
    for(j=1;j<=n;j++)
    {
      digitalWrite(j,HIGH);
      delay(t);
    }
    for(j=n;j>=1;j--)
    {
      digitalWrite(j,LOW);
      delay(t);
    }
  }
}
void flash(int a)//cuantas veces que haga flash
{
  unsigned char j,k;
  for(k=0;k<=a;k++)
  {
    for(j=1;j<=n;j++)
      digitalWrite(j,HIGH);
    delay(t);
    for(j=1;j<=n;j++)
      digitalWrite(j,LOW);
    delay(t);
  }
}
void style_2(void) // a este no le he puesto número de repeticiones
{
  unsigned char j,k;
  k=1;
  for(j=m;j>=1;j--)
  {
    digitalWrite(j,HIGH);
    digitalWrite(j+k,HIGH);
    delay(2*t);
    k +=2;
  }
  k=9;
  for(j=1;j<=m;j++)
  {
    digitalWrite(j,LOW);
    digitalWrite(j+k,LOW);
    delay(2*t);
    k -=2;
  }
}
void style_3(void)// a este no le he puesto número de repeticiones
{
  unsigned char j,k;
  k=9;
  for(j=1;j<=m;j++)
  {
    digitalWrite(j,HIGH);
    digitalWrite(j+k,HIGH);
    delay(2*t);
    digitalWrite(j,LOW);
    digitalWrite(j+k,LOW);
    k -=2;
  }
  k=5;
  for(j=2;j>=1;j--)
  {
    digitalWrite(j,HIGH);
    digitalWrite(j+k,HIGH);
    delay(2*t);
    digitalWrite(j,LOW);
    digitalWrite(j+k,LOW);
    k +=2;
  }
}
void setup()
{
  unsigned char i;
  for(i=1;i<=n;i++)
    pinMode(i,OUTPUT);
}
void loop()
{
  style_1(2);
  flash(1);
  style_2();
  flash(2);
  style_3();
  flash(3);
  style_2();
  flash(4);
  style_1(2);
  flash(5);
}


No hay comentarios:

Publicar un comentario