Ir ao conteúdo
  • Cadastre-se

Alexandrebozelo

Membro Júnior
  • Posts

    12
  • Cadastrado em

  • Última visita

Tudo que Alexandrebozelo postou

  1. desculpe-me pela demora. Bom na verdade eu não tenho um código muito bem escrito e pronto, eu fiz um simples para tentar fazer funcionar o lm35, estou usando o pic 18f4550, e esse seu código não funcionou neste pic. sabe me dizer por que ? Eu uso uma placa teste comprada para este PIC então hardware não acredito que seja. que como voce postar o codigo que deu certo?
  2. boa tarde. Obrigado por responder. Eu não consegui usar por motivos de programação mesmo. O pino AN3 esta disponível sim, porém eu alimento eles com a tesão menor, mas ele não a usa como referencia. eu tentei colocar essa parte do seu código, mas da erro. gostaria de saber se você obteve exito em seu projeto. att boa tarde. Obrigado por responder. Eu não consegui usar por motivos de programação mesmo. O pino AN3 esta disponível sim, porém eu alimento eles com a tesão menor, mas ele não a usa como referencia. eu tentei colocar essa parte do seu código, mas da erro. gostaria de saber se você obteve exito em seu projeto. att
  3. Boa tarde. ressuscitando este tópico. haha conseguisse algum exito ? estou usando o PIC 18f4550, e gostaria de fazer o mesmo que voce. porém não tem jeito de eu conseguir que ele use a referencia do pino an3, e quando eu coloco essa sua ultima função ai. ele da erro, primeiro não reconhece o "sano", depois fica empombando com os parenteses... se puder da uma força ai. desde ja agradeço.
  4. beleza. sim a biblioteca personalpic1 é uma biblioteca alterada para o lcd. postei dois microchips diferentes porque uso vários em meus trabalhos, porém o codigo é o mesmo. não, não tem nem um timer ativado, a contagem eu faço por incremento, usando um delay de milisegundos, para poder visualizar a contagem e ficar mais fácil para zerar. Este codigo que que postei é para um sistema de retrolavagem. vou tentar explicar : http://tinypic.com/view.php?pic=29wr7z6&s=8#.U5nZ5vldUvc http://tinypic.com/view.php?pic=29wr7z6&s=8#.U5nZ5vldUvc bom são 5 valvulas, o programa consiste em um contador programavel pelo menu a pessoa coloca ali quanto tempo quer de intervalo 1 2 horas... estc. quando uma bomba liga, o micro recebe o sinal e ativa um rele que liga as válvulas com o circulo amarelo, quando o tempo chegar no programado ex:2 horas; ele entra em retro lavagem, as valvulas amarelas desativam, e ativam as vermelhas, depois de transcorrer o tempo programado, aprox: 120 segundos pelo padrão, acionasse as com circulo verde, e depois zera o contador e volta as amarelas, quando a bomba desliga o contador para e as válvulas desligam.
  5. também achei estranho... mas acontece o seguinte. criei um menu ajustável ali, e a a variável r vai de 1 a 600, como mostra no código que postei. porém na placa teste quando rodo o programa, entro em menu e vou aumentando o valor de r, vai incrementando +1, porém se eu apenas declarar no inicio "int r", quando chega a 127 e entra em valores negativos, então declarei por garantia "long int r;" ok, resolveu este problema; quando vou no menu com o microchip ja na placa e aperto "input(pin_a1),para incrementar +1 a r " funciona legal, e tal. dae uso a expressão que o @cesarlg citou, na hora de recuperar quando eu desligo o chip da energia, a variável r volta com algum lixo. mt estranho. vou postar o cogido aqui para vocês poderem me corrigir. #include <16f877A.h> #device ADC=10 #use delay (clock=20000000) #include <personalpic1.h> #fuses HS, NOWDT, NOPROTECT, NOBROWNOUT, NOLVP, PUT #byte PORTC=0x07 #include <internal_eeprom.c> int K=0,L=0,in,D,B=0; long int p=0,J=0,T=0; float r; void main (){ lcd_putc("\f INICIALIZANDO \n SISTEMAS AUT."); delay_ms(2500); r= read_int16_eeprom (5); d= read_int16_eeprom (2); in= read_int16_eeprom (3); if(input(pin_b0)){ r=0250; d=10; in=3; lcd_putc("\fgravando...");} while (true){ B=B+1; IF(B<22){ lcd_PUTC("\f TRATA AGUA \nRETROLAVAGEM AUT"); } IF(B>23){ lcd_PUTC("\f CLIENTE \n AVIC FRAGNANE ");} IF(B>44){B=0;} delay_ms(350); T=0; L=0; IF(INPUT(PIN_b0)){ while(T<250){ PRINTF(LCD_putc "\fINTERALO\nTEMPO=%dh",in); DELAY_MS(500); T=T+1; if(input(pin_b1)){ //AUMENTA O VALOR DE INTERVALO........... in=in+1; if(in>20){ lcd_putc("\f TEMPO MAXIMO\n DE INTERALO=20hs"); delay_ms(1500); in=in-1;}} if(input(pin_b2)){ in=in-1; if(in<1){ lcd_putc("\fVALOR MINIMO\nDE INTERVALO=1hs"); delay_ms(1500); IN=IN+2;}} if(input(pin_b0)){ L=0; while(t<120){ T=T+1; printf(lcd_putc "\fRETROLAVAGEM\n TEMPO=%fs",r); DELAY_ms(250); if(input(pin_b1)){ r=r+1; T=0; if(r>600){ lcd_putc("\f TEMPO MAXIMO\n DE RETROLAVAGEM=600s"); delay_ms(1500); R=R-1;}} if(input(pin_b2)){ R=R-1; T=0; if(R<1){ lcd_putc("\fVALOR MINIMO\nDE RETROLAVAGEM=1s"); delay_ms(1500); R=R+2;}} //MENU DRENAGEM............................... if(input(pin_b0)){ WHILE(T<120){ printf(lcd_putc "\fDRENAGEM\nTEMPO=%ds",d); T=T+1; delay_ms(400); if(input(pin_b1)){ D=D+1; T=0; if(D>200){ lcd_putc("\f TEMPO MAXIMO\n DE DRENAGEM=200s"); delay_ms(1500); D=D-1;}} if(input(pin_b2)){ D=D-1; T=0; if(D<1){ lcd_putc("\fVALOR MINIMO\nDE DRENAGEM=1s"); delay_ms(1500); D=D+2;}} IF(INPUT(PIN_b0)){ lcd_putc("\f RETORNANDO"); write_int16_eeprom(5,r); write_int16_eeprom(2,d); write_int16_eeprom(3,in); T=T+260; delay_ms(1500); BREAK;}}} }}}}} } ta ai....
  6. Funcionou legal!!! Agora to com um problema quando eu uso a função de leitura como o @cesarlg citou, para números maiores que 128 ele retorna um monte de lixo. Como eu resolvo? Desde já muito obrigado a todos.
  7. bah show de bola... isso que eu tava procurando. tem algum forum que fale como montar a função do for para transformar o numero em binário para gravar na eeprom?
  8. não verdade não: se você notar, no código fonte quando o pino a0; entra um menu, a variável r esta pre configurada para 120, quando o utilizador vai ni menu e acrescenta esse valor a variavel r por exemplo r+1, ele fica 121, mas quando ele reinicia por falta de energia ele volta a 120; Pelo que eu estou entendendo se eu não atribuir um valor no inicio do programa a variavel r, ele vai assumir o ultimo valor?? por exemplo; se eu apenas adicionar long int r, ele vai atribuir o ultimo valor?? ou vai pegar algum lixo??
  9. Bom talvez eu não saiba como fazer então. vou postar o codigo aqui. #include <16f628a.h> #use delay (clock=4m) #fuses NOmCLR,INTRC_IO #include <lcd.c> int L=0,in=3,D=30,B=0; long int r=120,J=3595,t=0,K=0; void main (){ lcd_ini(); lcd_ESCREVE("\f INICIALIZANDO \n SISTEMAS AUT."); delay_ms(2500); lcd_escreve("\f TRATA AGUA\n SISTEMAS AUT."); while (true){ T=0; L=0; k=0; B=B+1; IF(B<50){ lcd_escreve("\f TRATA AGUA \nRETROLAVAGEM AUT"); } IF(B>51){ lcd_escreve("\f CLIENTE \n AVIC FRAGNANI ");} if(b>100){ B=0;} delay_ms(300); output_low(pin_a7); output_low(pin_b1); output_low(pin_a6); if(input(pin_a4)){ output_low(pin_b1); output_low(pin_a6); while(input(pin_a4)){ printf(lcd_escreve "\f SISTEMA =%dhs \n FILTRANDO =%lihs ",in,j/3600); j=j+1; k=0; t=0; output_high(pin_a7); delay_ms(1000); if(j>in*3600 || input(pin_a3)){ while(k<(r+d)){ output_low(pin_a7); while(k<r){ printf( lcd_escreve "\fSISTEMA %li EM\nRETROLAVAGEM ",k); output_high(pin_a6); k=k+1; delay_ms(1000); } while(k>r && k<(r+d)){ printf(lcd_escreve "\fSISTEMA %li EM\nDRENAGEM",k); output_high(pin_b1); k=k+2; delay_ms(1000); output_low(pin_b1); output_low(pin_a6); delay_ms(1000); j=0;}}}}} output_low(pin_a7); if(input(pin_a3)){ lcd_escreve("\fLIGUE O SISTEMA\nEM MANUAL"); DELAY_MS(4000);} IF(INPUT(PIN_a0)){ while(T<120){ PRINTF(LCD_escreve "\fINTERALO\nTEMPO =%dhs",in); DELAY_MS(250); T=T+1; if(input(pin_a1)){ //AUMENTA O VALOR DE INTERVALO........... in=in+1; if(in>20){ lcd_escreve("\f TEMPO MAXIMO\n DE INTERALO =20hs"); delay_ms(1500); in=in-1;}} if(input(pin_a2)){ in=in-1; if(in<1){ lcd_escreve("\fVALOR MINIMO\nDE INTERVALO =1h"); delay_ms(1500); IN=IN+2;}} //menu ..................... if(input(pin_a0)){ L=0; while(t<120){ T=T+1; printf(lcd_escreve "\fRETROLAVAGEM\n TEMPO =%lis",r); DELAY_ms(400); if(input(pin_a1)){ r=r+1; T=0; if(r>600){ lcd_escreve("\f TEMPO MAXIMO\n DE RETROLAVAGEM =600s"); delay_ms(1500); R=R-1;}} if(input(pin_a2)){ R=R-1; T=0; if(R<1){ lcd_escreve("\fVALOR MINIMO\nDE RETROLAVAGEM =1s"); delay_ms(1500); R=R+2;}} if(input(pin_a0)){ WHILE(T<120){ printf(lcd_escreve "\fDRENAGEM\nTEMPO =%ds",d); T=T+1; delay_ms(400); if(input(pin_a1)){ D=D+1; T=0; if(D>200){ lcd_escreve("\f TEMPO MAXIMO\n DE DRENAGEM =200s"); delay_ms(1500); D=D-1;}} if(input(pin_a2)){ D=D-1; T=0; if(D<1){ lcd_escreve("\fVALOR MINIMO\nDE DRENAGEM =1s"); delay_ms(1500); D=D+2;}} IF(INPUT(PIN_a0)){ lcd_escreve("\fRETORNANDO..."); delay_ms(1500); T=T+260; ;}}} }}}}} } Este é o código. depois de montar o painel, ele tem a opção de um menu. neste menu o usuário pode alterar alguns parâmetros, pelo que vocês estão me falando então tem um código que grava na eeprom? porque eu so sei gravar pelo gravador mesmo. Estes dados do menu que eu criei e que torna personalizável alguns parâmetros, em uma falta de energia no, meu caso, são perdidos.
  10. bom vou tentar explicar melhor. eu fiz um programa para o utiliza-lo num sistema de retro lavagem. no programa coloquei o intervalo entre cada retro lavagem ex:, 1,2 a pessoa vai ali e coloca o tempo de 1 a 600 segundos, e o tempo de drenagem. porém quando falta energia, esses dados que são colocados ali no painel depois de montado são rezetados. Sim o programa com seus valores iniciais continuam. eu gostaria de saber um esquema de algo como uma bateria tipo um nobreak. obrigado por responderem...
  11. Boa noite tem como colocar uma bateria ou pilha para não perder as regulagens que são feitas no no programa. Por exemplo os tempos etc...

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

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!