sexta-feira, 6 de outubro de 2017

Animatrônico - Galeria de imagens


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);
}

sexta-feira, 29 de setembro de 2017

Servo + Som

Aqui simplesmente peguei um código que prometia fazer o servo tocara a marcha imperial (e consegue, mas bem baixo) e como percebi que era basicamente um código normal de música troquei o servo por um buzzer e depois coloquei o servo pra ficar indo e voltando de um ângulo arbitrário no mesmo passo da música


#include 

//Note Definitions
const int NOTE_AS3 = 233;
const int NOTE_C4 = 262;
const int NOTE_D4 = 294;
const int NOTE_E4 = 330;
const int NOTE_F4 = 349;
const int NOTE_G4 = 392;
const int NOTE_GS4 = 415;
const int NOTE_A4 = 440;
const int NOTE_AS4 = 466;
const int NOTE_B4 = 494;
const int NOTE_C5 = 523;
const int NOTE_CS5 = 554;
const int NOTE_D5 = 587;
const int NOTE_DS5 = 622;
const int NOTE_E5 = 659;
const int NOTE_F5 = 699;
const int NOTE_FS5 = 740;
const int NOTE_G5 = 784;
const int NOTE_GS5 = 831;
const int NOTE_A5 = 880;

const int rhythmBuzzerPin = 8;
const int rhythmServoPin = 9;
const int rhythmLength = 115;

int rhythmNotes[] = {NOTE_A4, 0, NOTE_A4, NOTE_A4, NOTE_A4, NOTE_A4, 0, NOTE_A4, NOTE_A4, NOTE_A4, NOTE_A4, 0, NOTE_A4, NOTE_A4, NOTE_A4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_C5, NOTE_C5, NOTE_C5, //Intro 1 (21 Notes)
                     NOTE_A4, 0, NOTE_A4, NOTE_A4, NOTE_A4, NOTE_A4, 0, NOTE_A4, NOTE_A4, NOTE_A4, NOTE_A4, 0, NOTE_A4, NOTE_A4, NOTE_A4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_C5, NOTE_C5, NOTE_C5, //Intro 2 (21 Notes)
                     NOTE_A4, NOTE_A4, NOTE_A4, NOTE_F4, NOTE_C5, NOTE_A4, NOTE_F4, NOTE_C5, NOTE_A4,                                                                         //Part 1  (9 Notes)
                     0, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_F5, NOTE_C5, NOTE_GS4, NOTE_F4, NOTE_C5, NOTE_A4,                                                                     //Part 2  (10 Notes)
                     0, NOTE_A5, NOTE_A4, NOTE_A4, NOTE_A5, NOTE_GS5, NOTE_G5, NOTE_FS5, NOTE_F5, NOTE_FS5,                                                                   //Part 3  (10 Notes)
                     0, NOTE_AS4, NOTE_DS5, NOTE_D5, NOTE_CS5, NOTE_C5, NOTE_B4, NOTE_C5,                                                                                     //Part 4  (8 Notes)
                     0, NOTE_F4, NOTE_GS4, NOTE_F4, NOTE_A4, NOTE_C5, NOTE_A4, NOTE_C5, NOTE_E5,                                                                              //Part 5  (9 Notes)
                     0, NOTE_A5, NOTE_A4, NOTE_A4, NOTE_A5, NOTE_GS5, NOTE_G5, NOTE_FS5, NOTE_F5, NOTE_FS5,                                                                   //Part 6  (10 Notes)
                     0, NOTE_AS4, NOTE_DS5, NOTE_D5, NOTE_CS5, NOTE_C5, NOTE_B4, NOTE_C5,                                                                                     //Part 7  (8 Notes)
                     0, NOTE_F4, NOTE_GS4, NOTE_F4, NOTE_C5, NOTE_A4, NOTE_F4, NOTE_C5, NOTE_A4
                    };                                                                                     //Part 8  (9 Notes)

int rhythmBeats[] = {1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, //Intro 1
                     1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, //Intro 2
                     4, 4, 4, 3, 1, 4, 3, 1, 4,                    //Part 1
                     4, 4, 4, 4, 3, 1, 4, 3, 1, 4,                 //Part 2
                     4, 4, 3, 1, 4, 3, 1, 1, 1, 1,                 //Part 3
                     3, 2, 4, 3, 1, 1, 1, 1,                       //Part 4
                     3, 2, 4, 3, 1, 4, 3, 1, 4,                    //Part 5
                     3, 4, 3, 1, 4, 3, 1, 1, 1, 1,                 //Part 6
                     3, 2, 4, 3, 1, 1, 1, 1,                       //Part 7
                     3, 2, 4, 3, 1, 4, 3, 1, 4
                    };                           //Part 8

int tempo = 150;
boolean serv = true;
Servo myservo;

void setup()
{
  pinMode(rhythmBuzzerPin, OUTPUT);
  myservo.attach(9);
}

void loop()
{
  int i, rhythmDuration;

  for (i = 0; i < rhythmLength; i++) // step through the song arrays
  {
    rhythmDuration = rhythmBeats[i] * tempo;  // length of note/rest in ms

    if (rhythmNotes[i] == '0')          // is this a rest?
    {
      if (serv) {myservo.write(0); serv = !serv;} else {myservo.write(90); serv = !serv;}
      delay(rhythmDuration);            // then pause for a moment
    }

    else                          // otherwise, play the note
    {
      tone(rhythmBuzzerPin, rhythmNotes[i], rhythmDuration);
      if (serv) {myservo.write(0); serv = !serv;} else {myservo.write(90); serv = !serv;}
      delay(rhythmDuration);            // wait for tone to finish
    }
    delay(tempo / 10);            // brief pause between notes
  }

  while (true) {}
}

quarta-feira, 20 de setembro de 2017

Números aleatórios


segunda-feira, 28 de agosto de 2017

The Dawn of the First Day

  E para a primeira aula do Laboratório de criatividade  tivemos como tarefa a criação de uma logo após a realização de um testezinho de criatividade que consistia em fazer um desenho em pouco tempo com base em um círculo numa folha de papel (que por sinal já tínhamos feito uma vez em comunicação visual, só que lá eram vários círculos). O resultado desse teste e o processo de criação dessa logo, veremos depois do corte.



terça-feira, 23 de maio de 2017

Xadrez para N (Colorful edition)

Clique na imagem para mudar a quantidade

Xadrez pra 2, 3, 4 e 5