Olá , sou novato no Arduino, ainda não tenho o hardware, tudo que vi funcionar foi pelo VBB(Virtual BreadBoard).
Aí me deparei com o seguinte problema pois não conseguia testar pelo simulador:
Estou fazendo boa parte dos meus projetos bases que se encontra pela internet, e encontrei aqui para fazer uma bateria, escrevi o código com base nesses, mas não consigo testar, não se se está correto, principalmente pela questão de que não quero usar uma saída MIDI e sim direto pra uma caixa de som, vi um projeto em que um cara fazia desta forma, mas era leitura de arquivos de um cartão de memória para a caixa de som. Então me pergunto:
- É possível substituir o uso da saída MIDI, direto para a caixa de som? Fazer com que os sons midi saiam diretamente para a caixa?Seja ligado diretamente ao Arduino, ou via USB para o PC?
O código que escrevi(usando MIDI):
const int LEDpin1 = 13; // Indicator LED
const int LEDpin2 = 12; // Indicator LED
const int LEDpin3 = 11; // Indicator LED
const int LEDpin4 = 10; // Indicator LED
const int LEDpin5 = 9; // Indicator LED
const int LEDpin6 = 8; // Indicator LED
// Variables:
int piezo1 = 0; // Guarda o Valor da vibração do Piezo
int piezo2 = 0; // Guarda o Valor da vibração do Piezo
int piezo3 = 0; // Guarda o Valor da vibração do Piezo
int piezo4 = 0; // Guarda o Valor da vibração do Piezo
int piezo5 = 0; // Guarda o Valor da vibração do Piezo
void setup() {
pinMode(LEDpin1, OUTPUT);
pinMode(LEDpin2, OUTPUT);
pinMode(LEDpin3, OUTPUT);
pinMode(LEDpin4, OUTPUT);
pinMode(LEDpin5, OUTPUT);
pinMode(LEDpin6, OUTPUT);
Serial.begin(31250);
blink(3);
}
void loop() {
// Bumbo - Piezo 1
piezo1 = analogRead(0); // 0 é o pino analógico do piezo1
if (piezo1 > 599){ // mínimo de força para funcionar
noteOn(0x90, 35, 0x40);
digitalWrite(LEDpin1, HIGH);
// Para a nota:
noteOn(0x90, 35, 0x00);
digitalWrite(LEDpin1, LOW);
}
// Caixa - Piezo 2
piezo2 = analogRead(1); // 1 é o pino analógico do piezo2
if (piezo2 > 599){ // mínimo de força para funcionar
// Toca a nota:
noteOn(0x90, 38, 0x40);
digitalWrite(LEDpin2, HIGH);
// Para a nota:
noteOn(0x90, 38, 0x00);
digitalWrite(LEDpin2, LOW);
}
// Chimbal - Piezo 3
piezo3 = analogRead(2); // 2 é o pino analógico do piezo3
if (piezo3 > 599){ // mínimo de força para funcionar:
// Toca a nota:
noteOn(0x90, 42, 0x40);
digitalWrite(LEDpin3, HIGH);
// Para a nota:
noteOn(0x90, 42, 0x00);
digitalWrite(LEDpin3, LOW);
}
// Prato - Piezo 4
piezo4 = analogRead(3); // 3 é o pino analógico do piezo4
if (piezo4 > 599){ // mínimo de força para funcionar
// Toca a nota:
noteOn(0x90, 41, 0x40);
digitalWrite(LEDpin4, HIGH);
// Para a nota:
noteOn(0x90, 41, 0x00);
digitalWrite(LEDpin4, LOW);
}
// Surdo ou Tom - Piezo 5
piezo5 = analogRead(4); // 4 é o pino analógico do piezo5
if (piezo5 > 599){ // mínimo de força para funcionar
// Toca a nota
noteOn(0x90, 51, 0x40);
digitalWrite(LEDpin5, HIGH);
// Para a nota:
noteOn(0x90, 51, 0x00);
digitalWrite(LEDpin5, LOW);
}
}
void noteOn(byte cmd, byte data1, byte data2) {
Serial.write(cmd); // ou senão funfar use Serial.write(byte(cmd));
Serial.write(data1);
Serial.write(data2);
}
// Pisca o led (x) vezes quando ligar:
void blink(int qtv) {
int i;
for (i=0; i< qtv; i++) {
digitalWrite(LEDpin6, HIGH);
delay(100);
digitalWrite(LEDpin6, LOW);
delay(100);
}
}
Espero ter explicado minha dúvida corretamente.
Obrigado.
XD