sexta-feira, 20 de outubro de 2017

Sexta-Feira 13 Parte V - Um Novo Começo

Então, aparentemente a tarefa da Sexta 13 não era sobre sexta-feiras 13...
Mas temos uma nova atividade pra produzir um negócio que pode dar em algo muito legal!

"SMD Fashion" (Ih, f#@&u) fazer uma roupa com detalhes feitos de outros materiais e com algum propósito... Bom, admito logo que tenho alguma vantagem por morar literalmente numa escola de moda (Inclusive digito isso de onde já foi uma das salas de aula à luz da sala de aula/costura atual) mas aí é só pela disponibilidade de material e de alguém que sabe bem dos macetes. Mas ainda assim, tenho eu que criar o que vou fazer, portanto tive que pensar logo no que poderia ser.
Procuro na internet por alguma inspiração, mas a maioria das coisas é para fazer peças femininas mesmo que a partir de peças masculinas e não era bem o que eu queria. Então penso num material que eu tenho sobrando e gostaria de usar, então eu lembrei de um fio de cobre que tenho pra fazer em algum futuro utópico uma "Tesla Coil". Mas o que eu faria com fios de cobre na roupa? Pensei em algum circuito, mas descartei logo, porém a presença de metal na roupa me lembrou da composição de um ceto estilo que eu gosto, então why not?

PS.: Pena que era customização de roupas e não de carros pra mim fazer algo assim:




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