Per Aurora Ripoll i Jose Ángel Mohedano
OBJECTIU: Reproduïr les diferents notes musicals amb el teclat i mostrar els resultats per la pantalla LiquidCrystal mitjançant la connexió de dues XBees.
Material necessari:
Part I: Xat simple
OBJECTIU: Reproduïr les diferents notes musicals amb el teclat i mostrar els resultats per la pantalla LiquidCrystal mitjançant la connexió de dues XBees.
Material necessari:
- Placa Arduino UNO
- Placa Protoboard
- 2 XBees Explorer
- 2 Digi XBee
- 2 Digi XBee
- Cables connectors
Part I: Xat simple
Esteblim la connectivitat inal·làmbrica entre un XBee Coordinador i un XBee Router. Per fer això caldrà instal·lar:
- el Software X-CTU: http://goo.gl/uAmiYa
- els drivers per l'FTDI: http://goo.gl/HE6LJX
Una vegada muntat cada Digi XBee amb un XBee Explorer es connecten a ordinadors diferents, obrim el software i iniciem la configuració. S'exploren el ports de connexió per desobrir si hi ha moduls ràdio connectats a l'ordinador. Un cop identificats establim els rols de connexió:
Primerament comencem amb el coordinador:
- Cliquem damunt 'update firmware' on seleccionem 'XB24-ZB' al bloc de Product Family, 'XBee Coordinator AT' al bloc Function set i '22A7' al bloc de Firmware version.
- Un cop configurat el coordinador, anem a l'alte ordenador on tenim conectada l'altra DigiXBee i seguim el mateix procediment pero seleccionant 'XBee Router AT' al bloc de Function set
Una vegada arribat a aquest punt ja podem iniciar la conversa entre els dos, cliquem a tots dos Programes l'icona de enllaç i procedim a fer un test d'enviament i recepció de dades.
Un cop aconseguit això, decidim probar si podem interactuar de forma totalment remota amb la nostra placa Arduino; realitzant el següent experiment.
Part II : Escala musical remota
Mantenim els rols de configuració entre els dos XBee.
1) Muntatge del circuit
Material necessari(adicional):
- Resistència de 150 kOhms
1) Muntatge del circuit
Material necessari(adicional):
- Resistència de 150 kOhms
- 1 LED
- Buzzer
- Pantalla LiquidCrystal - drivers
- mòdul I2C
Per poder utilitzar la pantalla LiquidCrystal hem descarregat els drivers actualitzats al directori per defecte `Arduino/ Libraries/LiquidCrystal` i darrerament, des del mateix entorn d'Arduino: > Sketch > ImportarLibrería > LiquidCrystal.
La conexió del cablejat s'indica a continuació.
2) Disseny del codi
//S’inclouent les llibreries necessàries
#include <FastIO.h>
#include <I2CIO.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
#include <LiquidCrystal_SR.h>
#include <LiquidCrystal_SR2W.h>
#include <LiquidCrystal_SR3W.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Definim l’adreça LCD I2C
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4,
5, 6, 7, 3, POSITIVE);
int BELL = 5; // PIN 5
int duracion= 500; // Duració del to (0.5 seg)
void setup() {
pinMode(BELL, OUTPUT);
Serial.begin(9600);
lcd.begin(16,2);
}
void loop() {
// Definim les característiques específiques per cada nota
if (Serial.available() >0) {
char valueSerial = Serial.read();
// DO
if(valueSerial =='<'){
// Correspon a la tecla ‘<’
analogWrite(BELL,150);
delay(10);
analogWrite(BELL, 0);
tone(BELL,
654.06, duracion); // Freq.DO 10: 654.06 Hz
lcd.clear();
lcd.setCursor(7,0); // Posició del caràcter a la
pantalla
lcd.print("DO"); // ‘DO’es mostra per pantalla
}
//RE
else if(valueSerial =='Z'){ // Correspon a la tecla ‘Z’
analogWrite(BELL,150);
delay(10);
analogWrite(BELL, 0);
tone(BELL,
734.16, duracion); // Freq.RE 10: 734.16 Hz
lcd.clear();
lcd.setCursor(7,0); // Posició del caràcter a la
pantalla
lcd.print("RE"); // ‘RE’es mostra per pantalla
}
//MI
else if(valueSerial
=='X'){ // Correspon a la tecla ‘X’
analogWrite(BELL,30);
delay(10);
analogWrite(BELL, 0);
tone(BELL, 824.07, duracion); // Freq.MI 10: 824.07 Hz
lcd.clear();
lcd.setCursor(7,0); // Posició del caràcter a la
pantalla
lcd.print("MI"); // ‘MI’es mostra per pantalla
}
//FA
else if(valueSerial =='C'){ // Correspon a la tecla ‘C’
analogWrite(BELL,30);
delay(10);
analogWrite(BELL, 0);
tone(BELL, 873.07, duracion); // Freq.FA 10: 873.07 Hz
lcd.clear();
lcd.setCursor(7,0); // Posició del caràcter a la
pantalla
lcd.print("FA"); // ‘FA’es mostra per pantalla
}
//SOL
else if(valueSerial
=='V'){ // Correspon a la tecla ‘V’
analogWrite(BELL,30);
delay(10);
analogWrite(BELL, 0);
tone(BELL,
979.99, duracion); // Freq.SOL 10: 979.99 Hz
lcd.clear();
lcd.setCursor(7,0); // Posició del caràcter a la
pantalla
lcd.print("SOL"); // ‘SOL’es mostra per
pantalla
}
//LA
else if(valueSerial
=='B'){ // Correspon a la tecla ‘B’
analogWrite(BELL,30);
delay(10);
analogWrite(BELL, 0);
tone(BELL, 1100, duracion); // Freq.LA 10: 1100 Hz
lcd.clear();
lcd.setCursor(7,0); // Posició del caràcter a la
pantalla
lcd.print("LA"); // ‘LA’es mostra per pantalla
}
//SI
else if(valueSerial =='N'){ // Correspon a la tecla ‘N’
analogWrite(BELL,30);
delay(10);
analogWrite(BELL, 0);
tone(BELL, 1230, duracion); // Freq.SI 10: 1230 Hz
lcd.clear();
lcd.setCursor(7,0); // Posició del caràcter a la
pantalla
lcd.print("SI"); // ‘SI’es mostra per pantalla
}
//DO’
else if(valueSerial =='M'){ // Correspon a la tecla ‘M’
analogWrite(BELL,30);
delay(10);
analogWrite(BELL, 0);
tone(BELL, 1300, duracion); // Freq.SI 10: 1300 Hz
lcd.clear();
lcd.setCursor(7,0); // Posició del caràcter a la
pantalla
lcd.print("DO'"); // ‘DO’’es mostra per
pantalla
}
}
}
3) Demostració