Circuito final do projeto:
Este blog tem como objetivo mostrar o desenvolvimento do nosso projeto chamado Teclado Sensitivo. Projeto montado pelos alunos: Alessandra Angelo, Mariana Trevisan e Douglas Hoshino com objetivo de aprimorar nossos conhecimentos sobre Arduino. Alunos da universidade PUC-SP do curso de Ciência da Computação.
quinta-feira, 14 de junho de 2012
segunda-feira, 11 de junho de 2012
Código final:
Obs: As resistências de cada condição podem mudar de acordo com a luminosidade do ambiente.
#include <LiquidCrystal.h> //inclui a biblioteca LiquidCrystal
int ledBLUE = 10; //define o pino em que o led azul está ligado
int ledGREEN = 11; //define o pino em que o led verde está ligado
int ledRED = 12; //define o pino em que o led vermelho está ligado
int LDR1,LDR2,LDR3,LDR4,LDR5,LDR6; //declaração das variáveis dos LDRs
LiquidCrystal lcd(8, 13, 5, 4, 3, 2); //defini os pinos da LiquidCrystal
void setup() {
Serial.begin(9600);
lcd.begin(16, 2); //Inicializa uma tela de LCD com 16 colunas e 2 linhas
pinMode(ledBLUE, OUTPUT); //define que o pino 10 será uma saida
pinMode(ledGREEN, OUTPUT); //define que o pino 11 será uma saida
pinMode(ledRED, OUTPUT); //define que o pino 12 será uma saida
pinMode(9,OUTPUT); //define que o pino 9 será uma saída
pinMode(A0, INPUT); //define que o pino A0 será uma entrada
pinMode(A1, INPUT); //define que o pino A1 será uma entrada
pinMode(A2, INPUT); //define que o pino A2 será uma entrada
pinMode(A3, INPUT); //define que o pino A3 será uma entrada
pinMode(A4, INPUT); //define que o pino A4 será uma entrada
pinMode(A5, INPUT); //define que o pino A5 será uma entrada
}
void loop() {
LDR1 = analogRead(A0); //lê o valor da resistência do LDR1
LDR2 = analogRead(A1); //lê o valor da resistência do LDR2
LDR3 = analogRead(A2); //lê o valor da resistência do LDR3
LDR4 = analogRead(A3); //lê o valor da resistência do LDR4
LDR5 = analogRead(A4); //lê o valor da resistência do LDR5
LDR6 = analogRead(A5); //lê o valor da resistência do LDR6
//imprimi os valores das resistências dos 6 LDRs
Serial.print("Valor lido no LDR1:\t");
Serial.print(LDR1);
Serial.print("\tValor lido no LDR2:\t");
Serial.print(LDR2);
Serial.print("\tValor lido no LDR3:\t");
Serial.print(LDR3);
Serial.print("\tValor lido no LDR4:\t");
Serial.print(LDR4);
Serial.print("\tValor lido no LDR5:\t");
Serial.print(LDR5);
Serial.print("\tValor lido no LDR6:\t");
Serial.println(LDR6);
if(LDR1>=680){
digitalWrite(ledBLUE,LOW); //apaga o LED azul do RGB
digitalWrite(ledGREEN,HIGH); //acende o LED verde do RGB
digitalWrite(ledRED,LOW); //apaga o LED vermelho do RGB
lcd.setCursor(0, 0);//coluna 0 linha 0
lcd.print("Nota Musical: ");//imprimi na coluna zero linha zero
lcd.setCursor(0, 1);//coluna 0 linha 1
lcd.print("Do ");//imprimi na coluna 0 linha 1
tone(9, 261, 1000000000); //no pino 9 emite a frequência de 261 htz por 1000000000 ms
}else if(LDR2>=700){
digitalWrite(ledBLUE, HIGH); //acende o LED azul do RGB
digitalWrite(ledGREEN,LOW); //apaga o LED verde do RGB
digitalWrite(ledRED,LOW); //apaga o LED vermelho do RGB
lcd.setCursor(0, 0);//coluna 0 linha 0
lcd.print("Nota Musical: ");//imprimi na coluna zero linha zero
lcd.setCursor(0, 1);//coluna 0 linha 1
lcd.print("Re ");//imprimi na coluna 0 linha 1
tone(9, 293, 1000000000); //no pino 9 emite a frequência de 293 htz por 1000000000 ms
}
else if(LDR3>=900){
digitalWrite(ledBLUE, LOW); //apaga o LED azul do RGB
digitalWrite(ledGREEN,HIGH); //acende o LED verde do RGB
digitalWrite(ledRED,HIGH); //acende o LED vermelho do RGB
lcd.setCursor(0, 0);//coluna 0 linha 0
lcd.print("Nota Musical: ");//imprimi na coluna zero linha zero
lcd.setCursor(0, 1);//coluna 0 linha 1
lcd.print("Mi ");//imprimi na coluna 0 linha 1
tone(9, 329, 1000000000); //no pino 9 emite a frequência de 329 htz por 1000000000 ms
}
else if(LDR4>=900){
digitalWrite(ledBLUE, LOW); //apaga o LED azul do RGB
digitalWrite(ledGREEN,LOW); //apaga o LED verde do RGB
digitalWrite(ledRED,HIGH); //acende o LED vermelho do RGB
lcd.setCursor(0, 0);//coluna 0 linha 0
lcd.print("Nota Musical: ");//imprimi na coluna zero linha zero
lcd.setCursor(0, 1);//coluna 0 linha 1
lcd.print("Fa ");//imprimi na coluna 0 linha 1
tone(9, 349, 1000000000); //no pino 9 emite a frequência de 349 htz por 1000000000 ms
}
else if(LDR5>=900){
digitalWrite(ledBLUE, HIGH); //acende o LED azul do RGB
digitalWrite(ledGREEN,HIGH); //acende o LED verde do RGB
digitalWrite(ledRED,HIGH); //acende o LED vermelho do RGB
lcd.setCursor(0, 0);//coluna 0 linha 0
lcd.print("Nota Musical: ");//imprimi na coluna zero linha zero
lcd.setCursor(0, 1);//coluna 0 linha 1
lcd.print("Sol ");//imprimi na coluna 0 linha 1
tone(9, 392, 1000000000); //no pino 9 emite a frequência de 392 htz por 1000000000 ms
}
else if(LDR6>=900){
digitalWrite(ledBLUE, HIGH); //acende o LED azul do RGB
digitalWrite(ledGREEN,LOW); //apaga o LED verde do RGB
digitalWrite(ledRED,HIGH); //acende o LED vermelho do RGB
lcd.setCursor(0, 0);//coluna 0 linha 0
lcd.print("Nota Musical: ");//imprimi na coluna zero linha zero
lcd.setCursor(0, 1);//coluna 0 linha 1
lcd.print("La ");//imprimi na coluna 0 linha 1
tone(9, 440, 1000000000); //no pino 9 emite a frequência de 440 htz por 1000000000 ms
}
else{
lcd.setCursor(0, 0);//coluna 0 linha 0
lcd.print("TecladoSensitivo");//imprimi na coluna zero linha zero
lcd.setCursor(0, 1);//coluna 0 linha 1
lcd.print("Toque uma nota! ");//imprimi na coluna 0 linha 1
noTone(9); //desliga o pino 9
digitalWrite(ledBLUE, LOW); //apaga o LED azul do RGB
digitalWrite(ledGREEN,LOW); //apaga o LED verde do RGB
digitalWrite(ledRED,LOW); //apaga o LED vermelho do RGB
}
}
Obs: As resistências de cada condição podem mudar de acordo com a luminosidade do ambiente.
#include <LiquidCrystal.h> //inclui a biblioteca LiquidCrystal
int ledBLUE = 10; //define o pino em que o led azul está ligado
int ledGREEN = 11; //define o pino em que o led verde está ligado
int ledRED = 12; //define o pino em que o led vermelho está ligado
int LDR1,LDR2,LDR3,LDR4,LDR5,LDR6; //declaração das variáveis dos LDRs
LiquidCrystal lcd(8, 13, 5, 4, 3, 2); //defini os pinos da LiquidCrystal
void setup() {
Serial.begin(9600);
lcd.begin(16, 2); //Inicializa uma tela de LCD com 16 colunas e 2 linhas
pinMode(ledBLUE, OUTPUT); //define que o pino 10 será uma saida
pinMode(ledGREEN, OUTPUT); //define que o pino 11 será uma saida
pinMode(ledRED, OUTPUT); //define que o pino 12 será uma saida
pinMode(9,OUTPUT); //define que o pino 9 será uma saída
pinMode(A0, INPUT); //define que o pino A0 será uma entrada
pinMode(A1, INPUT); //define que o pino A1 será uma entrada
pinMode(A2, INPUT); //define que o pino A2 será uma entrada
pinMode(A3, INPUT); //define que o pino A3 será uma entrada
pinMode(A4, INPUT); //define que o pino A4 será uma entrada
pinMode(A5, INPUT); //define que o pino A5 será uma entrada
}
void loop() {
LDR1 = analogRead(A0); //lê o valor da resistência do LDR1
LDR2 = analogRead(A1); //lê o valor da resistência do LDR2
LDR3 = analogRead(A2); //lê o valor da resistência do LDR3
LDR4 = analogRead(A3); //lê o valor da resistência do LDR4
LDR5 = analogRead(A4); //lê o valor da resistência do LDR5
LDR6 = analogRead(A5); //lê o valor da resistência do LDR6
//imprimi os valores das resistências dos 6 LDRs
Serial.print("Valor lido no LDR1:\t");
Serial.print(LDR1);
Serial.print("\tValor lido no LDR2:\t");
Serial.print(LDR2);
Serial.print("\tValor lido no LDR3:\t");
Serial.print(LDR3);
Serial.print("\tValor lido no LDR4:\t");
Serial.print(LDR4);
Serial.print("\tValor lido no LDR5:\t");
Serial.print(LDR5);
Serial.print("\tValor lido no LDR6:\t");
Serial.println(LDR6);
if(LDR1>=680){
digitalWrite(ledBLUE,LOW); //apaga o LED azul do RGB
digitalWrite(ledGREEN,HIGH); //acende o LED verde do RGB
digitalWrite(ledRED,LOW); //apaga o LED vermelho do RGB
lcd.setCursor(0, 0);//coluna 0 linha 0
lcd.print("Nota Musical: ");//imprimi na coluna zero linha zero
lcd.setCursor(0, 1);//coluna 0 linha 1
lcd.print("Do ");//imprimi na coluna 0 linha 1
tone(9, 261, 1000000000); //no pino 9 emite a frequência de 261 htz por 1000000000 ms
}else if(LDR2>=700){
digitalWrite(ledBLUE, HIGH); //acende o LED azul do RGB
digitalWrite(ledGREEN,LOW); //apaga o LED verde do RGB
digitalWrite(ledRED,LOW); //apaga o LED vermelho do RGB
lcd.setCursor(0, 0);//coluna 0 linha 0
lcd.print("Nota Musical: ");//imprimi na coluna zero linha zero
lcd.setCursor(0, 1);//coluna 0 linha 1
lcd.print("Re ");//imprimi na coluna 0 linha 1
tone(9, 293, 1000000000); //no pino 9 emite a frequência de 293 htz por 1000000000 ms
}
else if(LDR3>=900){
digitalWrite(ledBLUE, LOW); //apaga o LED azul do RGB
digitalWrite(ledGREEN,HIGH); //acende o LED verde do RGB
digitalWrite(ledRED,HIGH); //acende o LED vermelho do RGB
lcd.setCursor(0, 0);//coluna 0 linha 0
lcd.print("Nota Musical: ");//imprimi na coluna zero linha zero
lcd.setCursor(0, 1);//coluna 0 linha 1
lcd.print("Mi ");//imprimi na coluna 0 linha 1
tone(9, 329, 1000000000); //no pino 9 emite a frequência de 329 htz por 1000000000 ms
}
else if(LDR4>=900){
digitalWrite(ledBLUE, LOW); //apaga o LED azul do RGB
digitalWrite(ledGREEN,LOW); //apaga o LED verde do RGB
digitalWrite(ledRED,HIGH); //acende o LED vermelho do RGB
lcd.setCursor(0, 0);//coluna 0 linha 0
lcd.print("Nota Musical: ");//imprimi na coluna zero linha zero
lcd.setCursor(0, 1);//coluna 0 linha 1
lcd.print("Fa ");//imprimi na coluna 0 linha 1
tone(9, 349, 1000000000); //no pino 9 emite a frequência de 349 htz por 1000000000 ms
}
else if(LDR5>=900){
digitalWrite(ledBLUE, HIGH); //acende o LED azul do RGB
digitalWrite(ledGREEN,HIGH); //acende o LED verde do RGB
digitalWrite(ledRED,HIGH); //acende o LED vermelho do RGB
lcd.setCursor(0, 0);//coluna 0 linha 0
lcd.print("Nota Musical: ");//imprimi na coluna zero linha zero
lcd.setCursor(0, 1);//coluna 0 linha 1
lcd.print("Sol ");//imprimi na coluna 0 linha 1
tone(9, 392, 1000000000); //no pino 9 emite a frequência de 392 htz por 1000000000 ms
}
else if(LDR6>=900){
digitalWrite(ledBLUE, HIGH); //acende o LED azul do RGB
digitalWrite(ledGREEN,LOW); //apaga o LED verde do RGB
digitalWrite(ledRED,HIGH); //acende o LED vermelho do RGB
lcd.setCursor(0, 0);//coluna 0 linha 0
lcd.print("Nota Musical: ");//imprimi na coluna zero linha zero
lcd.setCursor(0, 1);//coluna 0 linha 1
lcd.print("La ");//imprimi na coluna 0 linha 1
tone(9, 440, 1000000000); //no pino 9 emite a frequência de 440 htz por 1000000000 ms
}
else{
lcd.setCursor(0, 0);//coluna 0 linha 0
lcd.print("TecladoSensitivo");//imprimi na coluna zero linha zero
lcd.setCursor(0, 1);//coluna 0 linha 1
lcd.print("Toque uma nota! ");//imprimi na coluna 0 linha 1
noTone(9); //desliga o pino 9
digitalWrite(ledBLUE, LOW); //apaga o LED azul do RGB
digitalWrite(ledGREEN,LOW); //apaga o LED verde do RGB
digitalWrite(ledRED,LOW); //apaga o LED vermelho do RGB
}
}
sábado, 9 de junho de 2012
Bom, meus caros leitores, a ideia para o projeto final era colocar um expansor de portas analógicas para que possamos ter mais teclas. Não conseguimos programar o expansor, portanto o projeto final terá teclas de Dó a Lá e aí repetirá de novo o Dó e o Ré, já que o modelo de piano comprado possui 8 teclas. O projeto final agora também possui uma bateria de 9v, portanto não precisará mais do computador para funcionar. Os cabos que antigamente ficavam expostos, juntamente com o LED, LDRs, Arduino, protoboard e resistores, agora ficam escondidos. Os únicos elementos que ficam expostos agora são: as pontas dos LDRs para que a luz possa incidir sobre eles, o LED (agora com luz mais forte por causa da bateria), o visor do display de LCD, e a o plug jack macho para que possa ser ligado ou em caixa de som ou em fones de ouvido. Ai vai algumas imagens do projeto final pronto (aberto para que possam ver o mapeamento dos cabos, resistores e etc.
Obs: Vocês também podem ver que não há mais um potenciômetro, pois não cabia dentro do modelo de piano e não havia diferença em por um potenciômetro ou um resistor, já que o potenciômetro serve para regular a nitidez das letras do display de LCD e para que possamos ver nitidamente elas o potenciômetro tinha que estar em sua máxima resistência (de 10K) portanto, trocamos por um resistor de 1K, que já fazia com que as letras ficassem nítidas o suficiente.
Obs: Vocês também podem ver que não há mais um potenciômetro, pois não cabia dentro do modelo de piano e não havia diferença em por um potenciômetro ou um resistor, já que o potenciômetro serve para regular a nitidez das letras do display de LCD e para que possamos ver nitidamente elas o potenciômetro tinha que estar em sua máxima resistência (de 10K) portanto, trocamos por um resistor de 1K, que já fazia com que as letras ficassem nítidas o suficiente.
Em construção.....
Em construção.... Olha o pouquinho de cabos!!
Em construção (LDRs ainda não haviam sido ligados!)
Pronto!
Observem o tanto de fios!!
LDRs soldados e LED também!
domingo, 3 de junho de 2012
Um vídeo do nosso projeto intermediário.
No projeto final os cabos, o arduino e a protoboard ficaram escondidos dentro do tecladinho de plástico ou madeira, somente o visor da tela de LCD ficará a mostra, a luz do LED RGB ficará mais aparente e os LDRs ficaram a mostra também nas teclas do tecladinho.
Um pouco antes de nossa apresentação intermediária do projeto, conseguimos tirar os ruídos das notas tirando os "noTone" das condições e deixando somente na última condição. Que era a causa das "paradinhas" no meio do som das notas. Para o projeto final, estamos pensando em fazer um tecladinho de plástico ou madeira com poucas notas e mais LEDs RGBs para que estes iluminem mais. Com expansores de portas vamos conseguir mais portas analógicas para o resto dos LDRs que serão necessários para que possamos colocar mais notas no teclado, já que o arduíno só possui 6. Para isso vamos pesquisar os preços, como programá-los e como devemos colocar no circuito já que é algo que não aprendemos em sala de aula. O cronograma vai ficar mais ou menos assim::
Pesquisa da sequência de notas musicais, frequências e número de teclas de um teclado pequeno;
Cálculo de materiais e preços que serão necessários para a expansão do projeto;
Pesquisa e modo de implementação dos expansores;
Refinamento da sensibilidade dos LDRs;
Assinar:
Postagens (Atom)