Ir ao conteúdo
  • Cadastre-se

Genivaldodacosta

Membro Júnior
  • Posts

    11
  • Cadastrado em

  • Última visita

Reputação

1
  1. muito obg Vinicius, fiz as mudanças que pediu e funcionou, contudo tive que acrescentar mais algumas linhas para evitar alguns erro, o código ficou assim: #include <16f628a.h> #fuses MCLR,XT #use delay (clock=4M) #byte TRISB=0x86 #byte PORTB=0x06 signed int i, k, j=0; int display[10] ={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x67 }; void main(){ set_tris_b(0b0000000); // configura port b completo como saida. PORTB = 0b00000000; for(;;){ if(!input(pin_a2)){ for(j=0;j<11;J){ if(!input(pin_a2))j++; if(j>9){j=0;K++;} if(j>9){j=0;}//K=j;} if(!input(pin_A3))J--; if(j<0){j=9;k--;} if(j==0){ if(input(pin_a3));break;} for(i=0;i<40;i++){ output_high(PIN_A1); output_low(PIN_A0); PORTB = display[j]; delay_ms(3); output_high(PIN_A0); output_low(PIN_A1); PORTB = display[k]; delay_ms(3); } } } } } muito obg Vinicius, fiz as mudanças que pediu e funcionou, contudo tive que acrescentar mais algumas linhas para evitar alguns erro, o código ficou assim: #include <16f628a.h> #fuses MCLR,XT #use delay (clock=4M) #byte TRISB=0x86 #byte PORTB=0x06 signed int i, k, j=0; int display[10] ={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x67 }; void main(){ set_tris_b(0b0000000); // configura port b completo como saida. PORTB = 0b00000000; for(;;){ if(!input(pin_a2)){ for(j=0;j<11;J){ if(!input(pin_a2))j++; if(j>9){j=0;K++;} if(j>9){j=0;}//K=j;} if(!input(pin_A3))J--; if(j<0){j=9;k--;} if(j==0){ if(input(pin_a3));break;} for(i=0;i<40;i++){ output_high(PIN_A1); output_low(PIN_A0); PORTB = display[j]; delay_ms(3); output_high(PIN_A0); output_low(PIN_A1); PORTB = display[k]; delay_ms(3); } } } } }
  2. obg Vinicius, porém já tinha tentado, teoricamente deveria dar certo (pois se j<1, então j==0; se decrementa deveria ir para 9, mas quando esta no (1) e aperta decremento, ele vai para 9, sem passar pelo (0), deixando de formar o 10,20,30 e ai vai, mas obg pela dica!
  3. Boa tarde pessoal, sou iniciante em programação e peço a ajuda de vocês, estou montando um placar eletrônico com um pic 16f628a e display de 7 segmentos, a multiplexação eu entendi e funcionou corretamente, porém nesse placar deve conter teclas para incrementar e decrementar, a parte de incrementar também fiz e funcionou corretamente, porém quando quero decrementar tipo de 10 para 9, da erro, não funciona corretamente, o codigo é esse #include <16f628a.h> #fuses MCLR,XT #use delay (clock=4M) #byte TRISB=0x86 #byte PORTB=0x06 int i,k,j=0; int display[10] ={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x67,}; void main(){ set_tris_b(0b0000000); // configura port b completo como saida. PORTB = 0b00000000; for(;;){ if(!input(pin_a2)){ for(j=0;j<11;J){ if(!input(pin_a2))j++; if(j>9){j=0;K++;} if(!input(pin_A3))J--; // if(j<1){j=9;k--;} for(i=0;i<40;i++){ output_high(PIN_A1); output_low(PIN_A0); PORTB = display[j]; delay_ms(3); output_high(PIN_A0); output_low(PIN_A1); PORTB = display[k]; delay_ms(3); } } } } } se alguém puder dar alguma dica e tal, muito obg
  4. obg Paulo! mas esse deve ser mais complicado para ausar ne? pois tem umas siglas que nao entendi, como pino 3 (CE), 4 CSN, 5 eu imagino que seja clock, 6 (MOSI), 7 (MISO) e 8, (IRQ), nao é so VCC, entrada de dados E GND? eu preciso de um modulo basico mas que funcione bem, o meu projeto é para controlar refletores de iluminação a distancia, pois trabalho com filmagem e quero automatizar essa parte, de maneira que eu fique a uma certa distancia dos refletores tipo 20 mestros e possa liga-los e desliga-los de maneira fácil, eu pensei em usar IR mas o alcançe nao é bom alem de ter que ter visada, então pensei no RF
  5. bom dia a todos, demorei pra responder pois estava tentando todas possibilidade que foram proposta e que eu pensei tambem, infelizmente sem nenhum sucesso, alem de tudo que foi proposto eu baixei o baud para o limite minimo que no caso foi 250, alimentei o transmissor com 12v, troquei o receptor, ate usei o pc como osciloscopio, para ver a forma de onda quando o sinal é recebido, da pra ver que o sinal chega no pic receptor, apesar do ruido é possivel indentifica-lo, mas quando afasto o transmissor so recebe ruido, ou seja de nada adiantou, eu vou comprar outros modulos pra fazer teste, desta vez mais caros um pouco ne kkkkk, para garantir que o erro e meu e nao do modulo, obg a todos! alguem tem uma dica de qual modulo é melhor eu comprar?
  6. ok, vou fazer isso e posto aqui o resultado, posto a noite pois agora estou no trabalho, desde ja muito obrigado, vivendo e aprendendo rsrs
  7. amigo Paulo, esse teste eu ja tinha feito, mas so funciona se os modulos estiverem a uma distancia de menos que 1 metros, com antena chega ate uns 3 metros agora, peguei um RX de uma placa de portao eletrônico, e fica do mesmo jeito, então as chances de ser o codigo esta aumentando!
  8. os modulos que estou usando é esse aqui http://produto.mercadolivre.com.br/MLB-520591043-433mhz-rf-link-tx-e-rx-para-arduino-avr-mcu-arm-_JM, so que so esta escrito antena em um deles o emissor, no outro so tem um furo para soldar, logo eu soldei um pedaço de fio de mais ou menos 20 cm, foi assim que ate um metro de distancia da alguma resposta, mais longe continuar a mesma coisa, será que tive a infelicidade de comprar produto de má qualidade rsrs!
  9. eu fiz esse teste hoje, com a ligaçao direta funciona normalmente, liguei a alimentação do tx direta, mas continuou no mesmo jeito, então resolvi ligar a saida do RX em um amplificiador pra ver se dava pra ouvir o sinal do controle, ja que nao tenho osciloscopio, feito isso, eu ouvir os pulsos do controle, porém com um grande chiado junto, então aproximei bastante o rx do tx então o chiado diminuiu e os pulsos do controle aumentaram, e de vez em quando ate aciona um ou outro led, mas quando afasto tudo fica ruim, o chiado aumenta e os pulsos diminuem, eu comprei dois modulos, mas os dois estão do mesmo jeito, outra coisa nas caracteristicas dos modulos diz que ele pode ser alimentado de 5 a 12v, aumentei a tensão separadamento do pic mas continuou do mesmo jeito, tentei ajustar um dos modulos rx mas de nada adiantou, o maximo que consigo algum resultado e aproximando o tx do rx cerca de 1 metros! mais que isso nao funciona! grato pela ajuda!
  10. pode ate ser, mas primeiro se alguem que entenda de programação puder dar uma olhada no codigo e dizer alguma coisa ja ajudaria! obg
  11. boa tarde a todos, bom, sou novo no fórum, e venho aqui pedir ajuda: a questao é o seguinte, eu fiz um controle remoto com IR com o pic 16f628a, e funcionou certinho, agora quero fazer com transmissão RF, o código ficou assim #include <16F628A.h> #FUSES WDT //No Watch Dog Timer #FUSES PUT //Power Up Timer #FUSES INTRC_IO //Internal RC Osc, no CLKOUT #FUSES NOMCLR //Master Clear pin used for I/O #FUSES NOBROWNOUT //No brownout reset #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O #use delay(int=4000000) #use rs232(baud=1200,parity=N,xmit=PIN_B2,rcv=PIN_B1,bits=8,stream=PORT1) void main() { // setup_timer_2(T2_DIV_BY_1,30,1); //26.0 us overflow, 26.0 us interrupt set_pwm1_duty((int16)40); setup_comparator(NC_NC_NC_NC); while(TRUE) { if(!input(pin_a0)) { output_high(pin_b1); delay_ms(5); putc(0b00001011); output_low(pin_b1); } if(!input(pin_a1)) { output_high(pin_b1); delay_ms(5); putc(0b00010011); output_low(pin_b1); } if(!input(pin_a2)) { output_high(pin_b1); delay_ms(5); putc(0b00011011); output_low(pin_b1); } if(!input(pin_a3)) { output_high(pin_b1); delay_ms(5); putc(0b00100011); output_low(pin_b1); } if(!input(pin_a4)) { output_high(pin_b1); delay_ms(5); putc(0b00101011); output_low(pin_b1); } if(!input(pin_b4)) { output_high(pin_b1); delay_ms(5); putc(0b00110011); output_low(pin_b1); } if(!input(pin_b5)) { output_high(pin_b1); delay_ms(5); putc(0b00111011); output_low(pin_b1); } if(!input(pin_b6)) { output_high(pin_b1); delay_ms(5); putc(0b01000011); output_low(pin_b1); } if(!input(pin_b7)) { output_high(pin_b1); delay_ms(5); putc(0b01001011); output_low(pin_b1); } delay_ms(100); } } eu deixei o baud = 1200, pois pelo que pesquisei o máximo da taxa de transmissão é cerca de 2400 e 1200 foi o que usei com IR, eu comprei dois modulos transmissores e receptores no mercado livre, ( http://produto.mercadolivre.com.br/MLB-520591043-433mhz-rf-link-tx-e-rx-para-arduino-avr-mcu-arm-_JM ) porém nao funciou é possivel ver no receptor que o controle esta enviando algum sinal, pois coloquei um led na saida do modulo receptor e quando aperto alguma tecla do emissor o led pisca no receptor, mas porém nada acontece, a imagem a seguir é do emissor, observer que adicionei um transistor para chavear a alimentação do modulo emissor representado pelo led, para que nao fique alimentado o tempo todo consumindo assim a bateria, ou seja assim que uma tecla é acionada, b1 vai ao nivel alto, polarizando a base do transistor fazendo conduzir e alimentando assim o modulo TX, tempo é esperado para que o modulo se estabilize então é enviado o codigo, logo apos b0 vai ao nivel baixo desenergizando o modulo tx, como podemos ver no codigo e no imagem do proteus, aqui esta o codigo do RX #include <16F628A.h> #FUSES NOWDT //No Watch Dog Timer #FUSES PUT //Power Up Timer #FUSES INTRC_IO //Internal RC Osc, no CLKOUT #FUSES NOMCLR //Master Clear pin used for I/O #FUSES NOBROWNOUT //No brownout reset #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O #use delay(int=4000000) #use rs232(baud=1200,parity=N,xmit=PIN_B2,rcv=PIN_B1,bits=8,stream=PORT1) int a[8]; int x; int i; void main() { output_high(pin_a0); delay_ms(1000); output_low(pin_a0); while(TRUE) { for(i=0; i<10; i++){ a[i]=getc(); x=a[i]; if(a[i]==0b00001011){ output_toggle(pin_a0); output_low(pin_a1); output_low(pin_a2); output_low(pin_a3); output_low(pin_b3); output_low(pin_b4); output_low(pin_b5); output_low(pin_b6); output_low(pin_b7); } if(a[i]==0b00010011){ output_low(pin_a0); output_toggle(pin_a1); output_low(pin_a2); output_low(pin_a3); output_low(pin_b3); output_low(pin_b4); output_low(pin_b5); output_low(pin_b6); output_low(pin_b7); } if(a[i]==0b00011011){ output_low(pin_a0); output_low(pin_a1); output_toggle(pin_a2); output_low(pin_a3); output_low(pin_b3); output_low(pin_b4); output_low(pin_b5); output_low(pin_b6); output_low(pin_b7); } if(a[i]==0b00100011){ output_low(pin_a0); output_low(pin_a1); output_low(pin_a2); output_toggle(pin_a3); output_low(pin_b3); output_low(pin_b4); output_low(pin_b5); output_low(pin_b6); output_low(pin_b7); } if(a[i]==0b00101011){ output_low(pin_a0); output_low(pin_a1); output_low(pin_a2); output_low(pin_a3); output_toggle(pin_b3); output_low(pin_b4); output_low(pin_b5); output_low(pin_b6); output_low(pin_b7); } if(a[i]==0b00110011){ output_low(pin_a0); output_low(pin_a1); output_low(pin_a2); output_low(pin_a3); output_low(pin_b3); output_toggle(pin_b4); output_low(pin_b5); output_low(pin_b6); output_low(pin_b7); } if(a[i]==0b00111011){ output_low(pin_a0); output_low(pin_a1); output_low(pin_a2); output_low(pin_a3); output_low(pin_b3); output_low(pin_b4); output_high(pin_b5); output_low(pin_b6); output_low(pin_b7); } if(a[i]==0b01000011){ output_low(pin_a0); output_low(pin_a1); output_low(pin_a2); output_low(pin_a3); output_low(pin_b3); output_low(pin_b4); output_low(pin_b5); output_toggle(pin_b6); output_low(pin_b7); } if(a[i]==0b01001011){ output_low(pin_a0); output_low(pin_a1); output_low(pin_a2); output_low(pin_a3); output_low(pin_b3); output_low(pin_b4); output_low(pin_b5); output_toggle(pin_b6); } } } } ///////////////////////////////////////////////// desde ja agradeço a todos!!! muito obrigado

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!