DIY Xbox trådlös handkontroll adapter för Pc (2 / 4 steg)
Steg 2: kod
/ * Arduino kod att kommunicera med xbox 360 RF modul.Original arbete genom (yaywoop) / ytterligare idéer från Alexander Martinez - modifierat av dilandou (www.dilandou.com, www.diru.org/wordpress)
Först skickar LED initiering kod följt av LED animation startkoden, sedan sover tills en knapptryckning för sync kommando.
RF modul måste drivas med 3.3V, två dioder i serie med USB 5v kommer att göra. Anslut USB-sladdar till en värddator, och data och seriella kablarna till Arduino.
naturligtvis se till att ha en gemensam grund * /
#include < avr/sleep.h >
#define sync_pin 2 //power knappen repurposed för sync-knappen (stift 5 på modulen)
#define data_pin 3 //data linje (stift 6 på modulen)
#define clock_pin 4 //clock linje (stift 7 på modul)
int led_cmd [10] = {0,0,1,0,0,0,0,1,0,0}. Aktiverar/initialises lysdioder, lämnar stadens LED lyser.
int anim_cmd [10] = {0,0,1,0,0,0,0,1,0,1}. Gör startup animation på ring of light.
int sync_cmd [10] = {0,0,0,0,0,0,0,1,0,0}. Initierar synkroniseringsprocessen.
flyktiga boolean sync_enable = 0;
void sendData (int cmd_do[]) {
pinMode (data_pin, produktionen);
digitalWrite (data_pin, låg); börja skicka data.
int prev = 1;
för (int jag = 0; jag < 10; i ++) {
medan (prev == digitalRead(clock_pin)) {} //detects förändring i klockan
Prev = digitalRead(clock_pin);
bör efter nedåtgående kanten av klocka, skicka så lite data nu
digitalWrite (data_pin, cmd_do[i]);
medan (prev == digitalRead(clock_pin)) {} //detects uppåt kanten av klocka
Prev = digitalRead(clock_pin);
}
digitalWrite (data_pin, hög);
pinMode (data_pin, ingång);
}
void initLEDs() {
sendData(led_cmd);
Delay(50);
sendData(anim_cmd);
Delay(50);
}
void wakeUp() {
sync_enable = 1;
}
void sleepNow() {
set_sleep_mode(SLEEP_MODE_PWR_DOWN); Ställ in viloläge
sleep_enable(); Aktivera sova lite
attachInterrupt (0, wakeUp, låg);
sleep_mode();
sleep_disable(); Inaktivera sova lite
detachInterrupt(0); inaktiverar avbryta 0 på pin 2
}
void setup() {
Serial.BEGIN(9600);
pinMode (sync_pin, ingång);
digitalWrite(sync_pin,HIGH);
pinMode (data_pin, ingång);
pinMode (clock_pin, ingång);
Delay(2000);
initLEDs();
sendData(sync_cmd);
}
void loop() {
Serial.println("Sleeping.");
sleepNow();
Delay(200);
IF(sync_enable==1) {
Serial.println("syncing.");
sendData(sync_cmd);
sync_enable = 0;
}
}
eller du kan få det från här http://diru.org/wordpress/hacking/xbox-360-rf-module-arduino/
du kommer att behöva programmera din arduino med denna kod
Jag kom inte med den här koden all kredit för denna kod går till dilandou och Alex Martinez