eletron1791
Membro Pleno-
Posts
187 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Fabricantes
Livros
Cursos
Análises
Fórum
Tudo que eletron1791 postou
-
PIC FOR + WHILE não funcionam juntos. Por que ?
eletron1791 respondeu ao tópico de eletron1791 em Microcontroladores
Boa ederlap, e como tem que ficar para rorarem juntos ? -
Já fiz de tudo. Não dá certo. Ou funciona o primeiro conjunto de comandos que chama uma função (sensor_ir) dentro do laço for. Ou funciona uma lógicazinha boba referente a dois botões. Já tentei pôr FOR dentro de WHILE e vice-versa, nada. Compila sem erros (ccs), mas os dois juntos não funcionam. Como tem que ficar pra funcionar os dois juntos ? ...alguém sabe (e quer dizer) ? ,,,mas assim, direto, sem mandar eu ler livros, tutoriais, etc. Desconfio que o motivo seja que ambos são laços de repetição infinita, mas preciso que as duas funções funcionem, e não aceita pôr os comandos juntos dentro de for ou dentro de while. GRATO for(;;){ if(sensor_ir()){ while(sensor_ir()){ output_high(PIN_B3); delay_ms(5); } } output_low(PIN_B3); } while(TRUE) { if(input(PIN_B0)==0){ while(input(PIN_B0)==0) delay_ms(100); output_high(PIN_B1); }
-
Prezados, Alguém tem o esquema de um simples dimmer para uma lâmpada 24 volts que possa ser ligado direto no secundário de um transformador (24 volts AC) ? ao invés de diac usar 2 diodos 1N4148 ou 1N4007 em contraposição. Usar Triac (BTA08 ou BTA12) para a lâmpada ir até o seu máximo brilho (onda completa). Enfim, alguém tem algo já testado ? PWM tem aos montes por aí, mas e dimmer ?
-
Prezados, encontrei um artigo que despertou interesse pois eu já tinha uma placa led P10 parada aqui. O artigo é pequeno e esta neste link: https://circuitdigest.com/microcontroller-projects/digital-notice-board-using-p10-led-matrix-display-and-arduino Montei e funcionou. Só que a placa-led P10 possui 32 leds na horizontal e 16 leds na vertical. E eu queria aproveitar todo este tamanho, ou seja, exibir caracteres de matriz de pixels maior. Notem que no começo do programa há dois includes, um deles é de uma matriz 5x7.h, mas na prática (vejam o desenho que eu fiz em anexo) está aparecendo caracteres 8x14, tá sobrando 1 linha em cima e três linhas em baixo. Eu queria caractere de 16 de altura, poderia ser 8x16. Aí me surgiram três dúvidas: A__ Tentei encontrar os includes e abrir para ver como foi feita a formação dos caracteres mas não consegui localizar. Onde fica no PC ? B__ Tem alguma forma de eu baixar caracteres já prontos de algum site e 'jogar' para dentro do código ? como ? C__ Se eu quiser que uma palavra (apenas duas letras) fiquem paradas no painel, sem o efeito de rolar da direita para a esquerda, como teria que ficar o código ?
-
Alguém tem o esquema da fonte deste relé remoto 433 MHz ?
eletron1791 postou um tópico em Eletrônica
Achei bem legal esta fonte que usa um capacitor supressor e consegue fornecer 12 volts para o relé e 5 volts para o resto, sem transformador (entrada 85 a 220 volts AC). Bem compactado e sem as, difíceis de encontrar, bobinas. Alguém tem o esquema ? -
PIC Como fazer piscar o led com o 12f629
eletron1791 respondeu ao tópico de eletron1791 em Microcontroladores
Isso Paulo, é o que estamos tentando fazer aqui. Consertar códigos. -
PIC Como fazer piscar o led com o 12f629
eletron1791 respondeu ao tópico de eletron1791 em Microcontroladores
Paulo, essa linguagem c é doida mesmo, estamos apanhando bastante aqui. E acho que já fizemos sua sugestão mas não quis funcionar. PATO, Gp0 é o pino 7, tem que ficar como entrada pois é o botão. E Gp3 é o pino 4, que não está sendo usado (mesmo assim tá com R 10K indo para o +5). O que falta entenderemos é por que parece que não está aceitando este trecho do código ? delay_ms(1); tempo++; if (tempo==5000){ -
PIC Como fazer piscar o led com o 12f629
eletron1791 respondeu ao tópico de eletron1791 em Microcontroladores
Desta outra forma é curioso pois o led pisca após eu fechar e abrir o botão 6 vezes. Então tá contando ? mas ainda não é o caso. Teria que contar 5 segundos e não quantidade de vezes. Isso me faz crer que eu preciso remover o while, mas se eu remover o while vai contar direto, e não é para contar direto mas sim somente quando a chave abrir depois de ter estado fechada. while(botao==1){ delay_ms(20); if(botao==0){ x++; if(x==6){ led=1; delay_ms(400); led=0; x=0; Mas se eu fizer assim, o led pisca direto assim que a chave fechar, ou seja, ignora totalmente a variável x, como se não existisse as linhas x++ e if(x==6000). if(botao==1){ x++; delay_ms(1); if(x==6000){ led=1; delay_ms(400); led=0; x=0; -
PIC Como fazer piscar o led com o 12f629
eletron1791 respondeu ao tópico de eletron1791 em Microcontroladores
O melhor código é este, nele o led só pisca quando a chave abre, ou seja, quando Gp0 = 0 (resistor de 10K para o GND). Sem ruído, só pisca 1 vez, etc. Tá beleza. Mas o propósito é: O led só pode piscar se a chave abrir e ficar 5 segundos aberta, aí sim o led pisca só 1 vez. O problema é que não adianta pôr uma variável x e fazer x++ e depois x==5000 pois não funciona de jeito nenhum. Parece estar faltando settar algum recurso interno do PIC para que ele possa contar. #include <12F675.h> #device adc=8 #use delay(clock=4000000) #fuses NOWDT,INTRC_IO, NOCPD, NOPROTECT, NOMCLR, PUT, BROWNOUT #byte tris=0x85 #bit led = 0x5.4 //pino 3 #bit botao = 0x5.0 //pino 7 void main() { tris=0b001101; //gp0 como entrada while(true){ while(botao==1){ delay_ms(20); if(botao==0){ delay_ms(20); led=1; delay_ms(500); led=0; } } } } Ali onde o delay_ms(20) eu mudei para delay_ms(6000), quase que resolveu de vez. Pois, ao abrir a chave, o led só pisca após os delay, que aliás na prática dá quase 4 segundos e não os 6s previstos. Mas o detalhe é que se a chave tornar a ser fechada antes do tempo terminar, o led não pode piscar e o tempo tem que reiniciar. Isso com delay não acontece. Depois que a chave abriu, não importa se ela torna a fechar que o led vai piscar de qualquer maneira. -
PIC Como fazer piscar o led com o 12f629
eletron1791 respondeu ao tópico de eletron1791 em Microcontroladores
Realmente não poderei usar o timer. Já está previsto usá-lo depois em outra etapa. Mas o que me confunde é que a tarefa é tão simples que não é possível gerar tantas linhas de código. Veja, é só isso: -
PIC Como fazer piscar o led com o 12f629
eletron1791 respondeu ao tópico de eletron1791 em Microcontroladores
OK, feito. Voltou àquelas duas mensagens das linhas 18 e 19 Será que não tem que setar nenhum timer interno do PIC...pra contar ? ...sei lá OK, compilou, vou testar Deu no mesmo, quando abre o botão, o led pisca imediatamente. Eu tinha até agora as 21:00. Que troço essa linguagem, tanta coisa pra piscar um led com retardo. Mas enfim, grato demais, se você puder e quiser amanhã poderei fazer mais testes. Valeu. -
PIC Como fazer piscar o led com o 12f629
eletron1791 respondeu ao tópico de eletron1791 em Microcontroladores
-
PIC Como fazer piscar o led com o 12f629
eletron1791 respondeu ao tópico de eletron1791 em Microcontroladores
-
PIC Como fazer piscar o led com o 12f629
eletron1791 respondeu ao tópico de eletron1791 em Microcontroladores
Coloquei. Agora toda vez que fecha e abre o botão, atua só na abertura, o led pisca imediatamente. Vale dizer que estou usando um pic 12f629 que na maioria dos casos funciona beleza com código para 12f675, acho que a única diferença de um pro outro é que o 675 tem conversor AD. Já mudei o include e setei para 12f629 no compilador, nada mudou. Ficou assim, só pra confirmar: #include <12F675.h> #device adc=8 #use delay(clock=4000000) #fuses NOWDT,INTRC_IO, NOCPD, NOPROTECT, NOMCLR, PUT, BROWNOUT #ZERO_RAM #byte tris=0x85 #bit led = 0x5.4 //pino 3 #bit botao = 0x5.0 //pino 7 int tempo; int flag_led_piscou; void main() { tris=0b001101; //gp0 como entrada tempo=0; flag_led_piscou=0; while(true){ if(botao==1){ delay_ms(100); // filtro de ruído while(botao==0 && flag_led_piscou==0){ delay_ms(1); tempo++; if (tempo==5000){ led=1; delay_ms(500); led=0; flag_led_piscou=1; } } flag_led_piscou=0; tempo=0; led=0; } } } -
PIC Como fazer piscar o led com o 12f629
eletron1791 respondeu ao tópico de eletron1791 em Microcontroladores
coloquei int1, mas agora troquei para apenas int. Mas o resultado é o mesmo. -
PIC Como fazer piscar o led com o 12f629
eletron1791 respondeu ao tópico de eletron1791 em Microcontroladores
Agora o que mudou foi que até então ao fechar e abrir o botão e mantê-lo aberto, o led piscava sem parar. Agora, ao fazer o mesmo procedimento, o led pisca só 1 vez. Nunca mas ele pisca. Porém pisca imediatamente quando abre o botão. Ou seja, continua não dando bola para a variável tempo Troço chato #include <12F675.h> #device adc=8 #use delay(clock=4000000) #fuses NOWDT,INTRC_IO, NOCPD, NOPROTECT, NOMCLR, PUT, BROWNOUT #use fast_io(A) //#end if #ZERO_RAM #byte tris=0x85 #bit led = 0x5.4 //pino 3 #bit botao = 0x5.0 //pino 7 int tempo; int1 flag_led_piscou; void main() { tris=0b001101; //gp0 como entrada tempo=0; flag_led_piscou=0; while(true){ if(botao==1){ delay_ms(100); // filtro de ruído while(botao==0 && flag_led_piscou==0){ delay_ms(1); tempo++; if (tempo==5000){ led=1; delay_ms(500); //led aceso led=0; flag_led_piscou=1; // poderia ser um return ou sei la } } tempo=0; led=0; } } } -
PIC Como fazer piscar o led com o 12f629
eletron1791 respondeu ao tópico de eletron1791 em Microcontroladores
Fala aí meu nobre, veja, deu uns 5 erros na tentativa de compilar Ops, três eram erros bobos meus. Falta só saber como eu declaro esta flag Veja OK, usei int1 flag_led_piscou=0; Compilou sem erros Vou testar -
PIC Como fazer piscar o led com o 12f629
eletron1791 respondeu ao tópico de eletron1791 em Microcontroladores
Nada minha gente ! -
PIC Como fazer piscar o led com o 12f629
eletron1791 respondeu ao tópico de eletron1791 em Microcontroladores
Vejam, reduzi meu código até este limite. Querendo com isso fazer apenas a função do led piscar se a chave (esquema elétrico nos tópicos mais acima) abrir e ficar aberta por 5 s. Assim o led deve piscar só 1 vez. Mas o que está acontecendo é que o led, ao abrir a chave, pisca direto, pisca em 500ms direto, não respeita a variável <tempo>. Como tem que ficar este código para passar a respeitar a variável tempo ? e por quenão está respeitando ? #include <12F675.h> #device adc=8 #use delay(clock=4000000) #fuses NOWDT,INTRC_IO, NOCPD, NOPROTECT, NOMCLR, PUT, BROWNOUT #use fast_io(A) #endif #ZERO_RAM #byte tris=0x85 #bit led = 0x5.4 //pino 3 #bit botao = 0x5.0 //pino 7 int tempo; void main() { tris=0b001101; //gp0 como entrada tempo=0; while(true){ if(botao==1){ delay_ms(100); // filtro de ruído while(botao==0){ delay_ms(1); tempo++; if (tempo==5000){ led=1; delay_ms(500); //led aceso led=0; } } tempo=0; rele=0; } } } GRATO -
PIC Como fazer piscar o led com o 12f629
eletron1791 respondeu ao tópico de eletron1791 em Microcontroladores
Fiz isso. Mas estou com problemas na variável x, por algum motivo que desconheço ela não está sendo respeitada. Eu a declarei como int x=0; em variáveis globais. E deixei x=0; em void main (inicialização de portas e registradores). Mas, com o botão aberto, o led começa a piscar direto (500ms), mostrando que de fato não está respeitando o x (uso o CCS e compila sem erros). O código tem mais coisas, esta seria só uma pequena intervenção. Não quero postá-lo aqui pois não tenho domínio sobre ele. Sei que assim fica difícil mas se tiver alguma ideia...beleza. Com o botão fechado, o led fica apagado.. -
PIC Como fazer piscar o led com o 12f629
eletron1791 respondeu ao tópico de eletron1791 em Microcontroladores
Legal demais. Te agradeço pela força, mesmo sem testar. Mas vou testar sim. Com certeza. Boa noite. -
PIC Como fazer piscar o led com o 12f629
eletron1791 respondeu ao tópico de eletron1791 em Microcontroladores
Opa, é mesmo, esqueci, uns 500 ms, -
PIC Como fazer piscar o led com o 12f629
eletron1791 respondeu ao tópico de eletron1791 em Microcontroladores
-
PIC Como fazer piscar o led com o 12f629
eletron1791 respondeu ao tópico de eletron1791 em Microcontroladores
Fazendo mais testes acho que encontrei o foco de toda a minha dificuldade. A variável z que declarei como int z=0: não funciona. O código não conta como deveria. Se desarma == 1 nada acontece. Se eu comentar a variável aí sim, funciona. Por que será ? Alguém tem alguma ideia ? if(desarma==1){ delay_ms(1); z++; if(z==5000){ rele=1; z=0; } } O certo seria, se desarma for = 1 por 5 segundos, o relé liga e o tempo z zera. -
PIC Como fazer piscar o led com o 12f629
eletron1791 respondeu ao tópico de eletron1791 em Microcontroladores
Criei este pequeno código onde chamo uma entrada de desarma e uma saída chamo de relé. O desarma tem a conotação de pausar, Ou seja, se desarma for igual a 1, o tempo x começa a incrementar e quando ele for igual a 5s o relé dá um pulso de 400ms (o rele na prática é um led). Mas notem que este trecho está abaixo do fechamento do //void while (true) e acima do fechamento do void main. Não funciona de jeito nenhum. Se eu colocar este pequeno código acima do fechamento do //void while (true) aí funciona a lógica mas não respeita o tempo, ou seja, basta eu fazer desarma == 1 e manter que o relé começa a piscar indefinidamente. Como fazer funcionar este pequeno código ? }//void while(true) if(desarma==1){ z++; delay_ms(1); if(z==5000){ rele=1; delay_ms(400); rele=0; z=0; } } }//void main
Sobre o Clube do Hardware
No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais
Direitos autorais
Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais