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;
terça-feira, 22 de maio de 2012
Código pronto sem ruídos nas notas:
#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<=550){
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); //no pino 9 emite a frequência de 261 htz
}else if(LDR2<=550){
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); //no pino 9 emite a frequência de 293 htz
}
else if(LDR3<=600){
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); //no pino 9 emite a frequência de 329 htz
}
else if(LDR4<=570){
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); //no pino 9 emite a frequência de 349 htz
}
else if(LDR5<=560){
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); //no pino 9 emite a frequência de 392 htz
}
else if(LDR6<=580){
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); //no pino 9 emite a frequência de 440 htz
}
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
}
}
#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<=550){
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); //no pino 9 emite a frequência de 261 htz
}else if(LDR2<=550){
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); //no pino 9 emite a frequência de 293 htz
}
else if(LDR3<=600){
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); //no pino 9 emite a frequência de 329 htz
}
else if(LDR4<=570){
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); //no pino 9 emite a frequência de 349 htz
}
else if(LDR5<=560){
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); //no pino 9 emite a frequência de 392 htz
}
else if(LDR6<=580){
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); //no pino 9 emite a frequência de 440 htz
}
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
}
}
segunda-feira, 21 de maio de 2012
Após falarmos com a professora Marisa descobrimos que nosso circuito e código está correto, para que o ruído pare precisa-se por uma bateria. Hoje pesquisamos na internet sobre a tela de LCD e conseguimos programá-la do jeito que queríamos. O circuito(somente da tela de LCD com o potenciômetro ficou bem parecido com este:
Mudando os pinos 12 e 11 pelos pinos 8 e 13. E ligando o GND e o 5V com o resto do circuito. No arduino ficou da seguinte maneira (com as mesmas diferenças):
Imagens pegas no site: http://arduino.cc/en/Tutorial/LiquidCrystal.
Enquanto não é tocada nenhuma nota a placa de LCD exibe a seguinte mensagem: TecladoSensitivo Toque uma nota!
Quando tocamos uma nota ela exibi: Nota musical: (Nome da nota).
O código modificado ficou da seguinte maneira:
#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<=300){
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<=300){
noTone(9); //desliga o pino 9
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<=400){
noTone(9); //desliga o pino 9
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<=300){
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,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<=230){
noTone(9); //desliga o pino 9
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<=350){
noTone(9); //desliga o pino 9
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
}
}
Na próxima postagem postaremos o vídeo e a apresentação que ocorrerá amanhã!!
domingo, 20 de maio de 2012
Após a apresentação da ideia do projeto para as professoras Marisa de física e Lisbete de Desenvolvimento de Algoritmos, conseguimos, com as ideias delas também, aperfeiçoar nosso projeto.
Substituímos os 3 LEDs por um LED RGB (que muda de cor). Não será mais só 3 notas musicais, agora serão 6, que é o número de portas analógicas que o Arduíno possui. Com isso haverá também 6 LDRs.
Para se ouvir as notas musicais usaremos de um plug Jack fêmea e de uma caixinha de som. Ainda está em mente pôr uma tela de LCD, para que quando uma nota tocasse, apareceria o nome da nota tocada.
Apresentação Inicial:
Código do circuito com definições:
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
void setup() {
Serial.begin(9600);
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<=300){
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
tone(9, 261, 1000000000); //no pino 9 emite a frequência de 261 htz por 1000000000 ms
}else if(LDR2<=300){
noTone(9); //desliga o pino 9
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
tone(9, 293, 1000000000); //no pino 9 emite a frequência de 293 htz por 1000000000 ms
}
else if(LDR3<=400){
noTone(9); //desliga o pino 9
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
tone(9, 329, 1000000000); //no pino 9 emite a frequência de 329 htz por 1000000000 ms
}
else if(LDR4<=300){
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,HIGH); //acende o LED vermelho do RGB
tone(9, 349, 1000000000); //no pino 9 emite a frequência de 349 htz por 1000000000 ms
}
else if(LDR5<=230){
noTone(9); //desliga o pino 9
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
tone(9, 392, 1000000000); //no pino 9 emite a frequência de 392 htz por 1000000000 ms
}
else if(LDR6<=350){
noTone(9); //desliga o pino 9
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
tone(9, 440, 1000000000); //no pino 9 emite a frequência de 440 htz por 1000000000 ms
}
else{
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
}
}
O circuito funcionando:
Como vocês podem ouvir, o som das notas musicais ré, mi, fá,sol e lá estão com um ruído. Após um aperfeiçoamento nenhuma delas irá ter ruído, assim como a nota musical dó.
Os valores das resistências dos 6 LDRs nas condições pode variar de acordo com a luz do ambiente.
terça-feira, 13 de março de 2012
Teclado Sensitivo
O nosso projeto tem como objetivo aplicar os conhecimentos de física, em geral relacionados ao arduíno, adquiridos em sala de aula para ajudar a sociedade.
Iremos criar uma espécie de piano, capaz de emitir os sons das notas musicais sem que seja necessario tocar no teclado. Para que o projeto seja realizado, usaremos de LDRs, resistores e LEDs coloridos.
Nosso alvo são as pessoas com deficiência auditiva ou visual. O deficiente visual não precisará tocar o teclado para ouvir os sons das notas, ele usará somente a audição e o tato para ativar os LDRs para emitirem os sons. Já o deficiente auditivo, a cada nota musical tocada, um LED diferente será ligada, com isso ele terá que usar só a visão para tocar o piano.
O projeto será realizado pela Alessandra Angelo, pelo Douglas Hoshino e pela Mariana Trevisan. Todos os citados são alunos do 3º semestre do curso de Ciência da Computação da PUC-SP.
Cronograma
14/04 - Pesquisar preços e comprar os materiais do projeto
19/04 - Execução do código
28/04 - Conclusão do projeto
Iremos criar uma espécie de piano, capaz de emitir os sons das notas musicais sem que seja necessario tocar no teclado. Para que o projeto seja realizado, usaremos de LDRs, resistores e LEDs coloridos.
Nosso alvo são as pessoas com deficiência auditiva ou visual. O deficiente visual não precisará tocar o teclado para ouvir os sons das notas, ele usará somente a audição e o tato para ativar os LDRs para emitirem os sons. Já o deficiente auditivo, a cada nota musical tocada, um LED diferente será ligada, com isso ele terá que usar só a visão para tocar o piano.
O projeto será realizado pela Alessandra Angelo, pelo Douglas Hoshino e pela Mariana Trevisan. Todos os citados são alunos do 3º semestre do curso de Ciência da Computação da PUC-SP.
Cronograma
14/04 - Pesquisar preços e comprar os materiais do projeto
19/04 - Execução do código
28/04 - Conclusão do projeto
terça-feira, 6 de março de 2012
Acender Led condicional
Com o cicuito configurado com 3 LEDs, um LDR e um resistor; fizemos um programa que manipulava a sequência de LEDs acendendo conforme a incidência de luz no LDR.
Com o controle da incidência de luz no LDR, acendíamos os LEDs na seguinte sequência:
- Maior incidência de luz: LED azul
- Incidência intermediária: LED amarelo
- Menor incidência de luz: LED vermelho
int LDR;
int ledPin = 13;
int ledPin2 = 12;
int ledPin3 = 11;
void setup(){
pinMode(A0, INPUT);
pinMode(ledPin, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
Serial.begin(9600);
}
void loop(){
Serial.print("Valor lido no LDR:\t");
Serial.println(LDR);
delay(1);
LDR = analogRead(A0); //porta usada para leitura da resistência do LDR
//condições para acender e apagar os leds
if (LDR > 300) {
digitalWrite(ledPin, HIGH);
}
else{
digitalWrite(ledPin, LOW);}
if (LDR > 350 ) {
digitalWrite(ledPin2, HIGH);
}
else{
digitalWrite(ledPin2, LOW);}
if(LDR > 400 ){
digitalWrite(ledPin3, HIGH);
}
else{
digitalWrite(ledPin3, LOW);}
}
Assinar:
Postagens (Atom)