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
  }
}
Seguem aqui a foto do nosso projeto fechado e um vídeo do funcionamento.





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.

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.




Segue aqui fotos do nosso projeto com a tela de LCD ;D
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;