Materiales:
- 1 NES pad
- 1 Arduino UNO
- Cables para conexiones
El proyecto consiste en utilizar el NES pad para controlar el reproductor de música, poder cambiar la canción, subir el volumen, abrir y cerrar el reproductor etc.
Para ello se utilizo un script en python que mediante el modulo serial nos estuviese comunicando con el arduino y este a su vez nos mandara la información de los botones que están presionando en el NES pad.
- flechas ( Arriba, Abajo, Izquierda, Derecha )
- boton Select
- boton Start
- boton A
- boton B
/*Variables a usar*/ | |
int latch = 2; // set the latch pin | |
int clock = 3; // set the clock pin | |
int datin = 4;// set the data in pin | |
byte datosDelControl = 0; | |
void setup() { | |
Serial.begin(9600); | |
pinMode(latch,OUTPUT); | |
pinMode(clock,OUTPUT); | |
pinMode(datin,INPUT); | |
digitalWrite(latch,HIGH); | |
digitalWrite(clock,HIGH); | |
} | |
/* lectura del control */ | |
void lecturaNespad() { | |
datosDelControl = 0; | |
digitalWrite(latch,LOW); | |
digitalWrite(clock,LOW); | |
digitalWrite(latch,HIGH); | |
delayMicroseconds(2); | |
digitalWrite(latch,LOW); | |
datosDelControl = digitalRead(datin); | |
for (int i = 1; i <= 7; i ++) { | |
digitalWrite(clock,HIGH); | |
delayMicroseconds(2); | |
datosDelControl = datosDelControl << 1; | |
datosDelControl = datosDelControl + digitalRead(datin) ; | |
delayMicroseconds(4); | |
digitalWrite(clock,LOW); | |
} | |
} | |
/* ciclo */ | |
void loop() { | |
lecturaNespad(); | |
if (controller_data==B11110111){ | |
Serial.print("U"); //UP | |
} | |
if (controller_data==B11111011){ | |
Serial.print("D");//DOWN | |
} | |
if (controller_data==B11111101){ | |
Serial.print("L");//LEFT | |
} | |
if (controller_data==B11111110){ | |
Serial.print("R");//RIGHT | |
} | |
if (controller_data==B01111111){ | |
Serial.print("A");//A | |
} | |
if (controller_data==B10111111){ | |
Serial.print("B");//B | |
} | |
if (controller_data==B11101111){ | |
Serial.print("S");//START | |
} | |
if (controller_data==B11011111){ | |
Serial.print("C");//SELECT | |
} | |
if (controller_data==B11111111){ | |
Serial.print("N");//Nada... | |
} | |
delay(150); | |
} |
import serial | |
import os | |
def U(): | |
print 'boton Up volumen++' | |
os.system("amixer sset Master playback 5%+") | |
def D(): | |
print 'boton Down volmen--' | |
os.system("amixer sset Master playback 5%-") | |
def L(): | |
print 'boton L restart' | |
os.system("banshee --restart-or-previous") | |
def R(): | |
print 'boton R next song' | |
os.system("banshee --next") | |
def A(): | |
print 'boton A toogle playing' | |
os.system("banshee --toggle-playing") | |
def S(): | |
print 'boton Start inicia banshee' | |
os.system("banshee &") | |
def C(): | |
print 'Boton select termina banshee' | |
os.system("killall banshee") | |
def B(): | |
print 'boton B stop' | |
os.system("banshee --stop") | |
def N(): | |
print 'Nada' | |
def run(program, *args): | |
pid = os.fork() | |
if not pid: | |
os.execvp(program, (program,) + args) | |
return os.wait()[0] | |
s = serial.Serial("/dev/ttyACM"+raw_input("En que puerto serial esta el arduino: "),9600) | |
while(1): | |
case = { | |
'U' : U, | |
'D' : D, | |
'R' : R, | |
'L' : L, | |
'S' : S, | |
'A' : A, | |
'B' : B, | |
'N' : N, | |
'C' : C, | |
} | |
case[s.read()]() | |
- Flecha arriba : Aumentar volumen
- Flecha Abajo : Bajar volumen
- Flecha Izquierda: Devolver una cancion o reiniciarla
- Flecha Derecha: Siguiente cancion
- Start: iniciar el reproductor
- Select: cerrar el reproductor
- Boton B: detener la reproduccion actual
- Boton A: cambiar entre pausado y reproducion.