/*
Sweep adapter for the ATtiny85, using the AdaFruit SoftServo library.
Servo is connected to pin PB0.
Example created especially for Blake Madison
*/
#include <Adafruit_SoftServo.h> // SoftwareServo (works on non PWM pins)
Adafruit_SoftServo myservo;
int pos = 0; // variable to store the servo position
int blink = 0;
void setup() {
pinMode(3, OUTPUT);
pinMode(1, INPUT_PULLUP);
pinMode(4, INPUT_PULLUP);
//configurando a interrupção que irá atualizar o servo automaticamente
OCR0A = 0xAF; // qualquer valor está ok
TIMSK |= _BV(OCIE0A); // Ativando o comparador (observador) de interrupção (SIGNAL)
myservo.attach(PB0);
}
// aproveitar o temporizador millis() integrado que dispara
// esperando o tempo para atualizar o servo a cada 20 milisegundos
volatile uint8_t counter = 0;
SIGNAL(TIMER0_COMPA_vect) {
counter += 2;
if (counter >= 20) { // a cada 20 milliseconds
counter = 0;
myservo.refresh(); //atualizar o servo
}
}
void loop() {
int val = analogRead(A1); //lendo o sinal do potenciômentro
pos = map(val, 0, 1023, -30, 30); //mapeando para o intervalo -30 a 30
int s1 = digitalRead(PB1); //lendo o sinal da placa (representado pelos botões)
int s2 = digitalRead(PB4);
if(s1 && !s2)
myservo.write(25+pos); //servo para direita
else if(!s1 && s2)
myservo.write(140+pos); //servo para esquerda
else
myservo.write(85+pos); //servo para o centro
digitalWrite(PB3, blink); //piscando luz
blink = !blink;
delay(100);
}