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
  }
}

segunda-feira, 21 de maio de 2012

Alguns sites que usamos para pesquisa que foram de grande ajuda para a programação e montagem do circuito:

TELA DE LCD
http://arduino.cc/en/Tutorial/LiquidCrystal

LED RGB
http://www.arduinopt.com/arduino/aula-6-rgb-led/


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

Circuito do projeto:

Com componentes e seus devidos pinos.

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.