tone() no ATtiny85

165 views
Skip to first unread message

Marcelo Lários

unread,
Oct 21, 2013, 10:08:56 AM10/21/13
to hacker...@googlegroups.com
Ontem tentei várias maneiras de usar o tone() no ATtiny mas não rolou, depois de vários tutoriais, restou esse último para tentar, mas o dia acabou.

Se alguém já conseguiu de alguma maneira, ou quiser tentar na quinta estarei no Garoa.

A pior das hipóteses é tentar fazer(argh) uma libzinha básica, né. A outra é mandar pro Mythbusters.

abs
Marcelo

DQ

unread,
Oct 21, 2013, 11:53:36 AM10/21/13
to hacker...@googlegroups.com
Marcelo,

Acho que não tem muito como deixar de dar uma mexida no tone.cpp da biblioteca do Arduino. Olhando em minhas anotações sobre o uso dos timers:
  • timer 0 é usado por  delay(), millis() and micros() (em wiring.c)
  • timer 2 é usado por tone(), exceto no Leonardo (ou quem usar o ATmega32U) que usa o timer3 (tone.cpp)
  • analogWrite usa vários timers, conforme o pino. Isto é uma característica do ATmega (e ATtiny), que usa timers diferentes para pinos diferentes

O tone.cpp é bem confuso.O timer 2 é um timer de 8bits, que não tem no ATtiny85. Um jeito é usar o timer1 (que também é de 8bits), outro é tentar aproveitar o timer 0 (aí tem que mexer no wiring.c também). Se você precisar usar também PWM a coisa vai ficar um pouco mais apertada.

Se sobrar tempo dou uma olhada nisto, senão fica para a Noite do Arduino.

DQ

Marcelo Lários

unread,
Oct 21, 2013, 2:09:56 PM10/21/13
to hacker...@googlegroups.com
Vou tentar usar o timer1. O projeto usa PWM. 
Achei um tópico no a.cc que pode dar uma luz: http://forum.arduino.cc/index.php/topic,134754.0.html

Marcelo

Marcelo Lários

unread,
Nov 25, 2013, 10:01:09 AM11/25/13
to hacker...@googlegroups.com
DQ,

Obrigado pelas dicas e pelo ATtiny. 

Funcionou e muito bem! Também fiz um teste gravando o BootLoader para aumentar o ATTiny para 16MHz. As frequências precisam ser divididas  mas também funcionou.  
Na Noite do Arduino eu levo o projeto no garoa. Falta uma capa 3D para ser chaveiro musical. 


abs
Marcelo

DQ

unread,
Nov 25, 2013, 10:42:59 AM11/25/13
to hacker...@googlegroups.com
Gostei dos sons, ficou muito bom.

DQ

Luis Leao

unread,
Nov 25, 2013, 11:00:03 AM11/25/13
to hacker...@googlegroups.com
Ficou bacana!

Quero ver como foi codar isso.

[]'s
Luís



2013/11/25 Marcelo Lários <marcelo...@gmail.com>

--
.--. .- .-. .- .--. --- ... - .- .-. . ... -.-. .-. . ...- .- .--. .- .-. .- .... .- -.-. -.- . .-. ... .--. .- -.-. . ... .--. .- - --. --- --- --. .-.. . --. .-. --- ..- .--. ... -.. --- - -.-. --- --
Regras da Lista: http://garoa.net.br/wiki/Lista:LeiaAntesDeClicarNoSend
Para mais informações sobre o Garoa Hacker Clube acesse http://garoa.net.br
Maiores opções sobre o Google Groups, visite: http://groups.google.com/group/hackerspacesp
.--. .- .-. .- -- .- .. ... .. -. ..-. --- .-. -- .- . ... .- -.-. . ... ... . --- .-- .. -.- ..
Epoch 0 <=> Fundação: 1298244863 s ~ 2.408064*10^52 tP (tempos de Planck)
 

Marcelo Lários

unread,
Nov 26, 2013, 10:04:59 AM11/26/13
to hacker...@googlegroups.com
É questão de acertar a frequência e duração entre várias notas, usando as funções do próprio Arduino:

ex.:
loop(); {

    tone(11, 1108.73); //pino e frequência
    delay(10); //duração
    noTone(11); //sem frequência
    delay(10); //duração

}

(ligar um falante no pino 11 e gnd)


abs
Marcelo

Luis Leao

unread,
Nov 26, 2013, 10:18:45 AM11/26/13
to hacker...@googlegroups.com

Acho que o attiny não tem pino 11 ;)

Marcelo Lários

unread,
Nov 26, 2013, 10:34:01 AM11/26/13
to hacker...@googlegroups.com
Hehe, não tem mesmo. Esse código é para o Arduino UNO como exemplo de codar o som. 

Para o Attiny, pode usar o mesmo cód. e por o pino 2. Porém tem que setar o ATTiny para trabalhar em 16 MHz. 
Se seu ATTiny for de 8 MHz tem que multiplicar a frequência por 2. Já o delay multiplica por 10. 

Marcelo

Marcelo Lários

unread,
Nov 26, 2013, 1:45:07 PM11/26/13
to hacker...@googlegroups.com
Link do vídeo atualizado ;)

Reply all
Reply to author
Forward
0 new messages