collapse

* Posts Recentes

Identificar 2 componentes por almamater
[31 de Agosto de 2025, 18:06]


Ajuda Pcb USB 3.0 por andlig
[10 de Agosto de 2025, 10:36]


+ LASERs por dropes
[16 de Julho de 2025, 12:38]


Cerca eléctrica por SerraCabo
[14 de Junho de 2025, 23:26]


Alguém arranja motores? por almamater
[10 de Junho de 2025, 22:34]


Condensador 4.7uF 0603 por brunus
[09 de Junho de 2025, 15:52]


Lenovo IdeaPad 3 Não liga por jm_araujo
[07 de Maio de 2025, 19:10]


Identificar Diodo Zenner por filjoa
[01 de Maio de 2025, 23:07]


Meu novo robô por dropes
[18 de Março de 2025, 14:51]


JBL partybox On-The-Go por almamater
[21 de Fevereiro de 2025, 23:32]

Autor Tópico: Arduino Drumkit  (Lida 113622 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline tcustodio

  • Mini Robot
  • *
  • Mensagens: 344
  • "beware of programmers who carry a soldering iron"
    • Youtube
Re: Arduino Drumkit
« Responder #75 em: 03 de Março de 2012, 05:46 »
As entradas digitais do arduino 2,3,4,5 vão comandar A0,A1,A2,A3 (mux 0) , analog 0 -> Z(mux 0)
                                                  6,7,8,9 vão comandar A0,A1,A2,A3 (mux 1) , analog 1 -> Z(mux 1)
                                          10,11,12,13 vão comandar A0,A1,A2,A3 (mux 2) , analog 2 -> Z(mux 2)
seria isto não é?:)  ou não :(  ?
Não. No MuxShield, podes ver que só são usados os pinos 2, 3, 4 e 5 para controlar os pinos A0, A1, A2 e A3 dos três multiplexadores :)
Portanto, ligas o pino 2 do arduino aos pinos A0 dos três multiplexadores, o pino 3 aos A1 e por aí adiante. ;)
Tiago Custódio,
- Não me dêem álcool se estiver um piano por perto.

Offline cellen

  • Mini Robot
  • *
  • Mensagens: 17
Re: Arduino Drumkit
« Responder #76 em: 03 de Março de 2012, 07:20 »
Maravilha! Obrigado Tiago!
Estarei montando e testando, Vai ficar muito bom!
Eu sempre tive muita vontade de ter uma bateria eletrônica, mas sempre estava muito cara. Mas agora graças a você e outros gênios da eletrônica, vou poder montar a minha com um custo mais baixo! ;D
E quantas coisas não dá pra fazer hein? Até um teclado controlador midi ( com um arduino mega pra aumentar a polifonia :D)
Eu mesmo toco teclado ( psr 910 yamaha ;D) e agora o baterista vai poder criar muito, e com os melhores sons! ;)
Enfim, muito bom mesmo! :D

Offline cellen

  • Mini Robot
  • *
  • Mensagens: 17
Re: Arduino Drumkit
« Responder #77 em: 05 de Março de 2012, 05:04 »
opa Tiago, montei apenas com 6 analogicos pra testar.
Coloquei o teu codigo, da pagina 1 deste topico, mas a notaOff, não foi aceita na depuração. Ele diz que não foi declarada, etc (talvez porque os codigos do arduino versão 1.0 mudou algumas coisa)
coloquei depois aquele codigo da plaquinha vermelha http://www.spikenzielabs.com/SpikenzieLabs/DrumKitKit.html, e com algumas modificações, funcionou.
Mas deu trabalho. para ter pouca latência só daquele jeito mesmo: s2midi, midi yoke, e coloquei reaper com sf2.
porém quando bato, repetem as notas.
será porque os piezos estão dentro de livros?
Alguma idéia de codigo?
obrigado

Offline tcustodio

  • Mini Robot
  • *
  • Mensagens: 344
  • "beware of programmers who carry a soldering iron"
    • Youtube
Re: Arduino Drumkit
« Responder #78 em: 05 de Março de 2012, 14:34 »
opa Tiago, montei apenas com 6 analogicos pra testar.
Coloquei o teu codigo, da pagina 1 deste topico, mas a notaOff, não foi aceita na depuração. Ele diz que não foi declarada, etc (talvez porque os codigos do arduino versão 1.0 mudou algumas coisa)
coloquei depois aquele codigo da plaquinha vermelha http://www.spikenzielabs.com/SpikenzieLabs/DrumKitKit.html, e com algumas modificações, funcionou.
Mas deu trabalho. para ter pouca latência só daquele jeito mesmo: s2midi, midi yoke, e coloquei reaper com sf2.
porém quando bato, repetem as notas.
será porque os piezos estão dentro de livros?
Alguma idéia de codigo?
obrigado

O meu código foi ajustado às condiçõs que tinha... devias começar por fazer o teu próprio código aproveitando do meu o mais elementar: as função noteOn. Por acaso reparei que não está lá a função noteOff. basta comentares essa linha de código!
Devias construir o código do início para compreenderes à tua medida o que é preciso fazer :)

as notas repetirem também me acontecia, tem a ver com a variável debounce. Essa variável serve para o arduino saber que depois de uma batida num prato tem que esperar X milissegundos para poder aceitar outra batida no mesmo prato! Experimenta alterar o seu valor para algo maior, como 100, 150 e experimenta ;)
« Última modificação: 05 de Março de 2012, 14:42 por tcustodio »
Tiago Custódio,
- Não me dêem álcool se estiver um piano por perto.

Offline cellen

  • Mini Robot
  • *
  • Mensagens: 17
Re: Arduino Drumkit
« Responder #79 em: 07 de Março de 2012, 06:31 »
Fala Tiago  :)
Experimentei bastante coisa e agora ficou legal, tá respondendo desde o mais fraco até o mais forte com bastante precisão.
Acrescentei este código abaixo e ficou bem sensível, a ponto de ter que aumentar o tempo da próxima nota, mas ficou muito bom!

Código: [Seleccione]
#define FASTADC 1

// defines for setting and clearing register bits
#ifndef cbi
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#endif
#ifndef sbi
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#endif
 
#if FASTADC
  // set prescale to 16
  sbi(ADCSRA,ADPS2) ;
  cbi(ADCSRA,ADPS1) ;
  cbi(ADCSRA,ADPS0) ;
#endif

Agora estou mudando os materiais do pad, porque madeira mesmo fininha é meio insensível, necessitando de muita força.
Cortei e coloquei o fundo de uma lata de milho e ficou muito bom!
Vou continuar pesquisando os melhores materiais! ;)


« Última modificação: 07 de Março de 2012, 10:26 por TigPT »

Offline cellen

  • Mini Robot
  • *
  • Mensagens: 17
Re: Arduino Drumkit
« Responder #80 em: 15 de Março de 2012, 05:12 »
Fala tiago, estou quebrando a cabeça com este código. Andei observando as variações das batidas midi, (você bate forte e sai fraco, bate forte de novo e sai forte, quero dizer "sem precisão") e verifiquei que o arduino vai transformando os valores analogicos em midi muito rapidamente (uma batida livre, sem theshold, ou debounce, tem quase 50 variações!)

algumas batidas mostram o mais forte logo na primeira, outros liberam a batida mais forte depois da sétima, etc

então estava tentando pegar a batida maior, entre varias amostras (coisa de milissegundos), e transformar apenas esta batida em midi. Porém está dificil! Ele acaba pegando todos. Pensei que a variavel chamada "maior" iria fazer este trabalho porém nada. Voce tem alguma solução pra isto? Obrigado ???
Abaixo em anexo está o código.

Offline tcustodio

  • Mini Robot
  • *
  • Mensagens: 344
  • "beware of programmers who carry a soldering iron"
    • Youtube
Re: Arduino Drumkit
« Responder #81 em: 15 de Março de 2012, 13:47 »
olá, cellen :)

dei uma olhadela no teu código, acho aquele ciclo inicial um pouco desnecessário...
Tu não precisas de um ciclo para capturar as batidas dentro do loop, o loop já é um ciclo. Podes tratar os dados à medida que os capturas. Isso que te acontece é estranho, dado que temos um sistema debounce implementado. Eu tentaria tornar o threshold dinâmico. Implementa um threshold para cada prato, e quando capturas uma batida válida, sobes o threshold desse prato :)
Experimenta para ver se funciona...
Tiago Custódio,
- Não me dêem álcool se estiver um piano por perto.

Offline cellen

  • Mini Robot
  • *
  • Mensagens: 17
Re: Arduino Drumkit
« Responder #82 em: 15 de Março de 2012, 15:02 »
Então Tiago, eu queria colocar este código porque tenho tido variação. Eu descobri isto antes de colocar este código. tirei todo código que limitava as batidas,(baixei o threshold e o offset, baixei o debounce)
 e no s2midi respondia deste jeito: 35,42,55,60,75,74,73,72, 70.... e começava a baixar até o threshold + offset.
Isto significa que eu queria a batida valor "75", e na verdade ele pegaria o primeiro valor "35" e travaria o resto.
Este exemplo ainda dá pra passar, mas e quando você bate forte "127" e te retorna  "35"?
Outras pessoas tem demonstrado este mesmo problema em outros foruns, o que pode ser o problema do Piezo.


as vezes ele começa em baixo, o que dá erro na interpretação.
Se eu fosse colocar aquele código, você saberia o que deveria mudar para o meu código funcionar com umas 10 primeiras amostras? ???

Offline tcustodio

  • Mini Robot
  • *
  • Mensagens: 344
  • "beware of programmers who carry a soldering iron"
    • Youtube
Re: Arduino Drumkit
« Responder #83 em: 15 de Março de 2012, 16:03 »
cellen, quando disse que não via a necessidade daquele ciclo logo no início em que lês a amplitude do piezo, é porque tu capturas 10 amostras seguidas e depois trata-las. Ora, como lês sem nenhum intervalo de tempo regular, as 10 leituras são muito rápidas, aí na ordem dos microssegundos, duvido que no meio de 10 amostras são perto um das outras apanhes alguma muito maior. Bater nos pratos são eventos que acontecem na ordem dos milissegundos...
Leres os canais como no meu código dá espaço para apanhar alguma coisa e processar tudo. Ajustar o threshold e debounce time deveria ser o suficiente. Talvez implementar um threshold dinâmico possa ajudar.

No teu código não encontro nada de errado, acho que a única coisa que pode correr mal é mesmo o teu ciclo de captura de dados
Tiago Custódio,
- Não me dêem álcool se estiver um piano por perto.

Offline cellen

  • Mini Robot
  • *
  • Mensagens: 17
Re: Arduino Drumkit
« Responder #84 em: 16 de Março de 2012, 05:04 »
Opa Tiago
Fiz um outro codigo com max(a,b), não está perfeito, (acho que com vetor ficaria melhor) mas está funcionando. Enquanto A<B lê novamente A (500ms) e B. Coloquei um delaymicrossegundo(500) entre eles, e usando o aquele procedimento que vai escrevendo todos os envios até parar, verifiquei que o maior é escrito primeiro e depois vai baixando. :D
Depois escrevi que escrevesse a primeira e não escrevesse até tempo X. O que eu acho errado, Acho que ele deveria identificar e desprezar a queda do piezo.
Em um forum um cara colocou mais algumas resistencias e diminuiu o tempo de queda do piezo.
Acho que meu maior trabalho seja a forma artesanal que estou usando nos piezos. acho que o certo mesmo seja usar uma pele muda, com um cone colocado entre o piezo e a pele, como nas ROLANDs 8)

Era isto que  eu queria, porém acho que este código poderia ser melhor, ao invés de comparar de par em par até que comece a baixar, ele poderia funcionar daquele jeito que eu te descrevi anteriormente ::)

Offline tcustodio

  • Mini Robot
  • *
  • Mensagens: 344
  • "beware of programmers who carry a soldering iron"
    • Youtube
Re: Arduino Drumkit
« Responder #85 em: 16 de Março de 2012, 12:09 »
Isso estar a melhorar é bom! Porém, ao meteres um delay podes estar a ignorar dados, se bem que neste caso acho que não é crítico. Volto a martelar na mesma tecla: creio que capturar uma amostra e tratá-la com debounce como mostro no meu código acaba por ser o mais rápido e dificilmente deixa escapar dados :)

Quanto aos pratos, sim, com certeza a construção dos pratos terá um enorme efeito! quando for fazer os meus de forma decente, estou a pensar usar uma madeira fina e forrar a madeira com um tecido grosso para abafar a pancada.
Tiago Custódio,
- Não me dêem álcool se estiver um piano por perto.

Offline cellen

  • Mini Robot
  • *
  • Mensagens: 17
Re: Arduino Drumkit
« Responder #86 em: 04 de Abril de 2012, 00:04 »
Voltei a mexer na bateria. :D
porém agora ao ler o mux 16 canais (hef4067bp) quando bato no pad(0), os seguintes pads (1,2,3,4...) recebem valores que vão baixando :P
alguém sabe o porque? Será que está faltando alguma ligação no GND? algum aterramento?

Offline Hugu

  • Mini Robot
  • *
  • Mensagens: 5.602
  • Keyboard not found. Press any key to continue.
    • [url=www.g7electronica.net]G7 Electrónica.net[/url]
Re: Arduino Drumkit
« Responder #87 em: 04 de Abril de 2012, 01:35 »
Voltei a mexer na bateria. :D
porém agora ao ler o mux 16 canais (hef4067bp) quando bato no pad(0), os seguintes pads (1,2,3,4...) recebem valores que vão baixando :P
alguém sabe o porque? Será que está faltando alguma ligação no GND? algum aterramento?

tens video?.. :)

Offline tcustodio

  • Mini Robot
  • *
  • Mensagens: 344
  • "beware of programmers who carry a soldering iron"
    • Youtube
Re: Arduino Drumkit
« Responder #88 em: 04 de Abril de 2012, 01:48 »
Voltei a mexer na bateria. :D
porém agora ao ler o mux 16 canais (hef4067bp) quando bato no pad(0), os seguintes pads (1,2,3,4...) recebem valores que vão baixando :P
alguém sabe o porque? Será que está faltando alguma ligação no GND? algum aterramento?
na minha também acontecia isso às vezes, mas normalmente só no pad ao lado. Vê se isso te acontece se isolares o teu pad dos outros (põe-nos em sítios diferentes)
Tiago Custódio,
- Não me dêem álcool se estiver um piano por perto.

Offline cellen

  • Mini Robot
  • *
  • Mensagens: 17
Re: Arduino Drumkit
« Responder #89 em: 05 de Abril de 2012, 03:51 »
Voltei a mexer na bateria. :D
porém agora ao ler o mux 16 canais (hef4067bp) quando bato no pad(0), os seguintes pads (1,2,3,4...) recebem valores que vão baixando :P
alguém sabe o porque? Será que está faltando alguma ligação no GND? algum aterramento?

tens video?.. :)

Vou filmar para mostrar