Ir ao conteúdo
  • Cadastre-se

xyko-2020

Membro VIP
  • Posts

    5.139
  • Cadastrado em

  • Última visita

Reputação

866

1 Seguidor

Sobre xyko-2020

  1. Aí teria que usar o mesmo clock, senão ... bagunça!
  2. Provavelmente a superfície que fecha contato é de borracha com uma película condutora. Corte papel alumínio com o mesmo diâmetro e cole nesta superfície. Você pode testar se todas as teclas estão funcionando apenas colando o mesmo papel alumínio em uma caneta como esta e tocando nos contatos da placa. edit: Tire uma foto da placa, parte dos contatos, e poste aqui pra vermos as condições.
  3. Acreditei quando fiz um teste só com "NOPs". Fiz uma rotina na IDE do arduino onde medi os micros antes de executar milhares de instruções "NOP" e depois de executado "imprimi" a diferença no monitor. Cada NOP foi executado em 1/72MHz, ou 13.88nS. Porém a diferença é gritante quando se testa ou se manipula 1bit. Por exemplo nos AVRs: pinMode(10,OUTPUT); a instrução acima consome dezenas de bytes da flash. Já desta forma: DDRB = DDRB || B00000100; // aqui parece que foi executado como em ASM. apenas alguns bytes, portanto a IDE é que precisa ser otimizada. adicionado 8 minutos depois @ribeiro220 Acho que o problema da onda quadrada você pode resolver com isto. Todas as saídas devem entrar num MIXER antes de ser amplificadas, senão as frequências mais baixas irão "encobrir" as mais altas.
  4. Quero lembrar que no que propus a saída é onda quadrada. Para gerar onda senoidal o programa é bem mais complexo e dependendo da resolução do conversor DA usado, deve usar um uControlador bem mais poderoso, talvez até mesmo um DSP. Estou desenvolvendo uma bateria eletrônica, tipo "DRUM PAD" com todos os instrumentos + alguns efeitos, isso usando um AVR normal, mas com algumas rotinas em assembly. Defini que vai poder reproduzir até 4 instrumentos simultâneos, dos 32 que vou implementar, usando conversores DA de 8bits ou os próprios PWMs e com 11025 "samples" por segundo. Não preciso de muita definição pois vou tocar só os sons graves. Assim que começar os testes coloco o vídeo aqui.
  5. ATtiny2313 @ 16 ou 20MHz. Compilador: Bascom AVR. Nada impede que teste com arduino UNO ou NANO. Indiquei um microcontrolador mais poderoso porque percebi que a IDE do arduino gera um código HEX muito maior que o BASCOM, portanto deve usar mais instruções para uma mesma função. 20uS é equivalente a 320 ciclos de máquina de um AVR, portanto acho que é o suficiente para tratar a interrupção, porém um STM32chega a 1.25 DMIPS / MHz. These features make the STM32F103xx medium-density performance line microcontroller family suitable for a wide range of applications such as motor drives, application control, medical and handheld equipment, PC and gaming peripherals, GPS platforms, industrial applications, PLCs, inverters, printers, scanners, alarm systems, video intercoms, and HVACs. Key Features ARM® 32-bit Cortex® -M3 CPU Core 72 MHz maximum frequency,1.25 DMIPS/MHz (Dhrystone 2.1) performance at 0 wait state memory access Single-cycle multiplication and hardware division Referência
  6. Deve funcionar assim como meus 12 PWMs funcionam e uso há anos. Caso use um microcontrolador tipo STM32 a 72MHz, pode diminuir a base de tempo para que as frequencias fiquem bem mais precisas.
  7. Também já fiz muito disso e também colocando grafite na "borracha" condutora. Se quiser algo melhor, caso sua placa ainda funciona, https://www.google.com/search?q=tinta+condutiva+para+teclado&o que=tinta+condutora+para+te&aqs=chrome.1.69i57j0.10965j0j7&sourceid=chrome&ie=UTF-8
  8. Vamos lá... acho que dá pra fazer. É o mesmo princípio que uso para fazer 12PWMs no ATtiny2313. Precisará de uma base de tempo, digamos de 20uS para gerar, digamos, 50.000 interrupções por segundo(20uS). Pode usar um gerador externo ou um timer. Criar 12 contadores(variáveis C1 a C12) para cada frequência a ser gerada, e 12 saídas: S1 a S12. Suponhamos que queira a frequencia de 440Hz (nota Lá - bem conhecida dos músicos) 1/440~= 2272uS Dividiremos por 2 para obter o semiciclo, ou 1136uS Quantas interrupções são necessárias para este tempo: 1136uS/20uS~= 56. Digamos que esta freq. é f1, então: #define f1 56 #define f2 xx . . #define f12 xx No tratamento da interrupção, fazer o seguinte. void counter() { C1++; C2++; C3++;... ; C12++; if (C1 == f1) { S1=!S1; //inverte saída 1 C1=0; // reseta contador 1 } if (C2 == f2) { S2=!S2; //inverte saída 2 C2=0; // reseta contador 2 } //fazer isto para as 12 saídas } //end interrupt Não sei se fui claro! Se errei nos cálculos, me corrijam, pois fiz na pressa... mas a ideia é essa.
  9. ... e eu (também) só vi mesmo neste receptores analógicos de parabólica. Em nada mais.
  10. Sugire ler sobre DEBOUCE ou DEBOUCING que vai entender.. https://www.embarcados.com.br/leitura-de-chaves-debounce/ https://www.google.com/search?q=debouncing&o que=debouc&aqs=chrome.7.69i57j0l7.9309j0j7&sourceid=chrome&ie=UTF-8
  11. 90% dos casos é o ressonador cerâmico. Veja o valor e substitua-o. Se tiver um outro controle parado, retire o ressonador e coloque no seu, aí pode fazer o teste indicado pela @Isadora Ferraz . Caso o ressonador tenha outro valor de frequência, o máximo que pode acontecer é o sinal enviado pelo controle não seja sincronizado com o receptor, mas já sabe que é só substituir pelo mesmo valor. Verifica também se a "perninna" do seu ressonador não quebrou. Quando substituir, prenda-o na placa com cola quente ou silicone.
  12. Isso não é falta de capacitor, mesmo que tenha o desenho na placa. Acontece que quando se produz uma placa, ela serve para vários modelos de equipamentos, então é normal que alguns destes equipamentos não necessitem de todos os componentes previstos na placa.
  13. Só pra esclarecer o tempo Só para esclarecer, é isto mesmo. O arduino fica aguardando os dados na serial pelo bootloader. Por isso, é importante não receber nenhum dado de outros equipamentos pela serial neste tempo. Pode ser que, por acaso, os primeiros bytes coincidam com os mesmos que o bootloader identifica que é para gravar o chip.

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