Problema con PIC16F628A y matriz de LED

Hola a todos.
estoy desarrollando una pequeña matriz de leds para una luz trasera para bicicleta, de tal manera que esta pueda hacer animaciones.
acabo de terminarla pero al momento de alimentar el circuito queda estatico(todos los leds encendidos).
agradesco a quien pueda ayudarme a solucionar este problema.

dejo adjundo un archivo comprimido con los esquemas en proteus y en PDF, tanto del PCB como el esquematico y el pequeño codigo que tengo(y unas foticos).

lo subi a mediafire porque pesa mas de 2mb.

link: Stop animado para Bici.


Agradesco toda la ayuda posible, ya que hice esta luz pues mi bicicleta es mi transporte y la uso en la noche, si pongo esta luz podrian verme mejor.
 
Hola Ericktronic

Revise tu circuito y no encontre problema.
Parece ser que el problema es el codigo, probablemente sea un error al declarar TRISA y TRISB.

Intenta meterle a tu pic un programa similar que use las salidas y que de antemano sepas que funcione y asi comprobrar que efectivamente es un error en el codigo.

Saludos,
 
Hola a todos.
estoy desarrollando una pequeña matriz de leds para una luz trasera para bicicleta, de tal manera que esta pueda hacer animaciones.
acabo de terminarla pero al momento de alimentar el circuito queda estatico(todos los leds encendidos).

Agradesco toda la ayuda posible, ya que hice esta luz pues mi bicicleta es mi transporte y la uso en la noche, si pongo esta luz podrian verme mejor.
Saludos Ericktronik.

¿No será porque te hace falta declarar los comparadores analógicos del puerto A en OFF?

Como por ejemplo con esta instrucción:

#byte CMCON = 0x1F // Referencia al registro CMCON
Void main(){
CMCON = 0x07; // Comparadores analógicos OFF (CM2,CM1,CM0 = b'111')

Espero que eso sea el problema.

Suerte y exito en tus proyectos.
 
Hola.
ya funciona, solo que por alguna extraña razon se quemaron 3 leds en diferentes lugares.
lo que hize fue re-programar el PIC.
gracias por su colaboracion.
tratere de hacer el aporte de esta luz en cuando tenga tiempo.
 
hola a todos.
el circuito funciona a la perfeccion, ahora quiero usar el pin A5 para seleccionar el tipo de secuencias que quiero que aparescan.
segun el programa, si esta en 1 entra al ciclo infinito y crea algunas animaciones, pero si esta en 0 deberia quedar totalmente encendido.
cuando programo el pic no hay problema, pero al probarlo simplemente hace todas las animaciones independientemente de la poscicion del interruptor.

espero puedan ayudarme.
aca esta el codigo:

Código:
#include <16F628a.h>
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES INTRC_IO                 //Reloj Interno
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOMCLR                   //No se usa el pin del master clear
#FUSES NOLVP                    //No se programa con bajo voltaje, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection
#use delay(clock=4000000)

#bit y1=0x05.2
#bit y2=0x05.3
#bit y3=0x05.4
#bit y4=0x06.0
#bit y5=0x06.1
#bit y6=0x06.2
#bit y7=0x06.3
#bit y8=0x06.6
#bit y9=0x06.5
#bit y10=0x06.4

#bit x5=0x05.1
#bit x4=0x05.0
#bit x3=0x05.7
#bit x2=0x05.6
#bit x1=0x06.7
int type=0;
int i,a;

void alloff(int){
output_a(0x00);
output_b(0x00);
}
void allon(int){
output_a(0xff);
output_b(0xff);
}
void xon(int){x1=x2=x3=x4=x5=1;}
void yon(int){y1=y2=y3=y4=y5=y6=y7=y8=y9=y10=1;}
void xoff(int){x1=x2=x3=x4=x5=0;}
void yoff(int){y1=y2=y3=y4=y5=y6=y7=y8=y9=y10=0;}


Void strobe(int){
for(i=0;i<=5;i++){
allon(1);
delay_ms(50);
alloff(1);
delay_ms(50);
allon(1);
delay_ms(50);
alloff(1);
delay_ms(50);
allon(1);
delay_ms(50);
alloff(1);
delay_ms(300);
}
}
void downup(int){
y1=y2=y3=y4=y5=y6=y7=y8=y9=y10=1;
x1=1;
delay_ms(100);
x2=1;
delay_ms(100);
x3=1;
delay_ms(100);
x4=1;
delay_ms(100);
x5=1;
delay_ms(100);
}
void updown(int){
y1=y2=y3=y4=y5=y6=y7=y8=y9=y10=1;
x5=1;
delay_ms(100);
x4=1;
delay_ms(100);
x3=1;
delay_ms(100);
x2=1;
delay_ms(100);
x1=1;
delay_ms(100);
}
void downupoff(int){
y1=y2=y3=y4=y5=y6=y7=y8=y9=y10=1;
x1=0;
delay_ms(100);
x2=0;
delay_ms(100);
x3=0;
delay_ms(100);
x4=0;
delay_ms(100);
x5=0;
delay_ms(100);
}
void updownoff(int){
y1=y2=y3=y4=y5=y6=y7=y8=y9=y10=1;
x5=0;
delay_ms(100);
x4=0;
delay_ms(100);
x3=0;
delay_ms(100);
x2=0;
delay_ms(100);
x1=0;
delay_ms(100);
}
void rlon(int){
delay_ms(50);
y1=1;
delay_ms(100);
y2=1;
delay_ms(100);
y3=1;
delay_ms(100);
y4=1;
delay_ms(100);
y5=1;
delay_ms(100);
y6=1;
delay_ms(100);
y7=1;
delay_ms(100);
y8=1;
delay_ms(100);
y9=1;
delay_ms(100);
y10=1;
delay_ms(100);
}
void lron(int){
delay_ms(50);
y10=1;
delay_ms(100);
y9=1;
delay_ms(100);
y8=1;
delay_ms(100);
y7=1;
delay_ms(100);
y6=1;
delay_ms(100);
y5=1;
delay_ms(100);
y4=1;
delay_ms(100);
y3=1;
delay_ms(100);
y2=1;
delay_ms(100);
y1=1;
delay_ms(100);
}
void rloff(int){
delay_ms(50);
y1=0;
delay_ms(100);
y2=0;
delay_ms(100);
y3=0;
delay_ms(100);
y4=0;
delay_ms(100);
y5=0;
delay_ms(100);
y6=0;
delay_ms(100);
y7=0;
delay_ms(100);
y8=0;
delay_ms(100);
y9=0;
delay_ms(100);
y10=0;
delay_ms(100);
}
void lroff(int){
delay_ms(50);
y10=0;
delay_ms(100);
y9=0;
delay_ms(100);
y8=0;
delay_ms(100);
y7=0;
delay_ms(100);
y6=0;
delay_ms(100);
y5=0;
delay_ms(100);
y4=0;
delay_ms(100);
y3=0;
delay_ms(100);
y2=0;
delay_ms(100);
y1=0;
delay_ms(100);
}
void cuadros1(int){
for(a=0;a<=10;a++){
x3=y3=y4=y5=y6=y7=y8=1;
delay_ms(250);
alloff(1);
for(i=0;i<=254;i++){
x2=x3=x4=y2=y9=1;
delay_ms(1);
alloff(1);
x2=x4=y2=y3=y4=y5=y6=y7=y8=y9=1;
delay_ms(1);
alloff(1);
}
for(i=0;i<=254;i++){
x1=x2=x3=x4=x5=y1=y10=1;
delay_ms(1);
alloff(1);
x1=x5=y1=y2=y3=y4=y5=y6=y7=y8=y9=y10=1;
delay_ms(1);
alloff(1);
}
}
}
void cuadros2(int){
alloff(1);
for(a=0;a<=10;a++){
for(i=0;i<=128;i++){
x1=x2=x3=x4=x5=y1=y4=y7=y10=1;
delay_ms(1);
alloff(1);
x1=x5=y1=y2=y3=y4=y7=y8=y9=y10=1;
delay_ms(1);
alloff(1);
}
for(i=0;i<=128;i++){
x2=x3=x4=y2=y3=y8=y9=1;
delay_ms(2);
alloff(1);
}
}
}
void bolitas1(int){
for(a=0;a<=10;a++){
alloff(1);
for(i=0;i<=254;i++){
x1=x4=Y2=y3=y8=y9=1;
delay_ms(1);
alloff(1);
x2=x3=y1=y4=y7=y10=1;
delay_ms(1);
alloff(1);
}
y2=y3=y5=y6=y8=y9=x2=x3=1;
delay_ms(252);
}
}
void caras(int){
for(a=0;a<=5;a++){
for(i=0;i<=254;i++){
x1=y3=y8=1;
delay_ms(1);
x1=0;
yoff(1);
x2=y2=y4=y7=y9=1;
delay_ms(1);
x2=0;
yoff(1);
x4=y1=y10=1;
delay_ms(1);
x4=0;
x5=1;
yon(1);
delay_ms(1);
alloff(1);
}
}
delay_ms(100);
strobe(1);
delay_ms(100);
for(a=0;a<=5;a++){
for(i=0;i<=254;i++){
x1=y2=y3=y8=y9=1;
delay_ms(1);
x1=0;
x2=y2=y3=y8=y9=1;
delay_ms(1);
x2=0;
yoff(1);
x3=y5=y6=1;
delay_ms(1);
x3=y5=y6=0;
x4=y1=y10=1;
delay_ms(1);
x4=0;
x5=1;
yon(1);
delay_ms(1);
alloff(1);
}
}
}
void stop(int){
for(a=0;a<=5;a++){
for(i=0;i<=254;i++){//PA
x1=y1=y2=y3=y8=y9=1;
delay_ms(1);
alloff(1);
x1=0;
x2=y1=y4=y7=y10=1;
delay_ms(1);
x2=0;
alloff(1);
x3=y1=y2=y3=y7=y8=y9=y10=1;
delay_ms(1);
x3=0;
alloff(1);
delay_us(20);
x4=y1=y7=y10=1;
delay_ms(1);
x4=0;
x5=y1=y7=y10=1;
delay_ms(1);
alloff(1);
}
for(i=0;i<=254;i++){//RE
x1=y1=y2=y3=y7=y8=y9=y10=1;
delay_ms(1);
alloff(1);
x1=0;
x2=y1=y4=y7=1;
delay_ms(1);
x2=0;
alloff(1);
x3=y1=y2=y3=y7=y8=y9=1;
delay_ms(1);
x3=0;
alloff(1);
x4=y1=y3=y7=1;
delay_ms(1);
x4=0;
alloff(1);
x5=y1=y4=y7=y8=y9=y10=1;
delay_ms(1);
alloff(1);
}
}
}

Void main(){
set_tris_a(0xff);
set_tris_b(0xff);
input(pin_A5);
delay_ms(100);
while(true){//ciclo infinito
tipo:
type=input(pin_a5);
delay_ms(10);
while(type==1){
stop(1);type=input(pin_a5);if(type==0){goto tipo;}
bolitas1(1);type=input(pin_a5);if(type==0){goto tipo;}
strobe(1);type=input(pin_a5);if(type==0){goto tipo;}
caras(1);type=input(pin_a5);if(type==0){goto tipo;}
strobe(1);type=input(pin_a5);if(type==0){goto tipo;}
cuadros2(1);type=input(pin_a5);if(type==0){goto tipo;}
strobe(1);type=input(pin_a5);if(type==0){goto tipo;}
cuadros1(1);type=input(pin_a5);if(type==0){goto tipo;}
strobe(1);type=input(pin_a5);if(type==0){goto tipo;}
stop(1);type=input(pin_a5);if(type==0){goto tipo;}
downup(1);type=input(pin_a5);if(type==0){goto tipo;}
updownoff(1);type=input(pin_a5);if(type==0){goto tipo;}
updown(1);type=input(pin_a5);if(type==0){goto tipo;}
downupoff(1);type=input(pin_a5);if(type==0){goto tipo;}
alloff(1);type=input(pin_a5);if(type==0){goto tipo;}
delay_ms(5);
alloff(1);type=input(pin_a5);if(type==0){goto tipo;}
xon(1);type=input(pin_a5);if(type==0){goto tipo;}
rlon(1);type=input(pin_a5);if(type==0){goto tipo;}
lroff(1);type=input(pin_a5);if(type==0){goto tipo;}
lron(1);type=input(pin_a5);if(type==0){goto tipo;}
rloff(1);type=input(pin_a5);if(type==0){goto tipo;}
alloff(1);type=input(pin_a5);if(type==0){goto tipo;}
}
//cuadros2(1);type=input(pin_a5);if(type==1){goto tipo;}
//strobe(1);
output_b(0xff);
output_a(0xff);
type=input(pin_a5);if(type==1){goto tipo;}
delay_ms(10);
}
}



ya esta solucionado.
solo puse una resistencia de 10k entre A5 y tierra.

sucedia que quedaba en un limbo logico porque no tenia punto de referencia 0, por eso siempre lo tomaba como 1.
 
Última edición:
hola a todos.
el circuito funciona a la perfeccion, ahora quiero usar el pin A5 para seleccionar el tipo de secuencias que quiero que aparescan.
segun el programa, si esta en 1 entra al ciclo infinito y crea algunas animaciones, pero si esta en 0 deberia quedar totalmente encendido.
cuando programo el pic no hay problema, pero al probarlo simplemente hace todas las animaciones independientemente de la poscicion del interruptor.

espero puedan ayudarme.
aca esta el codigo:

Código:
#include <16F628a.h>
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES INTRC_IO                 //Reloj Interno
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOMCLR                   //No se usa el pin del master clear
#FUSES NOLVP                    //No se programa con bajo voltaje, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection
#use delay(clock=4000000)

#bit y1=0x05.2
#bit y2=0x05.3
#bit y3=0x05.4
#bit y4=0x06.0
#bit y5=0x06.1
#bit y6=0x06.2
#bit y7=0x06.3
#bit y8=0x06.6
#bit y9=0x06.5
#bit y10=0x06.4

#bit x5=0x05.1
#bit x4=0x05.0
#bit x3=0x05.7
#bit x2=0x05.6
#bit x1=0x06.7
int type=0;
int i,a;

void alloff(int){
output_a(0x00);
output_b(0x00);
}
void allon(int){
output_a(0xff);
output_b(0xff);
}
void xon(int){x1=x2=x3=x4=x5=1;}
void yon(int){y1=y2=y3=y4=y5=y6=y7=y8=y9=y10=1;}
void xoff(int){x1=x2=x3=x4=x5=0;}
void yoff(int){y1=y2=y3=y4=y5=y6=y7=y8=y9=y10=0;}


Void strobe(int){
for(i=0;i<=5;i++){
allon(1);
delay_ms(50);
alloff(1);
delay_ms(50);
allon(1);
delay_ms(50);
alloff(1);
delay_ms(50);
allon(1);
delay_ms(50);
alloff(1);
delay_ms(300);
}
}
void downup(int){
y1=y2=y3=y4=y5=y6=y7=y8=y9=y10=1;
x1=1;
delay_ms(100);
x2=1;
delay_ms(100);
x3=1;
delay_ms(100);
x4=1;
delay_ms(100);
x5=1;
delay_ms(100);
}
void updown(int){
y1=y2=y3=y4=y5=y6=y7=y8=y9=y10=1;
x5=1;
delay_ms(100);
x4=1;
delay_ms(100);
x3=1;
delay_ms(100);
x2=1;
delay_ms(100);
x1=1;
delay_ms(100);
}
void downupoff(int){
y1=y2=y3=y4=y5=y6=y7=y8=y9=y10=1;
x1=0;
delay_ms(100);
x2=0;
delay_ms(100);
x3=0;
delay_ms(100);
x4=0;
delay_ms(100);
x5=0;
delay_ms(100);
}
void updownoff(int){
y1=y2=y3=y4=y5=y6=y7=y8=y9=y10=1;
x5=0;
delay_ms(100);
x4=0;
delay_ms(100);
x3=0;
delay_ms(100);
x2=0;
delay_ms(100);
x1=0;
delay_ms(100);
}
void rlon(int){
delay_ms(50);
y1=1;
delay_ms(100);
y2=1;
delay_ms(100);
y3=1;
delay_ms(100);
y4=1;
delay_ms(100);
y5=1;
delay_ms(100);
y6=1;
delay_ms(100);
y7=1;
delay_ms(100);
y8=1;
delay_ms(100);
y9=1;
delay_ms(100);
y10=1;
delay_ms(100);
}
void lron(int){
delay_ms(50);
y10=1;
delay_ms(100);
y9=1;
delay_ms(100);
y8=1;
delay_ms(100);
y7=1;
delay_ms(100);
y6=1;
delay_ms(100);
y5=1;
delay_ms(100);
y4=1;
delay_ms(100);
y3=1;
delay_ms(100);
y2=1;
delay_ms(100);
y1=1;
delay_ms(100);
}
void rloff(int){
delay_ms(50);
y1=0;
delay_ms(100);
y2=0;
delay_ms(100);
y3=0;
delay_ms(100);
y4=0;
delay_ms(100);
y5=0;
delay_ms(100);
y6=0;
delay_ms(100);
y7=0;
delay_ms(100);
y8=0;
delay_ms(100);
y9=0;
delay_ms(100);
y10=0;
delay_ms(100);
}
void lroff(int){
delay_ms(50);
y10=0;
delay_ms(100);
y9=0;
delay_ms(100);
y8=0;
delay_ms(100);
y7=0;
delay_ms(100);
y6=0;
delay_ms(100);
y5=0;
delay_ms(100);
y4=0;
delay_ms(100);
y3=0;
delay_ms(100);
y2=0;
delay_ms(100);
y1=0;
delay_ms(100);
}
void cuadros1(int){
for(a=0;a<=10;a++){
x3=y3=y4=y5=y6=y7=y8=1;
delay_ms(250);
alloff(1);
for(i=0;i<=254;i++){
x2=x3=x4=y2=y9=1;
delay_ms(1);
alloff(1);
x2=x4=y2=y3=y4=y5=y6=y7=y8=y9=1;
delay_ms(1);
alloff(1);
}
for(i=0;i<=254;i++){
x1=x2=x3=x4=x5=y1=y10=1;
delay_ms(1);
alloff(1);
x1=x5=y1=y2=y3=y4=y5=y6=y7=y8=y9=y10=1;
delay_ms(1);
alloff(1);
}
}
}
void cuadros2(int){
alloff(1);
for(a=0;a<=10;a++){
for(i=0;i<=128;i++){
x1=x2=x3=x4=x5=y1=y4=y7=y10=1;
delay_ms(1);
alloff(1);
x1=x5=y1=y2=y3=y4=y7=y8=y9=y10=1;
delay_ms(1);
alloff(1);
}
for(i=0;i<=128;i++){
x2=x3=x4=y2=y3=y8=y9=1;
delay_ms(2);
alloff(1);
}
}
}
void bolitas1(int){
for(a=0;a<=10;a++){
alloff(1);
for(i=0;i<=254;i++){
x1=x4=Y2=y3=y8=y9=1;
delay_ms(1);
alloff(1);
x2=x3=y1=y4=y7=y10=1;
delay_ms(1);
alloff(1);
}
y2=y3=y5=y6=y8=y9=x2=x3=1;
delay_ms(252);
}
}
void caras(int){
for(a=0;a<=5;a++){
for(i=0;i<=254;i++){
x1=y3=y8=1;
delay_ms(1);
x1=0;
yoff(1);
x2=y2=y4=y7=y9=1;
delay_ms(1);
x2=0;
yoff(1);
x4=y1=y10=1;
delay_ms(1);
x4=0;
x5=1;
yon(1);
delay_ms(1);
alloff(1);
}
}
delay_ms(100);
strobe(1);
delay_ms(100);
for(a=0;a<=5;a++){
for(i=0;i<=254;i++){
x1=y2=y3=y8=y9=1;
delay_ms(1);
x1=0;
x2=y2=y3=y8=y9=1;
delay_ms(1);
x2=0;
yoff(1);
x3=y5=y6=1;
delay_ms(1);
x3=y5=y6=0;
x4=y1=y10=1;
delay_ms(1);
x4=0;
x5=1;
yon(1);
delay_ms(1);
alloff(1);
}
}
}
void stop(int){
for(a=0;a<=5;a++){
for(i=0;i<=254;i++){//PA
x1=y1=y2=y3=y8=y9=1;
delay_ms(1);
alloff(1);
x1=0;
x2=y1=y4=y7=y10=1;
delay_ms(1);
x2=0;
alloff(1);
x3=y1=y2=y3=y7=y8=y9=y10=1;
delay_ms(1);
x3=0;
alloff(1);
delay_us(20);
x4=y1=y7=y10=1;
delay_ms(1);
x4=0;
x5=y1=y7=y10=1;
delay_ms(1);
alloff(1);
}
for(i=0;i<=254;i++){//RE
x1=y1=y2=y3=y7=y8=y9=y10=1;
delay_ms(1);
alloff(1);
x1=0;
x2=y1=y4=y7=1;
delay_ms(1);
x2=0;
alloff(1);
x3=y1=y2=y3=y7=y8=y9=1;
delay_ms(1);
x3=0;
alloff(1);
x4=y1=y3=y7=1;
delay_ms(1);
x4=0;
alloff(1);
x5=y1=y4=y7=y8=y9=y10=1;
delay_ms(1);
alloff(1);
}
}
}

Void main(){
set_tris_a(0xff);
set_tris_b(0xff);
input(pin_A5);
delay_ms(100);
while(true){//ciclo infinito
tipo:
type=input(pin_a5);
delay_ms(10);
while(type==1){
stop(1);type=input(pin_a5);if(type==0){goto tipo;}
bolitas1(1);type=input(pin_a5);if(type==0){goto tipo;}
strobe(1);type=input(pin_a5);if(type==0){goto tipo;}
caras(1);type=input(pin_a5);if(type==0){goto tipo;}
strobe(1);type=input(pin_a5);if(type==0){goto tipo;}
cuadros2(1);type=input(pin_a5);if(type==0){goto tipo;}
strobe(1);type=input(pin_a5);if(type==0){goto tipo;}
cuadros1(1);type=input(pin_a5);if(type==0){goto tipo;}
strobe(1);type=input(pin_a5);if(type==0){goto tipo;}
stop(1);type=input(pin_a5);if(type==0){goto tipo;}
downup(1);type=input(pin_a5);if(type==0){goto tipo;}
updownoff(1);type=input(pin_a5);if(type==0){goto tipo;}
updown(1);type=input(pin_a5);if(type==0){goto tipo;}
downupoff(1);type=input(pin_a5);if(type==0){goto tipo;}
alloff(1);type=input(pin_a5);if(type==0){goto tipo;}
delay_ms(5);
alloff(1);type=input(pin_a5);if(type==0){goto tipo;}
xon(1);type=input(pin_a5);if(type==0){goto tipo;}
rlon(1);type=input(pin_a5);if(type==0){goto tipo;}
lroff(1);type=input(pin_a5);if(type==0){goto tipo;}
lron(1);type=input(pin_a5);if(type==0){goto tipo;}
rloff(1);type=input(pin_a5);if(type==0){goto tipo;}
alloff(1);type=input(pin_a5);if(type==0){goto tipo;}
}
//cuadros2(1);type=input(pin_a5);if(type==1){goto tipo;}
//strobe(1);
output_b(0xff);
output_a(0xff);
type=input(pin_a5);if(type==1){goto tipo;}
delay_ms(10);
}
}



ya esta solucionado.
solo puse una resistencia de 10k entre A5 y tierra.

sucedia que quedaba en un limbo logico porque no tenia punto de referencia 0, por eso siempre lo tomaba como 1.

Genial gracias por compartirlo en horabuena que esta OK:apreton:(y):aplauso::aplauso::aplauso:
 
Hola a todos.
estoy desarrollando una pequeña matriz de leds para una luz trasera para bicicleta, de tal manera que esta pueda hacer animaciones.
acabo de terminarla pero al momento de alimentar el circuito queda estatico(todos los leds encendidos).
agradesco a quien pueda ayudarme a solucionar este problema.

dejo adjundo un archivo comprimido con los esquemas en proteus y en PDF, tanto del PCB como el esquematico y el pequeño codigo que tengo(y unas foticos).

lo subi a mediafire porque pesa mas de 2mb.

link: Stop animado para Bici.


Agradesco toda la ayuda posible, ya que hice esta luz pues mi bicicleta es mi transporte y la uso en la noche, si pongo esta luz podrian verme mejor.

cuando lo simulo en mi PC no encienden los leds :cry:; y salen error no se mucho de proteus :confused::confused::confused::confused:
 

Adjuntos

  • stop animado.JPG
    stop animado.JPG
    150.3 KB · Visitas: 41
Hola buenas tardes.

Estoy desarrollando una matriz de leds para una luz de frenado para un camión, de tal manera que esta pueda hacer animaciones.

Esta matriz debe trabajar a 12/ 24 V no estoy muy seguro si esta bien el esquemático no se si alguien pudiera ayudarme a revisarlo y decirme si es correcto o tiene alguna falla.

Les agradezco su ayuda.

dejo adjunto un archivo en PDF del esquemático gracias.

saludos


Es algo de lo que quiero hacer
 

Adjuntos

  • Plafon.pdf
    124.7 KB · Visitas: 16
¿Para qué sirven los circuitos conformados por Q2 y Q3?
Parecen reguladores que a su salida tendrán 2.25 V. Aproximadamente.
Si son las entradas de control, 2.25 V no es un nivel apto para un PIC sin ADC. (En dado caso que se quisiera comparar analógicamente)
Ese PIC tiene dos comparadores, pero creo que por ahí no viene el caso.

Con las resistencias de 1 kΩ, (R2 a R6) no tendrás la corriente suficiente para encender los LED a 5 V.
 
¿Para qué sirven los circuitos conformados por Q2 y Q3?
Parecen reguladores que a su salida tendrán 2.25 V. Aproximadamente.
Si son las entradas de control, 2.25 V no es un nivel apto para un PIC sin ADC. (En dado caso que se quisiera comparar analógicamente)
Ese PIC tiene dos comparadores, pero creo que por ahí no viene el caso.

Con las resistencias de 1 kΩ, (R2 a R6) no tendrás la corriente suficiente para encender los LED a 5 V.
En efecto los transistores los ocupo como reguladores saldran 5 volts de cada uno para poder utlizarlo como comparadores.
 
Hace tiempo hice algo así pero para una moto, y sólo utilicé el divisor y un diodo Zener.
Para darle prioridad al freno, usé una interrupción externa.
MotoStop.jpg
 
Hola. Buenas tardes. ¿Por qué cuando configuro el PIC en Microcode y compilo, me sale un error?
Y
no sé si puedo utilizar los pines del RA6 y RA7 como salidas.
Esos pines son del oscilador y quiero que en esos pines enciendan unos leds.
¿Tengo que configurar algo para poderlos utilizar? ¿Me pueden ayudar?

Adjunto el programa.
Código:
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2017 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 31/07/2017                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
 led VAR portb.0
loco:
HIGH led
pause 50
low led 
pause 50
GOTO loco
end
Gracias y saludos.
 

Adjuntos

  • matriz.rar
    311 bytes · Visitas: 12
Última edición por un moderador:
¿Por qué cuando configuro el PIC en Microcode y compilo, me sale un error?

Debes especificar qué error es el que aparece.
Y no sé si puedo utilizar los pines del RA6 y RA7 como salidas.
En el PIC16F628A sí se pueden utilizar esos pines como entradas o salidas, pero únicamente cuando se usa el oscilador interno.
Esos pines son del oscilador y quiero que en esos pines enciendan unos leds.
¿Tengo que configurar algo para poderlos utilizar?
Sí, los fuses de la palabra de configuración. Principalmente el fuse referente al oscilador.
¿Me pueden ayudar?

La mejor ayuda que puedes obtener para estos casos, es leer la hoja de datos.
 
En tu programa no has declarado como se comportara el puerto si inputo o output
la variable Var tampoco esta declarada el compilador no sabe de que tipo es ni de donde aparecio
Como te dijeron si utilizas el reloj interno puedes declarar esas dos patillas como salidas
Busca el manual, que incluso se consigue en español o en la misma ayuda del microcode en reverencia del lenguaje
Como se declaran las variables y como se setean los puertos
 
Atrás
Arriba