Ir ao conteúdo
  • Cadastre-se

oiluj

Membro Pleno
  • Posts

    195
  • Cadastrado em

  • Última visita

Reputação

1
  1. Saquei, isso eu não sabia, mas também não pretendi tirar a original não.. pretendia somente acrescentar, essa que é só pra de vez em quando... uns passeios aqui e outro ali... Agora vou esperar o vtrx tirar umas duvidas e vou ver se monto essa buzina aí.. talez com algumas modificações.. Abraços, e muito obrigado pelo toque..
  2. Entendi lá.... tipo cada D daqueles (D0 até D7) que tem, tu ligou num pino digital do PIC, ou em 7 Pinos... E outra pra gravar no 24C512 tu enviou direto do PC pra ela, ou enviou pro Pic primeiro.. nunca trabalhei com memoria junto com o PIC... E eu tava pensando em coisas do tipo uns 15 sons diferentes... Mas acho que nesse caso é só usar uma memoria maior neah?!! E o negocio da sirene, tipo num tava pensando em sirene mesmo(policia, ambulancia e tal não).. Tava pensan em umas coisas difentes, falas mesmo... Tipo.. "SAI DA FRENTE!!", " AOW POTÊNCIA!!", umas coisas assim!! Tendeu?? Abraços!!!
  3. Hum tá e tipo você usava qual saida do pic pra enviar isso pro TDA... As digitais mesmo??? Abraços!!!
  4. é estou dando uma estudada no assunto.... Tipo o que eu num entendi bem é que ai.. você usou o programinha pra converter o audio para Hexadecimal certo??? ai voce gravou isso da memoria 24C512, o pic lia e envia certo?? Mas tipo enviava pra quem?? direto pro alto falante (não creio eu)... Isso que me deixou na duvida!!! Abraços!!!
  5. Uai cara achei massa... Aqui mas tipo tu num usou nenhum codec mp3 então neah??? pra gerar o som, tu usou o pwm do pic??? como tu fez??? Porque pro meu caso, esse seu, só jogar a saida num amplificador, e mandar na sirene da buzina.. Abraçso!!!
  6. o **** disso que alguns tons são vozes ai complica um pouco.. Tava pensando em talvez usar um codec de mp3, algo do tipo.. Mas precisa de pelo menos algum material pra poder da uma estuda, e ver como controlalo, e tal.. Alguem ai pode dar dicas, links de material, ou explicações?? Abraços!!
  7. Mas o projeto foi finalizado, ou parou pela metade... porque pro meu caso acho que qualquer tipo de gravação serve.. não precisarei mudar a gravação constantemente... Abraços!!1
  8. E aí turma do FCH... Então galera, tava pensando em montar uma dessas buzinas que rolam aí que tem uns sons diferentes, 7, 13, 15 e ai vai a quantidade... Tem sons de tudo quanto é tipo vocÊs, bichos, sirenes entre outros.. Eu estava pensando que a solução seria usar um PIC pra identificar qual som é o que se deseja tocar, uma memória auxiliar pra armazenar os sons, e algo para executar esse som em uma "corneta" ou sirene algo assim, também achgo que será necessário um amplificador, tudo isso pra funcionar a 12V bateria de moto!... Alguém aí poderia me ajudar pois tenho duvida de como armazenar esses sons, já que são analogicos, e acho que memorias trabalham com sinais diigitais... e outra não conheço nenhum CI do tipo executar de audio... Aqui tem uma buzina desse tipo: http://produto.mercadolivre.com.br/MLB-233958545-buzina-personalizada-07-sons-controle-com-fio-_JM E aqui o video de uma em funcionamento:
  9. Agora após fazer o cubo de leds to afim de fazer pra mim um relógio com termometro, dia da semana e tal, mas a principio estou querendo apenas montar o relógio que a meu ver é o código mais complicado pra se fazer, pois faz um tempo já que estou tentando, mas não consigo a parte de acertar o relógio via botões não sai... Vou postar o que eu já fiz até agora, mas sempre que vou simular no PSI dá um erro na hora que começo a tentar mexer nos botões que vão acertar, o Erro é: "Hardware Stack Overflow! Ó código está aqui: Define CLOCK_FREQUENCY = 4 AllDigital TRISB = 11100000b TRISC = 0000011000b OPTION_REG = 0x07 'DEFINIÇÃO DO DISPLAY LCD Define LCD_BITS = 4 Define LCD_DREG = PORTD Define LCD_DBIT = 4 Define LCD_RSREG = PORTD Define LCD_RSBIT = 0 Define LCD_RWREG = PORTD Define LCD_RWBIT = 1 Define LCD_EREG = PORTD Define LCD_EBIT = 2 Define LCD_READ_BUSY_FLAG = 1 TRISD = 0x00 'DEFINIÇÃO DA CONEXÃO I2C Symbol sda = PORTC.4 Symbol scl = PORTC.3 'DEFNIÇÃO DOS BOTÕES Symbol mode = PORTB.5 Symbol incr = PORTB.6 Symbol decr = PORTC.7 'DEFINIÇÃO DAS VARIÁVEIS DO PROGRAMA Dim hora As Byte Dim minuto As Byte Dim segundo As Byte Dim dia As Byte Dim mes As Byte Dim ano As Byte Dim seg As Byte Dim min As Byte Dim hora1 As Byte Dim dia1 As Byte Dim mes1 As Byte Dim ano1 As Byte Dim modo As Byte Dim txrtc(8) As Byte Dim rxrtc(8) As Byte Dim temp As Byte Dim temp1 As Byte Dim x As Byte Dim dado As Byte Dim addr As Byte Dim addrw As Word Dim erro As Bit Dim ulttemp As Byte Dim ultdec As Byte 'HABILITANDO INTERRUPÇÕES OPTION_REG.T0CS = 0 'usar clock interno OPTION_REG.PSA = 0 'prescaler ligado no TIMER0 OPTION_REG.PS2 = 1 'valor prescaler = 64 OPTION_REG.PS1 = 0 OPTION_REG.PS0 = 1 TMR0 = 0x3d 'contagem inicial do TIMER0 INTCON.T0IE = 1 'Habilita as interrupções do TIMER0 INTCON.GIE = 1 'Habilita todas as interrupções não mascaradas Enable 'agora sim as interrupções já estão acontecendo 'INICIO DO PROGRAMA Lcdinit 3 Lcdcmdout LcdDisplayOn Lcdcmdout LcdClear Lcdout "Relogio - DS1307" Lcdcmdout LcdLine2Pos(5) Lcdout "Julio C." WaitMs 1 WaitMs 1 ultdec = 0 ulttemp = 0 Lcdcmdout LcdClear Lcdout "Hora - : : " Lcdcmdout LcdLine2Home Lcdout "Data - / / " ciclo: Gosub lertc Gosub convertetempo Gosub mostratempolcd Goto ciclo End On Interrupt 'Rotina de interrupção Save System 'SEMPRE SALVAR ESTADO DO SISTEMA If mode = 1 Then modo = modo + 1 Gosub acerta Endif TMR0 = 0x3d 'contagem inicial do TIMER0 novamente INTCON.T0IF = 0 'habilita novamente as interrupções do TIMER0 Resume acerta: hora1 = hora seg = segundo min = minuto dia1 = dia mes1 = mes ano1 = ano If modo = 1 Then Gosub acertaseg If modo = 2 Then Gosub acertamin If modo = 3 Then Gosub acertahora If modo = 4 Then Gosub acertadia If modo = 5 Then Gosub acertames If modo = 6 Then Gosub acertaano Return acertaseg: If incr = 1 Then seg = seg + 1 If seg > 59 Then seg = 0 Gosub preparartc Gosub gravartc Gosub lertc Gosub convertetempo Gosub mostratempolcd Endif Endif If decr = 1 Then seg = seg - 1 If seg > 59 Then seg = 0 Gosub preparartc Gosub gravartc Gosub lertc Gosub convertetempo Gosub mostratempolcd Endif Endif If mode = 1 Then modo = modo + 1 Gosub acerta Endif If incr = 0 And decr = 0 And mode = 0 Then Goto acertaseg Endif Gosub preparartc Gosub gravartc Gosub lertc Gosub convertetempo Gosub mostratempolcd Goto acertaseg Return acertamin: If incr = 1 Then min = min + 1 If min > 59 Then min = 0 Gosub preparartc Gosub gravartc Gosub lertc Gosub convertetempo Gosub mostratempolcd Endif Endif If decr = 1 Then min = min - 1 If min > 59 Then min = 0 Gosub preparartc Gosub gravartc Gosub lertc Gosub convertetempo Gosub mostratempolcd Endif Endif If mode = 1 Then modo = modo + 1 Goto acerta Endif If incr = 0 And decr = 0 And mode = 0 Then Goto acertamin Endif Gosub preparartc Gosub gravartc Gosub lertc Gosub convertetempo Gosub mostratempolcd Goto acertamin Return acertahora: If incr = 1 Then hora1 = hora1 + 1 If hora1 > 23 Then hora1 = 0 Gosub preparartc Gosub gravartc Gosub lertc Gosub convertetempo Gosub mostratempolcd Endif Endif If decr = 1 Then hora1 = hora1 - 1 If hora1 > 23 Then hora1 = 0 Gosub preparartc Gosub gravartc Gosub lertc Gosub convertetempo Gosub mostratempolcd Endif Endif If mode = 1 Then modo = modo + 1 Gosub acerta Endif If incr = 0 And decr = 0 And mode = 0 Then Goto acertahora Endif Gosub preparartc Gosub gravartc Gosub lertc Gosub convertetempo Gosub mostratempolcd Goto acertahora Return acertadia: If incr = 1 Then dia1 = dia1 + 1 If dia > 31 Then dia = 1 Gosub preparartc Gosub gravartc Gosub lertc Gosub convertetempo Gosub mostratempolcd Endif Endif If decr = 1 Then dia1 = dia1 - 1 If dia > 31 Then dia = 1 Gosub preparartc Gosub gravartc Gosub lertc Gosub convertetempo Gosub mostratempolcd Endif Endif If mode = 1 Then modo = modo + 1 Goto acerta Endif If incr = 0 And decr = 0 And mode = 0 Then Goto acertadia Endif Gosub preparartc Gosub gravartc Gosub lertc Gosub convertetempo Gosub mostratempolcd Goto acertadia Return acertames: If incr = 1 Then mes1 = mes1 + 1 If mes1 > 12 Then mes1 = 1 Gosub preparartc Gosub gravartc Gosub lertc Gosub convertetempo Gosub mostratempolcd Endif Endif If decr = 1 Then mes1 = mes1 - 1 If mes1 > 12 Then mes1 = 1 Gosub preparartc Gosub gravartc Gosub lertc Gosub convertetempo Gosub mostratempolcd Endif Endif If mode = 1 Then modo = modo + 1 Gosub acerta Endif If incr = 0 And decr = 0 And mode = 0 Then Goto acertames Endif Gosub preparartc Gosub gravartc Gosub lertc Gosub convertetempo Gosub mostratempolcd Goto acertames Return acertaano: If incr = 1 Then ano1 = ano1 + 1 Gosub preparartc Gosub gravartc Gosub lertc Gosub convertetempo Gosub mostratempolcd Endif If decr = 1 Then ano1 = ano1 - 1 Gosub preparartc Gosub gravartc Gosub lertc Gosub convertetempo Gosub mostratempolcd Endif If mode = 1 Then modo = modo + 1 If modo > 6 Then modo = 0 Gosub acerta Endif Endif If incr = 0 And decr = 0 And mode = 0 Then Goto acertaano Endif Gosub preparartc Gosub gravartc Gosub lertc Gosub convertetempo Gosub mostratempolcd Goto acertaano Return lertc: addrw = 0 For addr = 0 To 6 dado = 0 addrw.LB = addr I2CRead sda, scl, 0xd0, addr, dado WaitMs 6 rxrtc(addr) = dado Next addr Return gravartc: addrw = 0 For addr = 0 To 6 dado = txrtc(addr) addrw.LB = addr I2CWrite sda, scl, 0xd0, addr, dado WaitMs 6 Next addr Return convertetempo: temp = rxrtc(0) temp = temp And 00001111b segundo = temp temp = rxrtc(0) temp = temp And 01110000b temp = temp / 16 temp = temp * 10 segundo = segundo + temp temp = rxrtc(1) temp = temp And 00001111b minuto = temp temp = rxrtc(1) temp = temp And 01110000b temp = temp / 16 temp = temp * 10 minuto = minuto + temp temp = rxrtc(2) temp = temp And 00001111b hora = temp temp = rxrtc(2) temp = temp And 00110000b temp = temp / 16 temp = temp * 10 hora = hora + temp temp = rxrtc(4) temp = temp And 00001111b dia = temp temp = rxrtc(4) temp = temp And 00110000b temp = temp / 16 temp = temp * 10 dia = dia + temp temp = rxrtc(5) temp = temp And 00001111b mes = temp temp = rxrtc(5) temp = temp And 00010000b temp = temp / 16 temp = temp * 10 mes = mes + temp temp = rxrtc(6) temp = temp And 00001111b ano = temp temp = rxrtc(6) temp = temp And 11110000b temp = temp / 16 temp = temp * 10 ano = ano + temp tb: Return mostratempolcd: Lcdcmdout LcdLine1Pos(8) If hora < 10 Then Lcdout "0", #hora, ":" Else Lcdout #hora, ":" Endif Lcdcmdout LcdLine1Pos(11) If minuto < 10 Then Lcdout "0", #minuto, ":" Else Lcdout #minuto, ":" Endif Lcdcmdout LcdLine1Pos(14) If segundo < 10 Then Lcdout "0", #segundo Else Lcdout #segundo Endif Return preparartc: temp = seg Gosub separa txrtc(0) = temp + temp1 * 16 temp = min Gosub separa txrtc(1) = temp + temp1 * 16 temp = hora1 Gosub separa txrtc(2) = temp + temp1 * 16 txrtc(2) = txrtc(2) And 00111111b txrtc(3) = 0 temp = dia1 Gosub separa txrtc(4) = temp + temp1 * 16 txrtc(4) = txrtc(4) And 00111111b temp = mes1 Gosub separa txrtc(5) = temp + temp1 * 16 txrtc(5) = txrtc(5) And 00011111b temp = ano1 Gosub separa txrtc(6) = temp + temp1 * 16 Return separa: 'NA SAIDA TEMP = UNIDADE E TEMP1 = DEZENA temp1 = temp / 10 temp = temp - temp1 * 10 Return Define CONF_WORD = 0x3f71
  10. Eu estou pegando o curso lá, ele está em formato isso, eu posso apenas descompactar ou tenho que emula um driver no pc, ou gravar? E vou ir fundo nesses estudos! Abraços!!!
  11. Cara desculpa estar te alugando, tanto tempo assim.... E essa pergunta que vou fazer nem sei se cabe a este tópiico acho até que não, mas busquei um tópico que fosse semalhante a esse porém trantando de C e não de Basic e não achei, então a pergunta vai aqui mesmo... Cara queria saber qual seria uma função parecida com o lookup usado no basic, em C Estou começando a aprender C aqui, e to tentando ir aos pouquinho, só que o Reference Manual do CCS é muito complicado de entender... Acho que ali foi na questão das interrupções foi mesmo uma confunsão minha na hora de entender, mas acho que entendi certo... vou fazer o meste aqui depois e testar pra ver se vai ficar bom, e em paralelo vou estudando C aos pouquinhos!!! Desculpa o incomodo e muito obrigado!!
  12. É cara o cubo deu um trabalhinho, porque foi meio corrido as soldas não ficaram exatamente como eu queria, poderiam ter sido um pouco melhor... Mas deu pra passar as ideias que eu queria... E pela sua explicação acho que é o que eu estava pensando mesmo cara... Vou ter que montar o programa normal, e criar as interrupções e nessas eu vou conferir se o pino está precionado... Só que no meu caso, eu queria uma coias do tipo, se apertar o pino 1 vez faça isso, 2 vezes aquilo, 3 aquilo outro e assim por diante... E esses aquilos, e tal, teria outros botões, que aumentariam ou diminuiriam valores... Eu pensei no seguinte raciocinio: Faço as interrupções para verificar o botão 1 se ele tiver apertado, vai para a situação 1 se eu apertar ele de novo, vai pra situação 2, se apertar de novo para a 3 e assim por diante, e caso eu aperte o botão de aumentar ou diminuir a variavel, uma dessas ações é realizadas... O Raciocinio é mais ou menos esse?? Valeu muito obrigado e Abraços!!!
  13. Aqui mais uma duvidazinha, eu queria saber como eu posso fazer, para ligar uma chave tactil, a um PORT do PIC e para que a qualquer momento que ela seja precionada, seja realizada uma ação qualquer! E eu ia postar o video mais cedo, mas o forum tava fora do ar o Dia todo... Entãos aqui está o video:
  14. Cara conseguir já coloquei ate pra funcionar aqui... Amanha vou ver se gravo e posto um video... ficou massa, meu próximo passo eu quero fazer uma matris 8x8 com leds... será vai ser muito complicado de programar??? Abraços!
  15. Shunt, valeu mesmo, muito obrigado, muito bem explicado... E desculpa ter feito você perder todo esse tempo digitando essa mensagem enorme... Foi mais ou menos isso mesmo que eu entendi... Tô montando aqui a matriz de leds, e tive a ideia de fazer o seguinte, a matriz terá 16 colunas, ou seja uma para cada led, e 4 linhas, ai resolvi fazer o seguinda, as colunas vou colocar nos PORT's B e C 8 colunas em cada PORT, e as linhas colocarei no PORT A, usarei o PIC 16F877A... Vou fazer o teste com aquele programinha ali mesmo, e ppelo que eu fiz, todos os leds da linha 1 tem que parecer acessos ao mesmo, tempo, depois vou aumentar o delay para 1 seg. para ver um acender de cada vez... Se isso der certo, depois vai ser só começar a brincadeira... hehehehe... Valeu cara, abração!

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!