DSerial Edge is something very interesting. It can make the nds explore the outer world!
documentation is found here: http://www.natrium42.com/wiki/DSerial_Edgewe did a first project linking switches made in or from books with an app on the nds
the only problem is at the moment:
dserial libs and maxmod sound libs interfere somewhere, so working with dserial limits the nds possibilities seriously!
On a small testapp, we connected the ports of IO1 to HIGH. This works fine, when a low is presented a low is seen:
dsePinWrite(0, 6, true);
dsePinWrite(0, 7, true);
dsePinWrite(1, 1, true);
dsePinWrite(1, 0, true);
dsePinWrite(1, 2, true);
dsePinWrite(1, 4, true);
dsePinWrite(1, 5, true);
dsePinWrite(1, 6, true);
dsePinWrite(1, 7, true);
dsePinMode(0, 6, INPUT);
dsePinMode(0, 7, INPUT);
dsePinMode(1, 1, INPUT);
dsePinMode(1, 0, INPUT);
dsePinMode(1, 2, INPUT);
dsePinMode(1, 3, INPUT);
dsePinMode(1, 4, INPUT);
dsePinMode(1, 5, INPUT);
dsePinMode(1, 6, INPUT);
dsePinMode(1, 7, INPUT);
When playing sounds, the ports are steered LOW by the sounds...using the same ARM7 ????
this goes very fast, iif this is played in the loop:
if( dsePinRead(0, 6)) iprintf("\x1b[6;0H 06=HIGH"); else iprintf("\x1b[6;0H 06=LOW");
if( dsePinRead(0, 7)) iprintf("\x1b[7;0H 07=HIGH"); else iprintf("\x1b[7;0H 07=LOW");
if( dsePinRead(1, 0)) iprintf("\x1b[9;0H 10=HIGH"); else iprintf("\x1b[9;0H 10=LOW");
if( dsePinRead(1, 1)) iprintf("\x1b[10;0H 11=HIGH"); else iprintf("\x1b[10;0H 11=LOW");
if( dsePinRead(1, 2)) iprintf("\x1b[11;0H 12=HIGH"); else iprintf("\x1b[11;0H 12=LOW");
if( dsePinRead(1, 3)) iprintf("\x1b[12;0H 13=HIGH"); else iprintf("\x1b[12;0H 13=LOW");
if( dsePinRead(1, 4)) iprintf("\x1b[13;0H 14=HIGH"); else iprintf("\x1b[13;0H 14=LOW");
if( dsePinRead(1, 5)) iprintf("\x1b[14;0H 15=HIGH"); else iprintf("\x1b[14;0H 15=LOW");
if( dsePinRead(1, 6)) iprintf("\x1b[16;0H 16=HIGH"); else iprintf("\x1b[16;0H 16=LOW");
if( dsePinRead(1, 7)) iprintf("\x1b[17;0H 17=HIGH"); else iprintf("\x1b[17;0H 17=LOW");
then you barely see it, but placing this:
if( !dsePinRead(0, 6)) iprintf("\x1b[6;0H 06=LOW");
if( !dsePinRead(0, 7)) iprintf("\x1b[7;0H 07=LOW");
if( !dsePinRead(1, 0)) iprintf("\x1b[9;0H 10=LOW");
if( !dsePinRead(1, 1)) iprintf("\x1b[10;0H 11=LOW");
if( !dsePinRead(1, 2)) iprintf("\x1b[11;0H 12=LOW");
if( !dsePinRead(1, 3)) iprintf("\x1b[12;0H 13=LOW");
if( !dsePinRead(1, 4)) iprintf("\x1b[13;0H 14=LOW");
if( !dsePinRead(1, 5)) iprintf("\x1b[14;0H 15=LOW");
if( !dsePinRead(1, 6)) iprintf("\x1b[16;0H 16=LOW");
if( !dsePinRead(1, 7)) iprintf("\x1b[17;0H 17=LOW");
all go low immediately. This speed can make a work around, only triggering on longer intervals of LOW?
anyone a more fundamental solution?