# data[].attributes.body
Código Arduino

#include <Adafruit_NeoPixel.h> //IF YOU DONT HAVE THIS LIBRARY YOU CAN DOWNLOAD FROM GITHUB,
                               //JUST SEARCH FOR Adafruit NEOPIXEL LIBRARY//


#define MAXLED         240 // MAX LEDs actives on strip

//Pins Arduino Day 19 version
#define PIN_LED        A0  // R 500 ohms to DI pin for WS2812 and WS2813,
                           //for WS2813 BI pin of first LED to GND  ,
                           //CAP 1000 uF to VCC 5v/GND,power supplie 5V 2A

#define PIN_P1         7   // switch player 1 to PIN and GND
#define PIN_P2         6   // switch player 2 to PIN and GND
#define PIN_AUDIO      3   // through CAP 2uf to speaker 8 ohms

//Pins Maker Faire Roma 19 version
//#define PIN_LED        2  // R 500 ohms to DI pin for WS2812 and WS2813,
                            // for WS2813 BI pin of first LED to GND  ,
                           // CAP 1000 uF to VCC 5v/GND,power supplie 5V 2A

//#define PIN_P1         A0 // switch player 1 to PIN and GND
//#define PIN_P2         A2 // switch player 2 to PIN and GND
//#define PIN_AUDIO      3  // through CAP 2uf to speaker 8 ohms

int NPIXELS=MAXLED; // leds on track

#define COLOR1    track.Color(255,0,0)
#define COLOR2    track.Color(0,255,0)

int win_music[] = {
  2637, 2637, 0, 2637,
  0, 2093, 2637, 0,
  3136
};

byte  gravity_map[MAXLED];

int TBEEP=3;

float speed1=0;
float speed2=0;
float dist1=0;
float dist2=0;

byte loop1=0;
byte loop2=0;

byte leader=0;
byte loop_max=5; //total laps race


float ACEL=0.2;
float kf=0.015; //friction constant
float kg=0.003; //gravity constant

byte flag_sw1=0;
byte flag_sw2=0;
byte draworder=0;

unsigned long timestamp=0;

Adafruit_NeoPixel track = Adafruit_NeoPixel(MAXLED, PIN_LED, NEO_GRB + NEO_KHZ800);

int tdelay = 5;

void set_ramp(byte H,byte a,byte b,byte c)
{for(int i=0;i<(b-a);i++){gravity_map[a+i]=127-i*((float)H/(b-a));};
 gravity_map[b]=127;
 for(int i=0;i<(c-b);i++){gravity_map[b+i+1]=127+H-i*((float)H/(c-b));};
}

void set_loop(byte H,byte a,byte b,byte c)
{for(int i=0;i<(b-a);i++){gravity_map[a+i]=127-i*((float)H/(b-a));};
 gravity_map[b]=255;
 for(int i=0;i<(c-b);i++){gravity_map[b+i+1]=127+H-i*((float)H/(c-b));};
}


void setup() {
  for(int i=0;i<NPIXELS;i++){gravity_map[i]=127;};
  track.begin();
  pinMode(PIN_P1,INPUT_PULLUP);
  pinMode(PIN_P2,INPUT_PULLUP);

  if ((digitalRead(PIN_P1)==0)) //push switch 1 on reset for activate physic
  {
    set_ramp(12,90,100,110);    // ramp centred in LED 100 with 10 led fordward and 10 backguard
    for(int i=0;i<NPIXELS;i++)
{
track.setPixelColor(i, track.Color(0,0,(127-gravity_map[i])/8) );};
    track.show();
  };
  start_race();
}

void start_race(){
for(int i=0;i<NPIXELS;i++)
{
track.setPixelColor(i, track.Color(0,0,0));
};
track.show();
delay(2000);
track.setPixelColor(12, track.Color(0,255,0));
track.setPixelColor(11, track.Color(0,255,0));
track.show();
tone(PIN_AUDIO,400);
delay(2000);
noTone(PIN_AUDIO);
track.setPixelColor(12, track.Color(0,0,0));
track.setPixelColor(11, track.Color(0,0,0));
track.setPixelColor(10, track.Color(255,255,0));
track.setPixelColor(9, track.Color(255,255,0));
track.show();
tone(PIN_AUDIO,600);
delay(2000);
noTone(PIN_AUDIO);
track.setPixelColor(9, track.Color(0,0,0));
track.setPixelColor(10, track.Color(0,0,0));
track.setPixelColor(8, track.Color(255,0,0));
track.setPixelColor(7, track.Color(255,0,0));
track.show();
tone(PIN_AUDIO,1200);
delay(2000);
noTone(PIN_AUDIO);
timestamp=0;
};

void winner_fx() {
 int msize = sizeof(win_music) / sizeof(int);
 for (int note = 0; note < msize; note++) {
 tone(PIN_AUDIO, win_music[note],200);
  delay(230);
 noTone(PIN_AUDIO);

}


};

void burning1(){
//to do
 }

void burning2(){
//to do
 }

void track_rain_fx(){
//to do
 }

void track_oil_fx(){
//to do
 }

void track_snow_fx(){
//to do
 }


void fuel_empty(){
//to do
 }

void fill_fuel_fx(){
//to do
 }

void in_track_boxs_fx(){
//to do
 }

void pause_track_boxs_fx(){
//to do
 }

void flag_boxs_stop(){
//to do
 }

void flag_boxs_ready(){
//to do
 }

void draw_safety_car(){
//to do
 }

void telemetry_rx(){
  //to do
 }

void telemetry_tx(){
  //to do
 }

void telemetry_lap_time_car1(){
//to do
 }

void telemetry_lap_time_car2(){
//to do
 }

void telemetry_record_lap(){
//to do
 }

void telemetry_total_time(){
//to do
 }

int read_sensor(byte player){
//to do
}

int calibration_sensor(byte player){
  //to do
}

int display_lcd_laps(){
  //to do
}

int display_lcd_time(){
  //to do
}



void draw_car1(void)
{for(int i=0;i<=loop1;i++)
{
track.setPixelColor(((word)dist1 % NPIXELS)+i, track.Color(0,255-i*20,0));
};
  }

void draw_car2(void)
{for(int i=0;i<=loop2;i++)
{track.setPixelColor(((word)dist2 % NPIXELS)+i, track.Color(255-i*20,0,0));
};
 }

void loop() {
    //for(int i=0;i<NPIXELS;i++){track.setPixelColor(i, track.Color(0,0,0));};
    for(int i=0;i<NPIXELS;i++)
{track.setPixelColor(i, track.Color(0,0,(127-gravity_map[i])/8) );
};

    if ( (flag_sw1==1) && (digitalRead(PIN_P1)==0) ) {flag_sw1=0;speed1+=ACEL;};
    if ( (flag_sw1==0) && (digitalRead(PIN_P1)==1) ) {flag_sw1=1;};

    if ((gravity_map[(word)dist1 % NPIXELS])<127)
     speed1-=kg*(127-(gravity_map[(word)dist1 % NPIXELS]));
    if ((gravity_map[(word)dist1 % NPIXELS])>127)
       speed1+=kg*((gravity_map[(word)dist1 % NPIXELS])-127);


    speed1-=speed1*kf;

    if ( (flag_sw2==1) && (digitalRead(PIN_P2)==0) )
{flag_sw2=0;speed2+=ACEL;};
    if ( (flag_sw2==0) && (digitalRead(PIN_P2)==1) ) {flag_sw2=1;
};

    if ((gravity_map[(word)dist2 % NPIXELS])<127)
       speed2-=kg*(127-(gravity_map[(word)dist2 % NPIXELS]));
    if ((gravity_map[(word)dist2 % NPIXELS])>127)
         speed2+=kg*((gravity_map[(word)dist2 % NPIXELS])-127);

    speed2-=speed2*kf;

    dist1+=speed1;
    dist2+=speed2;

    if (dist1>dist2) {leader=1;}
    if (dist2>dist1) {leader=2;};

    if (dist1>NPIXELS*loop1) {loop1++;tone(PIN_AUDIO,600);TBEEP=2;};
    if (dist2>NPIXELS*loop2) {loop2++;tone(PIN_AUDIO,700);TBEEP=2;};

    if (loop1>loop_max) {for(int i=0;i<NPIXELS;i++)
{track.setPixelColor(i, track.Color(0,255,0));}; track.show();
   winner_fx();
loop1=0;
loop2=0;
dist1=0;
dist2=0;
speed1=0;
speed2=0;
timestamp=0;
     start_race();
   }
    if (loop2>loop_max) {for(int i=0;i<NPIXELS;i++)
{track.setPixelColor(i, track.Color(255,0,0));
};
track.show();
 winner_fx();
loop1=0;
loop2=0;
dist1=0;
dist2=0;
speed1=0;
speed2=0;
timestamp=0;
start_race();
}
    if ((millis() & 512)==(512*draworder)) {
if (draworder==0) {draworder=1;
}
else {draworder=0;
}
};

    if (draworder==0) {draw_car1();draw_car2();}
        else {draw_car2();draw_car1();}

    track.show();
    delay(tdelay);

    if (TBEEP>0)
 {
TBEEP-=1;
if (TBEEP==0) {noTone(PIN_AUDIO);}; // lib conflict !!!! interruption off by neopixel
};
}

# data[].attributes.body
Código Arduino Uno

int notas[] = {262, 294, 330, 349};

void setup() {
Serial.begin(9600);
}

void loop() {
int ValorTeclaPulsada = analogRead(A0);
Serial.println(ValorTeclaPulsada);

if (ValorTeclaPulsada > 1023) {
tone(8, notas[0]);
}
else if (ValorTeclaPulsada > 990 && ValorTeclaPulsada < 1023) {
tone(8, notas[1]);
}
else if (ValorTeclaPulsada > 505 && ValorTeclaPulsada < 515) {
tone(8, notas[2]);
}
else if (ValorTeclaPulsada > 5 && ValorTeclaPulsada < 10) {
tone(8, notas[3]);
}
else {
noTone(8);
}

# data[].attributes.body
Código Criando Som

int speakerPin = 11;

int length = 15; // número de notas

char notes[] = "ccggaagffeeddc "; // espaços representam pausas

int beats[] = { 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 4 };

int tempo = 300;

void playTone(int tone, int duration) {

for (long i = 0; i < duration 1000L; i += tone 2) {

digitalWrite(speakerPin, HIGH);

delayMicroseconds(tone);

digitalWrite(speakerPin, LOW);

delayMicroseconds(tone);

}

}

void playNote(char note, int duration) {

char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };

int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 };

// toque o tom correspondente ao nome da nota

for (int i = 0; i < 8; i++) {

if (names[i] == note) {

playTone(tones[i], duration);

}

}

}

void setup() {

pinMode(speakerPin, OUTPUT);

}

void loop() {

for (int i = 0; i < length; i++) {

if (notes[i] == ' ') {

delay(beats[i] * tempo); // rest

} else {

playNote(notes[i], beats[i] * tempo);

}

// pausa entre notas

delay(tempo / 2);

}

}

# data[].attributes.headline
Semáforo Inteligente com Display de 7 segmentos 

# data[].attributes.subject
Semáforo Inteligente com Display de 7 segmentos 

# data[].attributes.body
Código

/***************************************************/ /* Aula 5 - Semáforo completo com display / / Programação de um semáforo completo com botão e / / display com quatro dígitos e contador de tempo / / de travessia restante para pedestres. / /**************************************************/ /* Links para a biblioteca TM1637, desenvolvida / / por Avishay Orpaz, para instalação no / / software Arduino IDE: / / https://github.com/avishorp/TM1637 / / http://librarymanager/All#TM1637#I2C-Like / /**************************************************/ /* Inclui a biblioteca de controle do display. / #include / Cria a variável para armazenar a contagem. / int contador; / Definições dos pinos utilizados. O módulo aceita*/ /* pinos analógicos e digitais. / #define CLK A4 #define DIO A5 / Definição dos pinos de controle dos LEDs do / / semáforo. */ #define Verde_Carros 13 #define Amarelo_Carros 12 #define Vermelho_Carros 11 #define Verde_Pedestres 10 #define Vermelho_Pedestres 9/* Definição do pino de controle do botão. / #define botao 2 / Cria o objeto de controle para o display / / mencionando os pinos utilizados do Arduino. / TM1637Display display(CLK, DIO); / Início das configurações. / void setup() { / Define o brilho do display (0 a 15). / display.setBrightness(15); / Garantimos que o display inicie desligado. / display.clear(); / Definimos o pino do botão como entrada, / / ativando o resistor interno do Arduino. / pinMode(botao, INPUT_PULLUP); / Definimos os pinos dos LEDs como saídas. / pinMode(Verde_Carros, OUTPUT); pinMode(Amarelo_Carros, OUTPUT); pinMode(Vermelho_Carros, OUTPUT); pinMode(Verde_Pedestres, OUTPUT); pinMode(Vermelho_Pedestres, OUTPUT); }/ Fim das configurações. / / Início do looping infinito. / void loop() { / Se o botão for pressionado, faça... / if (digitalRead(botao) == 0) { / Aguarda 2 segundos. / delay(2000); / Desliga o LED Verde dos carros. / digitalWrite(Verde_Carros, 0); / Liga o LED Amarelo dos carros. / digitalWrite(Amarelo_Carros, 1); / Aguarda 5 segundos. / delay(5000); / Inicia o contador em 15 segundos. / contador = 15; / Inicia a contagem até 15. */for (int count = 0; count < 16; count++) { /* Se o contador for maior que 5, faça... / if (contador > 5) { / Desliga o LED Amarelo dos carros. / digitalWrite(Amarelo_Carros, 0); / Liga o LED Vermelho dos carros. / digitalWrite(Vermelho_Carros, 1); / Liga o LED Verde dos pedestres. / digitalWrite(Verde_Pedestres, 1); / Desliga o LED Vermelho dos pedestres. / digitalWrite(Vermelho_Pedestres, 0); / Se o contador não for maior que 5, então*/ /* inicia a sequência que faz o LED / / Vermelho dos pedestres piscar, indicando*/ /* o fim do tempo de travessia. / } else { / Desliga o LED Verde dos pedestres. / digitalWrite(Verde_Pedestres, 0); if (fmod(contador, 2) == 0) { / Desliga o LED Vermelho dos pedestres. / digitalWrite(Vermelho_Pedestres, 0); } else { / Liga o LED Vermelho dos pedestres. / digitalWrite(Vermelho_Pedestres, 1); } } / Mostra no display o tempo restante de / / travessia, sem os zeros à esquerda do / / número. / display.showNumberDec(contador, false); / Após, decrementa 1 do tempo restante. / contador += -1; / Espera 1 segundo para atualizar o contador*/ delay(1000); }/* Limpa o display. / display.clear(); / Se o botão não for pressionado, mantenha os / / LEDs da seguinte forma: / } else { / Liga o LED Verde dos carros. / digitalWrite(Verde_Carros, 1); / Desliga o LED Amarelo dos carros. / digitalWrite(Amarelo_Carros, 0); / Desliga o LED Vermelho dos carros. / digitalWrite(Vermelho_Carros, 0); / Desliga o LED Verde dos pedestres. / digitalWrite(Verde_Pedestres, 0); / Liga o LED Vermelho dos pedestres. / digitalWrite(Vermelho_Pedestres, 1); } }/ Fim do looping infinito. */