top of page

SEARCH BY TAGS: 

RECENT POSTS: 

FOLLOW ME:

  • Facebook Clean Grey
  • Twitter Clean Grey
  • Instagram Clean Grey

O Código

  • engenhariausf
  • 8 de abr. de 2015
  • 2 min de leitura

Abaixo o código referente a programação para Arduino Uno.

// *****************************************************************************************************************

// * *

// * Arduino Uno *

// * *

// * Bateria Eletrônica com Arduino *

// * USF - 2015 *

// * *

// *****************************************************************************************************************

//*******************************************************************************************************************

// Variáveis de Definição do Usuário.

//*******************************************************************************************************************

unsigned char PadNote[6] = {36,71,67,65,47,73}; // Notas MIDI - 0 a 127

int PadCutOff[6] = {200,200,400,400,200,400}; // Valor Mínimo do Sensor para causar o som

int MaxPlayTime[6] = {35,35,35,35,35,35}; // Ciclos a passar antes da Segunda Batida ser acionada.

#define midichannel 0; // Canal Midi

boolean VelocityFlag = true; // Se o som será de acordo com a intensidade da Batida.

//*******************************************************************************************************************

// Variáveis de uso Interno

//*******************************************************************************************************************

boolean activePad[6] = {0,0,0,0,0,0}; // Salva se os pads estao ativos ou nao.

int PinPlayTime[6] = {0,0,0,0,0,0}; // Contador dos ciclos desde que o pad foi acionado.

unsigned char status;

int pin = 0;

int hitavg = 0;

//*******************************************************************************************************************

// Setup

//*******************************************************************************************************************

void setup()

{

Serial.begin(57600);

}

//*******************************************************************************************************************

// Main Program

//*******************************************************************************************************************

void loop()

{

for(int pin=0; pin < 6; pin++) // Percorre os Pinos Analógicos

{

hitavg = analogRead(pin); // Lê o Valor do Sensor

if((hitavg > PadCutOff[pin])) // Verifica se o valor pego pelo sensor é maior que o Valor minimo para causar o Som

{

if((activePad[pin] == false)) // Verifica se o Pad já está sendo executado.

{

if(VelocityFlag == true) // Verifica se o som será de acordo com a Intensidade da Batida, para gerar o Sinal Midi.

{

// hitavg = 127 / ((1023 - PadCutOff[pin]) / (hitavg - PadCutOff[pin])); // With full range (Too sensitive ?)

hitavg = (hitavg / 8) -1 ; // Upper range

}

else

{

hitavg = 127;

}

MIDI_TX(144,PadNote[pin],hitavg); // Joga o SInal MIDI

PinPlayTime[pin] = 0; //Seta o Ciclo para '0'

activePad[pin] = true; // Altera o Pad para Ativo.

}

else

{

PinPlayTime[pin] = PinPlayTime[pin] + 1; // Caso o Pad ja esteja ativo, incrementa 1 Ciclo.

}

}

else if((activePad[pin] == true)) // ESTA SEGUNDA PARTE É RESPONSÁVEL APENAS POR INCREMENTAR OS CICLOS E ATIVAR/DESATIVAR OS PADS.

{

PinPlayTime[pin] = PinPlayTime[pin] + 1;

if(PinPlayTime[pin] > MaxPlayTime[pin])

{

activePad[pin] = false;

MIDI_TX(128,PadNote[pin],127);

}

}

}

}

//*******************************************************************************************************************

// Função que transmite o MIDI

//*******************************************************************************************************************

void MIDI_TX(unsigned char MESSAGE, unsigned char PITCH, unsigned char VELOCITY)

{

status = MESSAGE + midichannel;

Serial.write(status);

Serial.write(PITCH);

Serial.write(VELOCITY);

}

 
 
 

Comments


© 2014 por Engenheirando na USF.  Wix.com

  • b-facebook
  • Twitter Round
  • Instagram Black Round
bottom of page