Update of /cvsroot/pure-data/externals/hardware/arduino/Pd_firmware In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10338/Pd_firmware
Modified Files: Pd_firmware.pde Log Message: its now possible to turn on and off digital and analog input, so you can stop arduino from sending data alltoger, while still responding; digitalInputs are still not tested
Index: Pd_firmware.pde =================================================================== RCS file: /cvsroot/pure-data/externals/hardware/arduino/Pd_firmware/Pd_firmware.pde,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** Pd_firmware.pde 20 May 2006 16:26:57 -0000 1.6 --- Pd_firmware.pde 21 May 2006 17:37:46 -0000 1.7 *************** *** 25,28 **** --- 25,37 ---- * 231 - next byte sets PWM1 value * 232 - next byte sets PWM2 value + * 238 - disable all digital inputs + * 239 - enable all digital inputs + * 240 - disable all analog inputs + * 241 - enable 1 analog input (0) + * 242 - enable 2 analog inputs (0,1) + * 243 - enable 3 analog inputs (0-2) + * 244 - enable 4 analog inputs (0-3) + * 245 - enable 5 analog inputs (0-4) + * 246 - enable 6 analog inputs (0-5) * * Pd->Arduino byte cycle *************** *** 84,87 **** --- 93,99 ---- int pwmStatus;
+ boolean digitalInputsEnabled = true; + byte analogInputsEnabled = 6; + byte analogPin; int analogData; *************** *** 106,109 **** --- 118,122 ---- } else { + // TODO: get digital in working // digitalData = digitalRead(digitalPin); digitalData = pwmStatus; *************** *** 152,164 **** // the PWM commands (230-232) have a byte of data following the command if (waitForPWMData > 0) { ! printByte(150); ! printByte(inputData); analogWrite(waitForPWMData,inputData); waitForPWMData = 0; } else if(inputData < 128) { ! printByte(151); if(firstInputByte) { ! printByte(160); for(i=0; i<7; ++i) { mask = 1 << i; --- 165,177 ---- // the PWM commands (230-232) have a byte of data following the command if (waitForPWMData > 0) { ! // printByte(150); ! // printByte(inputData); analogWrite(waitForPWMData,inputData); waitForPWMData = 0; } else if(inputData < 128) { ! // printByte(151); if(firstInputByte) { ! // printByte(160); for(i=0; i<7; ++i) { mask = 1 << i; *************** *** 174,178 **** } else { ! printByte(161); // output data for pins 7-13 for(i=7; i<TOTAL_DIGITAL_PINS; ++i) { --- 187,191 ---- } else { ! // printByte(161); // output data for pins 7-13 for(i=7; i<TOTAL_DIGITAL_PINS; ++i) { *************** *** 190,195 **** } else { ! printByte(152); ! printByte(inputData); switch (inputData) { case 200: --- 203,208 ---- } else { ! // printByte(152); ! // printByte(inputData); switch (inputData) { case 200: *************** *** 231,234 **** --- 244,262 ---- setPinMode(waitForPWMData, PWM); break; + case 238: + digitalInputsEnabled = false; + break; + case 239: + digitalInputsEnabled = true; + break; + case 240: + case 241: + case 242: + case 243: + case 244: + case 245: + case 246: + analogInputsEnabled = inputData - 240; + break; case 255: firstInputByte = true; *************** *** 252,276 **** // ------------------------------------------------------------------------- void loop() { ! /* ! * get analog in */ ! for(analogPin=0; analogPin<6; ++analogPin) ! { analogData = analogRead(analogPin); // these two bytes get converted back into the whole number in Pd printByte(analogData >> 7); // bitshift the big stuff into the output byte printByte(analogData % 128); // mod by 32 for the small byte }
! // read all digital pins ! transmitDigitalInput(0); ! transmitDigitalInput(7); ! ! checkForInput(); ! ! /* end with the cycle marker */ ! printByte(255); ! ! // setPinMode(13,OUTPUT); ! // digitalWrite(13,HIGH); } --- 280,311 ---- // ------------------------------------------------------------------------- void loop() { ! checkForInput(); ! ! // read all digital pins, in enabled ! if(digitalInputsEnabled) { ! transmitDigitalInput(0); ! checkForInput(); ! transmitDigitalInput(7); ! checkForInput(); ! } ! else if(analogInputsEnabled) { ! // filler bytes, since the first thing sent is always the digitalInputs ! printByte(0); ! printByte(0); ! } ! ! /* get analog in, for the number enabled */ ! for(analogPin=0; analogPin<analogInputsEnabled; ++analogPin) { analogData = analogRead(analogPin); // these two bytes get converted back into the whole number in Pd printByte(analogData >> 7); // bitshift the big stuff into the output byte printByte(analogData % 128); // mod by 32 for the small byte + checkForInput(); }
! /* end with the cycle marker, if any of the inputs are enabled */ ! if( digitalInputsEnabled || analogInputsEnabled) { ! printByte(255); ! } }