Trinket, o menor Arduino-like II
Para testar a nossa plaquinha (depois de rodar o Blink, claro), resolvi acionar um servo.
A lib de servo que vem com o Arduino não rola, porque o ATtiny não tem timer de 16 bits. Para "tocar" um servo precisamos então de uma outra lib, compatível. O povo da Adafruit fez uma, que vc pode baixar daqui. Essa lib tem um pequeno inconveniente: vc tem que chamar a rotina de refresh dela a intervalos de no máximo 20 milissegundos. Vamos analisar cá um exemplo. É o que vem com a lib, simplificado:
Ao rodar o programa, o servo alterna entre as três posições: 0, 90 e 180 graus.
Mole,. não? Nem vou fazer filminho... :)
A ideia foi mostrar que a plaquinha não faz feio mesmo em tarefas de automação. Dá prá controlar pelo menos mais um servo, simultãneamente.
A lib de servo que vem com o Arduino não rola, porque o ATtiny não tem timer de 16 bits. Para "tocar" um servo precisamos então de uma outra lib, compatível. O povo da Adafruit fez uma, que vc pode baixar daqui. Essa lib tem um pequeno inconveniente: vc tem que chamar a rotina de refresh dela a intervalos de no máximo 20 milissegundos. Vamos analisar cá um exemplo. É o que vem com a lib, simplificado:
#include <Adafruit_SoftServo.h> #define SERVO1PIN 0 Adafruit_SoftServo myServo1; void setup() { // Seta a rotina de interrupção (ver depois do loop) OCR0A = 0xAF; TIMSK |= _BV(OCIE0A); myServo1.attach(SERVO1PIN); } void loop() { myServo1.write(0); delay(2000); myServo1.write(90); delay(2000); myServo1.write(180); delay(2000); } // Essa rotina é chamada de 2 em 2ms, então ajustamos para chamá-la a cada 20ms. SIGNAL(TIMER0_COMPA_vect) { counter += 2; if (counter >= 20) { counter = 0; myServo1.refresh(); digitalWrite(1,HIGH); } }
Ao rodar o programa, o servo alterna entre as três posições: 0, 90 e 180 graus.
Mole,. não? Nem vou fazer filminho... :)
A ideia foi mostrar que a plaquinha não faz feio mesmo em tarefas de automação. Dá prá controlar pelo menos mais um servo, simultãneamente.
Comentários
Postar um comentário