Desejo ajuda desse fórum no sentido de prover solução para o uso do ATtiny85 usando o Arduino IDE 1.0.4.
O simples teste usando o sketch Blink, alterando o pino de saída de 13 para 0 (zero), mostra uma série de erros na compilação.
Usei inicialmente a sugestão contida em http://labdegaragem.com/forum/topics/attiny85-16mhz-com-oscilador-i... para dotar o ATtiny85 de 16MHz.
Em G:\Arduino_104\arduino-1.0.4\hardware\arduino\cores\arduino são encontrados os arquivos listados no ANEXO 1.
No ANEXO 2 estão aos “boards” instaladas.
No ANEXO 3 a IDE do Arduino 1.0.4 com o código e os erros de compilação.
Caso sejam necessárias mais informações para melhor análise do assunto, poderei enviá-las.
Antecipadamente agradeço a ajuda dos participantes do fórum.
Tags:
Paulo, porque vc incluiu a biblioteca Arduino.h e pins arduino.h?
Agradeço a atenção do Mauricio e do Ric4rdo.
Usei como sugerido o conteúdo de tiny.zip, mas, não houve sucesso no acionamento de servo pelo ATtiny85.
Fiz bootloader para 1MHz, 8MHz e 16MHz (Anexo4.jpg). O servo "crispa" e não entende a diferença de tensão gerada no potenciômetro usando o código do Anexo5.jpg. Substitui a função "map" por cálculo simples da posição que o servo de tomar conforme a seguir: val = val * 179; val = val / 1023;
O servo continuou "crispando".
Há na rede um código para servo fazendo "SWEEP" com a biblioteca SoftwareServo, mas, não é o meu objetivo.
Se ainda restar alguma sugestão ficarei grato. Caso contrário terei que apelar para outra hardware.
Grato a vocês.
Vai no diretório do arduino, abra a pasta hardware e descompacte o arquivo em anexo. Vai ser criada uma pasta "tiny". Essa pasta contém todos os arquivos necessários, perfeitamente configurados e prontos para usar.
Possui suporte para: ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny2313 e ATtiny4313.
Agradeço a atenção do Mauricio e do Ric4rdo.
Usei como sugerido o conteúdo de tiny.zip, mas, não houve sucesso no acionamento de servo pelo ATtiny85.
Fiz bootloader para 1MHz, 8MHz e 16MHz (Anexo4.jpg). O servo "crispa" e não entende a diferença de tensão gerada no potenciômetro usando o código do Anexo5.jpg. Substitui a função "map" por cálculo simples da posição que o servo de tomar conforme a seguir: val = val * 179; val = val / 1023;
O servo continuou "crispando".
Há na rede um código para servo fazendo "SWEEP" com a biblioteca SoftwareServo, mas, não é o meu objetivo.
Se ainda restar alguma sugestão ficarei grato. Caso contrário terei que apelar para outra hardware.
Grato a vocês.
Paulo,
Como não sei o nível e conhecimento que vc tem. Vou dar conselho para iniciante, ok:
faça o código primeiro funcionar no UNO ou no 2009, e depois faça o upload no Attiny só mudando a pinagem se for o caso.Muitas vezes o código tem erros, e descobrir depois fica mais difícil.
Este efeito do Servo "crispando" arriscaria dois palpites:
1) Eu não uso o "refresh" que vc colocou no seu código (mas podem ser que eu use uma biblioteca diferente)
2) outra causa comum, é não ligar os GNDs (mas isso só se vc estiver usando duas fontes de alimentação (pilha para o servo e USB para o arduino, por exemplo).
Abç e boa sorte ai.
Abaixo o código (Knob) capturado da biblioteca de exemplos e com a troca de "Servo.h" por "SoftwareServo.h". Funciona perfeitamente bem com Arduino NANO (e com certeza no UNO) alimentado por fonte regulada (7808) de 8V, enquanto o servo motor é alimentado também por fonte regulada (7805). O polo negativo (GND) é comum às duas fontes de alimentação.
O jeito é continuar pesquisando.
Obrigado pelo interesse no assunto.
// Controlling a servo position using a potentiometer (variable resistor) // by Michal Rinott a href="http://people.interaction-ivrea.it/m.rinott">http://people.interaction-ivrea.it/m.rinott>
#include <SoftwareServo.h>
SoftwareServo myservo; // create servo object to control a servo
int potpin = 0; // analog pin used to connect the potentiometer
int val; // variable to read the value from the analog
pin void setup() {
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop() {
val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and 1023) val = map(val, 0, 1023, 0, 179); // scale it to use it with the servo (value between 0 and 180) myservo.write(val); // sets the servo position according to the scaled value SoftwareServo::refresh(); // waits for the servo to get there }
A biblioteca SoftwareServo eu nunca testei mas já usei a Servo8Bit nos attinys. Acho que vale a pena testar e ver se resolve o seu problema.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por