DIY Xbox 360 controller mottagaren med en LinkIt (2 / 3 steg)
Steg 2: LinkIt en del och koden
Koden på Timinator01's Instructable bör arbeta för en UNO (jag har verkligen ingen aning om varför det inte fungerade för mig). Men eftersom vi använder en LinkIt ONE, kommer vi att ändra den. Det enda problemet är insomningsfunktionen med AVR-biblioteket. Eftersom LInkIt en saknar AVR biblioteket, vi kan bara ta bort insomningsfunktionen i koden och det kommer att fungera perfekt. Nedan är den modifierade koden. Kopiera det till en tom skiss och överföra det till din LinkIt ONE.
/ * 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) * /
#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 setup() {
Serial.BEGIN(9600);
pinMode (sync_pin, ingång);
digitalWrite (sync_pin, hög);
pinMode (data_pin, ingång);
pinMode (clock_pin, ingång);
Delay(2000);
initLEDs();
}
void loop() {
Serial.println("syncing.");
sendData(sync_cmd);
Delay(10000);
}
Tråd det upp så nedan:
- Stift 5 på ROL (Sync pin): stift 2 på LinkIt ONE
- Stift 6 på ROL (Data stift): stift 3 på LinkIt ONE
- Stift 7 på ROL (klocka pin): stift 4 på LinkIt ONE
En gång gjort, gå vidare till nästa steg.