[PD-cvs] externals/hardware/arduino/Pd_firmware Pd_firmware.pde, 1.12, 1.13
Hans-Christoph Steiner
eighthave at users.sourceforge.net
Fri Aug 25 08:18:21 CEST 2006
Update of /cvsroot/pure-data/externals/hardware/arduino/Pd_firmware
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14592/Pd_firmware
Modified Files:
Pd_firmware.pde
Log Message:
got digital inputs working, but needed to make some changes on the order of data coming in, including the analog data
Index: Pd_firmware.pde
===================================================================
RCS file: /cvsroot/pure-data/externals/hardware/arduino/Pd_firmware/Pd_firmware.pde,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -d -r1.12 -r1.13
*** Pd_firmware.pde 24 Aug 2006 14:48:21 -0000 1.12
--- Pd_firmware.pde 25 Aug 2006 06:18:18 -0000 1.13
***************
*** 121,139 ****
/* Arduino->Computer byte cycle
* ----------------------
! * 0 start of cycle marker (255/11111111)
! * 1 digital read from Arduino // 0-6 bitmask
! * 2 digital read from Arduino // 7-13 bitmask
! * 3 analog input pin 0 from Arduino // byte 0
! * 4 analog input pin 1 from Arduino // byte 1
! * 5 analog input pin 2 from Arduino // byte 2
! * 6 analog input pin 3 from Arduino // byte 3
! * 7 analog input pin 4 from Arduino // byte 4
! * 8 analog input pin 5 from Arduino // byte 5
! * 9 analog input pin 6 from Arduino // byte 6
! * 10 analog input pin 7 from Arduino // byte 10
! * 11 analog input pin 8 from Arduino // byte 11
! * 12 analog input pin 9 from Arduino // byte 12
! * 13 analog input pin 10 from Arduino // byte 13
! * 14 analog input pin 11 from Arduino // byte 14
*/
--- 121,139 ----
/* Arduino->Computer byte cycle
* ----------------------
! * 0 start of cycle marker (255/11111111)
! * 1 digital read from Arduino // 0-6 bitmask
! * 2 digital read from Arduino // 7-13 bitmask
! * 3 low byte from analog input pin 0
! * 4 high byte from analog input pin 0
! * 5 low byte from analog input pin 1
! * 6 high byte from analog input pin 1
! * 7 low byte from analog input pin 2
! * 8 high byte from analog input pin 2
! * 9 low byte from analog input pin 3
! * 10 high byte from analog input pin 3
! * 11 low byte from analog input pin 4
! * 12 high byte from analog input pin 4
! * 13 low byte from analog input pin 5
! * 14 high byte from analog input pin 5
*/
***************
*** 179,189 ****
byte i;
byte digitalPin;
! byte digitalPinBit;
! byte transmitByte;
byte digitalData;
for(i=0;i<7;++i) {
digitalPin = i+startPin;
! digitalPinBit = OUTPUT << digitalPin;
// only read the pin if its set to input
if(digitalPinStatus & digitalPinBit) {
--- 179,189 ----
byte i;
byte digitalPin;
! // byte digitalPinBit;
! byte transmitByte = 0;
byte digitalData;
for(i=0;i<7;++i) {
digitalPin = i+startPin;
! /* digitalPinBit = OUTPUT << digitalPin;
// only read the pin if its set to input
if(digitalPinStatus & digitalPinBit) {
***************
*** 192,202 ****
else if( (digitalPin >= 9) && (pwmStatus & (1 << digitalPin)) ) {
digitalData = 0; // pin set to PWM, don't read
}
- else {
- digitalData = digitalRead(digitalPin);
- }
- /* the next line probably needs to be re-thought (i.e. it might not work...) since my
- first attempt was miserably wrong. <hans at at.or.at> */
- transmitByte = transmitByte + ((2^i)*digitalData);
}
printByte(transmitByte);
--- 192,200 ----
else if( (digitalPin >= 9) && (pwmStatus & (1 << digitalPin)) ) {
digitalData = 0; // pin set to PWM, don't read
+ }*/
+ if( !(digitalPinStatus & (1 << digitalPin)) ) {
+ digitalData = (byte) digitalRead(digitalPin);
+ transmitByte = transmitByte + ((1 << i) * digitalData);
}
}
printByte(transmitByte);
***************
*** 413,417 ****
byte i;
! beginSerial(9600);
for(i=0; i<TOTAL_DIGITAL_PINS; ++i) {
setPinMode(i,INPUT);
--- 411,415 ----
byte i;
! beginSerial(19200);
for(i=0; i<TOTAL_DIGITAL_PINS; ++i) {
setPinMode(i,INPUT);
***************
*** 443,448 ****
// these two bytes get converted back into the whole number in Pd
// the higher bits should be zeroed so that the 8th bit doesn't get set
- printByte(analogData >> 7); // bitshift the big stuff into the output byte
printByte(analogData % 128); // mod by 32 for the small byte
checkForInput();
}
--- 441,446 ----
// these two bytes get converted back into the whole number in Pd
// the higher bits should be zeroed so that the 8th bit doesn't get set
printByte(analogData % 128); // mod by 32 for the small byte
+ printByte(analogData >> 7); // bitshift the big stuff into the output byte
checkForInput();
}
More information about the Pd-cvs
mailing list