sexta-feira, 6 de outubro de 2017

Animatronic Código

#include

int greenLed = 13;
int redLed = 12;
int buzzer = 11;
Servo servo;
int helloLdr = A0;
int foodLdr = A1;
int callibrationPot = A2;

int ZERO = 0;
int HALF = 45;
int FULL = 80;
int EXTR = 120;

int HAPPY = 880;
int ANGRY = 311;

int countH = 0;
int countA = 0;

int deltaT = 2;

void setup() {
  // put your setup code here, to run once:
  pinMode(greenLed, OUTPUT);
  pinMode(redLed, OUTPUT);
  pinMode(buzzer, OUTPUT);
  servo.attach(9);
  pinMode(helloLdr, INPUT);
  pinMode(foodLdr, INPUT);
  pinMode(callibrationPot, INPUT);

  servo.write(ZERO);
}

void loop() {
  // put your main code here, to run repeatedly:
  if (analogRead(helloLdr) < analogRead(callibrationPot)) {
    switch (countH) {
      case 0:
        hello0();
        countH++;
        break;
      case 1:
        hello1();
        countH++;
        break;
      case 2:
        hello2();
        countH = 0;
        break;
    }
    //    digitalWrite(greenLed, HIGH);
    //    digitalWrite(redLed, LOW);
  }
  else if (analogRead(foodLdr) < analogRead(callibrationPot)) {
    switch (countA) {
      case 0:
        food0();
        countA++;
        break;
      case 1:
        food1();
        countA++;
        break;
      case 2:
        food2();
        countA = 0;
        break;
    }
    //    digitalWrite(greenLed, LOW);
    //    digitalWrite(redLed, HIGH);
  }
  else {
    digitalWrite(greenLed, LOW);
    digitalWrite(redLed, LOW);
    noTone(buzzer);
  }
}

void hello0() {
  digitalWrite(greenLed, HIGH);
  servo.write(HALF);
  delay(500 * deltaT);
  tone(buzzer, HAPPY);
  delay(100 * deltaT);
  noTone(buzzer);
  servo.write(ZERO);
  delay(400 * deltaT);
}
void hello1() {
  digitalWrite(greenLed, HIGH);
  servo.write(HALF);
  delay(200 * deltaT);
  servo.write(FULL);
  delay(300 * deltaT);
  tone(buzzer, HAPPY);
  delay(200 * deltaT);
  noTone(buzzer);
  servo.write(ZERO);
  delay(400 * deltaT);
}
void hello2() {
  digitalWrite(greenLed, HIGH);
  servo.write(HALF);
  delay(200 * deltaT);
  servo.write(FULL);
  delay(300 * deltaT);
  tone(buzzer, HAPPY);
  delay(200 * deltaT);
  noTone(buzzer);
  delay(100 * deltaT);
  digitalWrite(greenLed, LOW);
  delay(50 * deltaT);
  digitalWrite(greenLed, HIGH);
  delay(50 * deltaT);
  digitalWrite(greenLed, LOW);
  delay(50 * deltaT);
  digitalWrite(greenLed, HIGH);
  delay(200 * deltaT);
  servo.write(ZERO);
  delay(400);
}

void food0() {
  digitalWrite(greenLed, HIGH);
  servo.write(HALF);
  delay(500 * deltaT);
  tone(buzzer, HAPPY);
  delay(100 * deltaT);
  noTone(buzzer);
  servo.write(EXTR);
  delay(200 * deltaT);
  digitalWrite(greenLed, LOW);
  digitalWrite(redLed, HIGH);
  tone(buzzer, ANGRY);
  servo.write(ZERO);
  delay(500 * deltaT);
}

void food1() {
  digitalWrite(greenLed, HIGH);
  servo.write(HALF);
  delay(500 * deltaT);
  noTone(buzzer);
  servo.write(EXTR);
  delay(200 * deltaT);
  digitalWrite(greenLed, LOW);
  digitalWrite(redLed, HIGH);
  tone(buzzer, ANGRY);
  servo.write(HALF);
  delay(500 * deltaT);
  servo.write(ZERO);
  delay(500 * deltaT);
}

void food2() {
  digitalWrite(redLed, HIGH);
  servo.write(FULL);
  delay(500 * deltaT);
  tone(buzzer, ANGRY);
  servo.write(EXTR);
  delay(200 * deltaT);
  servo.write(FULL);
  delay(500 * deltaT);
  servo.write(EXTR);
  delay(200 * deltaT);
  servo.write(FULL);
  delay(500 * deltaT);
  servo.write(EXTR);
  delay(200 * deltaT);
  servo.write(FULL);
  delay(500 * deltaT);
  servo.write(ZERO);
  delay(500 * deltaT);
}

Nenhum comentário:

Postar um comentário

Pode falar, eu não mordo... Pelo menos não através da internet