Boa tarde galera eu estou fazendo um tcc e estou querendo fazer um tcc de piano box

eu peguei um codigo que ele e do mega e eu tenho arduino uno.

alguem poderia me ajudar a converter

eu sou basico em arduino

/

#include <CapSense.h>
#include <Tone.h>

/*
Generates up to 5 simultaneous tones and controls a series of LEDs
based on input from a series of capacitive sensors.
Uses the CapSense (http://www.arduino.cc/playground/Main/CapSense)
and Tone libraries (http://code.google.com/p/rogue-code/wiki/ToneLibraryDocumentation)
William E. Byrd and Catarina Mota
GNU GPL v.3 03-13-12
*/

int notes[] = { NOTE_C4,
NOTE_CS4,
NOTE_D4,
NOTE_DS4,
NOTE_E4,
NOTE_F4,
NOTE_FS4,
NOTE_G4,
NOTE_GS4,
NOTE_A4,
NOTE_AS4,
NOTE_B4
};

int leds[] = { 22,24,26,28,30,32,34,36,38,40,42,44 };

// Max number of simultaneous tones (Arduino Uno has 3 hardware timers,
// Arduino Mega has 6)
const int numNotePlayers = 5;
//Number of keys (capacitive sensors)
const int numCapSensors = 12;

// Change the debug flag to 'true' to print values read by the
// capacitive sensors.
const boolean debug = false;

Tone notePlayer[numNotePlayers];

int startingNotePin = 2;

int playerUsed[numCapSensors];
int capForPlayer[numNotePlayers];

// First capsense receive (sensor) pin
int startingCapPin = 53;
int capPinIncrement = -2;
// CapSense send pin
int comparisonPin = 23;

// Sensor threshold at which the tones and LEDs are triggered
int capThresh = 500;

int i;

//Assigns pins 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47 to each key
CapSense cs[] = { CapSense(comparisonPin,startingCapPin),
CapSense(comparisonPin,startingCapPin + (capPinIncrement * 1)),
CapSense(comparisonPin,startingCapPin + (capPinIncrement * 2)),
CapSense(comparisonPin,startingCapPin + (capPinIncrement * 3)),
CapSense(comparisonPin,startingCapPin + (capPinIncrement * 4)),
CapSense(comparisonPin,startingCapPin + (capPinIncrement * 5)),
CapSense(comparisonPin,startingCapPin + (capPinIncrement * 6)),
CapSense(comparisonPin,startingCapPin + (capPinIncrement * 7)),
CapSense(comparisonPin,startingCapPin + (capPinIncrement * 8)),
CapSense(comparisonPin,startingCapPin + (capPinIncrement * 9)),
CapSense(comparisonPin,startingCapPin + (capPinIncrement * 10)),
CapSense(comparisonPin,startingCapPin + (capPinIncrement * 11))
};

void setup(void) {

Serial.begin(9600);

//initializes the 5 tone players on pins 2,3,4,5,6
for (i = 0; i < numNotePlayers; i++) {
notePlayer[i].begin(startingNotePin+i);
}

pinMode(22, OUTPUT);
pinMode(24, OUTPUT);
pinMode(26, OUTPUT);
pinMode(28, OUTPUT);
pinMode(30, OUTPUT);
pinMode(32, OUTPUT);
pinMode(34, OUTPUT);
pinMode(36, OUTPUT);
pinMode(38, OUTPUT);
pinMode(40, OUTPUT);
pinMode(42, OUTPUT);
pinMode(44, OUTPUT);

}


void loop(void) {

if (debug) {
Serial.print(cs[0].capSense(30));
Serial.print("\t");
Serial.print(cs[1].capSense(30));
Serial.print("\t");
Serial.print(cs[2].capSense(30));
Serial.print("\t");
Serial.print(cs[3].capSense(30));
Serial.print("\t");
Serial.print(cs[4].capSense(30));
Serial.print("\t");
Serial.print(cs[5].capSense(30));
Serial.print("\t");
Serial.print(cs[6].capSense(30));
Serial.print("\t");
Serial.print(cs[7].capSense(30));
Serial.print("\t");
Serial.print(cs[8].capSense(30));
Serial.print("\t");
Serial.print(cs[9].capSense(30));
Serial.print("\t");
Serial.print(cs[10].capSense(30));
Serial.print("\t");
Serial.print(cs[11].capSense(30));
Serial.print("\t\n");
}

int currentPlayer = 0;

for (i = 0; i < numCapSensors; i++) { //check each capacitive sensor

if (currentPlayer < numNotePlayers) { //if there is a free player (i.e. no more than 5 tones currently playing)
if (cs[i].capSense(30) > capThresh) { //if one of the keys has been triggered
digitalWrite(leds[i], HIGH); //turn on the corresponding LED
notePlayer[currentPlayer].play(notes[i]); //play the corresponding tone on the next available player
currentPlayer++;
} else {
digitalWrite(leds[i], LOW); //turn off the corresponding LED
}
}
}

//Stops playing all other tones and turns off all other LEDs
for (i = currentPlayer; i < numNotePlayers; i++) {
notePlayer[i].stop();
}
}

Exibições: 232

Responder esta

Respostas a este tópico

Não sei se posso te ajudar pq tambem sou arduino nivel basico, nunca utilizei o Mega.

o problema está no numero de pinos que vc pretende utilizar, o Arduíno uno possui apenas 13 pinos digitais, caso você precise de mais, terá que expandir as portas, eu contei por cima 25 pinos para o teclado  e 13 para os leds neste código.

vc já tem o teclado pronto?

Para o código completo o Arduino Uno não vai servir, já dá para notar 12 Outputs de Leds, e você ainda usa o serial (o que impede o uso dos pontos 0 e 1 digital).

Além disso, me pareceu que serão utilizadas mais 12 portas para "teclas" touch.

Para um projeto completo disso será necessário um Arduino Mega, além disso, veja se não há maiores explicações do local de onde você retirou o código, fazer um sensor touch capacitivo não é coisa tão simples, vai dar um certo trabalho também.

Existem métodos de mudar isso, por exemplo, controlar vários Leds com poucas portas, mas é algo mais trabalhoso e complexo, para um iniciante pode ter certeza que comprar um Arduino Mega é a melhor solução, pois nesse caso o código já estaria pronto para você usar.

Concordo com você, se usar o Mega fica bem mais rápido mesmo, o UNO é muito bom, mas ele é bem simples, ideal para pequenas aplicações, talvez até de de fazer, mas vai dar bastante trabalho. Algo sofisticado assim é bom um Mega mesmo.

Eu acho que é melhor, e mais barato, vc comprar um Mega. Tempo é dinheiro. Alem de que pra fazer todas as adpatações de hardware necessárias (para expandir as portas) vai mais que o preço de um Mega.

Ainda, pode ser que vc faça tudo e ainda não rode, por usar algum recurso exclusivo do Mega (não sei, não conheço essa biblioteca)

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço