Week 9
Project 3 - Marionette to Jitter code


DEFINE ADC_BITS 10
DEFINE ADC_CLOCK 3
DEFINE ADC_SAMPLEuS 50

TRISA = %11111111
ADCON1 = %10000010

txPin var portc.6
blinkyled var portb.6

SWright var portd.0
SWfront var portd.1
SWleft var portc.1
SWmiddle var portc.2
SWback var portc.3

minAccelerRangeY con 460
maxAccelerRangeY con 580
minAccelerRangeX con 490
maxAccelerRangeX con 620

'minAccelerRangeY con 490
'maxAccelerRangeY con 660
'minAccelerRangeX con 450
'maxAccelerRangeX con 600

minMidi con 0
maxMidi con 127
accelerRangeX var word
accelerRangeY var word
midiRange var word
midiX var word
midiY var word

accelerRangeX = maxAccelerRangeX - minAccelerRangeX
accelerRangeY = maxAccelerRangeY - minAccelerRangeY

midiRange = 128

LEFT con 144
RIGHT CON 145
MIDDLE con 146
FRONT CON 147
BACK CON 148
SITTING CON 149

xVar var word
yVar var word
posStatus var word
movStatus var word
oldPosStatus var word
oldMovStatus var word

oldMovStatus = 99
oldPosStatus = 151

movStatus = 100
posStatus = 150

i var byte

FOR i=0 to 5
       high blinkyled
       pause 500
       low blinkyled
       pause 500
NEXT

main:

  adcin 0, xVar
  adcin 1, yVar
  if swleft = 1 then
    posStatus = LEFT
  endif
  if swright = 1 then
    posStatus = RIGHT
  endif
  if swmiddle = 1 then
    posStatus = MIDDLE
  endif
  if swfront = 1 then
    posStatus = FRONT
  endif
  if swback = 1 then
    posStatus = BACK
  endif

  if (swfront = 1 and swmiddle = 1) OR (swback = 1 and swmiddle = 1) then
   posStatus = SITTING
  endif

  if xvar < 700 then
      midiX = (xVar - minAccelerRangeX) * midiRange
      midiX = midiX / accelerRangeX

      midiY = (yVar - minAccelerRangeY) * midiRange
      midiY = midiY / accelerRangeY
  else
       if midix < 120  then
           midiX = midiX + 1
       else
           midix = midiX - 10
       endif
       if midiY < 120  then
           midiY = midiY + 1
       else
           midiY = midiY - 10
       endif

  endif

  oldmovstatus = midiX
  oldposstatus = posstatus

  serout2 txpin, 12, [posstatus, midiX, midiY]
  
  if (posstatus != oldposstatus) then
           posStatus = 150
  endif

  pause 300 ' we must have a pause, otherwise jitter is crushing!!!!!

goto main