aboutsummaryrefslogtreecommitdiff
path: root/Pd_firmware
diff options
context:
space:
mode:
Diffstat (limited to 'Pd_firmware')
-rw-r--r--Pd_firmware/Pd_firmware.pde50
1 files changed, 24 insertions, 26 deletions
diff --git a/Pd_firmware/Pd_firmware.pde b/Pd_firmware/Pd_firmware.pde
index ed4b1e0..c17d218 100644
--- a/Pd_firmware/Pd_firmware.pde
+++ b/Pd_firmware/Pd_firmware.pde
@@ -120,21 +120,21 @@
/* 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
+ * 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
*/
#define TOTAL_DIGITAL_PINS 14
@@ -178,26 +178,24 @@ int analogData;
void transmitDigitalInput(byte startPin) {
byte i;
byte digitalPin;
- byte digitalPinBit;
- byte transmitByte;
+// byte digitalPinBit;
+ byte transmitByte = 0;
byte digitalData;
for(i=0;i<7;++i) {
digitalPin = i+startPin;
- digitalPinBit = OUTPUT << digitalPin;
+/* digitalPinBit = OUTPUT << digitalPin;
// only read the pin if its set to input
if(digitalPinStatus & digitalPinBit) {
digitalData = 0; // pin set to OUTPUT, don't read
}
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);
}
- 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.or.at> */
- transmitByte = transmitByte + ((2^i)*digitalData);
}
printByte(transmitByte);
}
@@ -412,7 +410,7 @@ void processInput(byte inputData) {
void setup() {
byte i;
- beginSerial(9600);
+ beginSerial(19200);
for(i=0; i<TOTAL_DIGITAL_PINS; ++i) {
setPinMode(i,INPUT);
}
@@ -442,8 +440,8 @@ void loop() {
analogData = analogRead(analogPin);
// 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
+ printByte(analogData >> 7); // bitshift the big stuff into the output byte
checkForInput();
}