PIC Adicto

5 agosto 2009

Leds Viajeros

Archivado en: 16F,Código CCS,Circuitos — picadicto @ 10:34

auto_fantastico

Recuerdan el auto fantástico? Bueno como se ve en la imagen, tenía una tira de LEDs que iban y venían de un lado a otro. Vamos a ver como podemos hacer esto con un PIC usando 8 LEDs y pudiendo cambiar el tiempo en que cada uno esté encendido. Para esto usaremos el compilador CCS y Proteus para la simulación.

Circuito

Bien simple, un PIC16F873A, una barra de 10 LEDs y un potenciómetro que permitirá regular el tiempo de encendido y dos resistencias: una fija un uno lógico en el pin MCLR y la otra limita la corriente por los LEDs.

circuito_auto_fantastico

Código
Con estas nuestro código aparecerá como el que

void main(){
long tiempo;
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_INTERNAL);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
set_tris_b(0x00);
set_tris_c(0x00);
portb = 0;
portc = 0;
set_adc_channel(0);
do{
output_high(PIN_B0);
tiempo = read_adc();
delay_ms(tiempo);
output_low(PIN_B0);
output_high(PIN_B1);
tiempo = read_adc();
delay_ms(tiempo);
output_low(PIN_B1);
output_high(PIN_B2);
tiempo = read_adc();
delay_ms(tiempo);
output_low(PIN_B2);
output_high(PIN_B3);
tiempo = read_adc();
delay_ms(tiempo);
output_low(PIN_B3);
output_high(PIN_B4);
tiempo = read_adc();
delay_ms(tiempo);
output_low(PIN_B4);
output_high(PIN_B5);
tiempo = read_adc();
delay_ms(tiempo);
output_low(PIN_B5);
output_high(PIN_B6);
tiempo = read_adc();
delay_ms(tiempo);
output_low(PIN_B6);
output_high(PIN_B7);
tiempo = read_adc();
delay_ms(tiempo);
output_low(PIN_B7);
output_high(PIN_C0);
tiempo = read_adc();
delay_ms(tiempo);
output_low(PIN_C0);
output_high(PIN_C1);
tiempo = read_adc();
delay_ms(tiempo);
output_low(PIN_C1);
output_high(PIN_C0);
tiempo = read_adc();
delay_ms(tiempo);
output_low(PIN_C0);
output_high(PIN_B7);
tiempo = read_adc();
delay_ms(tiempo);
output_low(PIN_B7);
output_high(PIN_B6);
tiempo = read_adc();
delay_ms(tiempo);
output_low(PIN_B6);
output_high(PIN_B5);
tiempo = read_adc();
delay_ms(tiempo);
output_low(PIN_B5);
output_high(PIN_B4);
tiempo = read_adc();
delay_ms(tiempo);
output_low(PIN_B4);
output_high(PIN_B3);
tiempo = read_adc();
delay_ms(tiempo);
output_low(PIN_B3);
output_high(PIN_B2);
tiempo = read_adc();
delay_ms(tiempo);
output_low(PIN_B2);
output_high(PIN_B1);
tiempo = read_adc();
delay_ms(tiempo);
output_low(PIN_B1);
output_high(PIN_B0);
tiempo = read_adc();
delay_ms(tiempo);
output_low(PIN_B0);
}while(TRUE);}

Simulación

El resultado de la simulación se puede ver en este video, observar como varía el tiempo de encendido de cada LED a medida que se varía el potenciómetro:

Advertisement

8 comentarios »

  1. [...] otro post, recordé el auto fantástico y como generar un efecto como el de las luces de la trompa de aquel auto. Acádejo un video del [...]

    Pingback por Placa de desarrollo Explorer 16 « PIC Adicto — 17 agosto 2009 @ 9:40 | Responder

  2. muy bueno!!

    Comentario por Adrian — 17 agosto 2009 @ 21:25 | Responder

  3. Felicitaciones por el sitio, espero que siga progresando. Estoy entrando en este mundo de los pic con CCS y espero contar con tu ayuda. Aprovecho para hacerte una consulta: se puede hacer un programa en pic con 16f84A de tal manera que colocando un 1 en un pin (porejuemplo RB0) haga activar otro pin por (RB1), por ejemplo 30 segundos y luego otro pin (RB2) por otros 30 segundos? La idea es, al activar RB0, RB1 se pone a 1 y me hace funcionar un motor CC, luego de un tiempo, se activa el RB2 y hace rotar el motor en sentido inverso. Algo importante, que no importe si el pin RB0 SIGUE activado con un 1. Muchas gracias y suerte.

    Comentario por Justo Velarde — 17 agosto 2009 @ 21:31 | Responder

    • @Justo: en estos días preparo un post con algo parecido a lo que necesitas, claro que se puede hacer con PICs!
      @Adrían: Muchas gracias por los comentarios, en relación a tu comentario en el otro post tengo idea de hacer una especie de tutorial de cómo usar los programadores comerciales y caseros para programar los PICs.

      Comentario por picadicto — 18 agosto 2009 @ 8:32 | Responder

  4. sorprendente!!!!!

    Comentario por dany — 30 octubre 2009 @ 18:28 | Responder

  5. hola soy nuevo en esto y tengo un par de dudas…
    la primera sobre el valor de las resistencias, y lo mas importante el pic viene programado es decir esto se monta sobre una placa se alimenta y funciona o tiene que estar conectado al ordenador?

    Comentario por amoscalla — 13 diciembre 2009 @ 22:10 | Responder

  6. Gracias por la ayuda….se me olvida

    Comentario por amoscalla — 13 diciembre 2009 @ 22:11 | Responder

  7. que tal, quiero armar ese de los leds
    alguien me podria ayudar con que valor tienen las resistencias
    gracias……..saludos

    Comentario por MARTHA — 4 septiembre 2010 @ 20:17 | Responder


RSS feed para los comentarios de esta entrada. URI para TrackBack.

Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s

Theme: Rubric. Blog de WordPress.com.

Seguir

Get every new post delivered to your Inbox.