{"id":241,"date":"2010-11-05T19:07:32","date_gmt":"2010-11-05T19:07:32","guid":{"rendered":"http:\/\/www.mariarabinovich.com\/physcomp\/?p=241"},"modified":"2011-12-20T18:10:07","modified_gmt":"2011-12-20T18:10:07","slug":"media-controller-3","status":"publish","type":"post","link":"http:\/\/www.mariarabinovich.com\/blog\/archives\/241","title":{"rendered":"Media Controller 3"},"content":{"rendered":"

To get back to the call and response issue, I want to resolve it for future reference, and I think I may have found the issue: a misplaced ‘}’. Here is the arduino code:<\/p>\n

int analogOne = 0; \/\/ analog input int analogTwo = 1; int analogThree = 2; int analogFour=3; int analogFive=4; int analogSix=5; int digitalOne = 2; \/\/ digital input int sensorValue = 0; \/\/ reading from the sensor void setup() { \/\/ configure the serial connection: Serial.begin(9600); \/\/ configure the digital input: pinMode(digitalOne, INPUT); establishContact(); } void loop() { if(Serial.available()>0){ int inByte=Serial.read(); sensorValue = analogRead(analogOne); Serial.print(sensorValue, DEC); Serial.print(“,”); sensorValue = analogRead(analogTwo); Serial.print(sensorValue, DEC); Serial.print(“,”); sensorValue = analogRead(analogThree); Serial.print(sensorValue, DEC); Serial.print(“,”); sensorValue = analogRead(analogFour); Serial.print(sensorValue, DEC); Serial.print(“,”); sensorValue = analogRead(analogFive); Serial.print(sensorValue, DEC); Serial.print(“,”); sensorValue = analogRead(analogSix); Serial.print(sensorValue, DEC); Serial.print(“,”); sensorValue = digitalRead(digitalOne); \/\/ print the last sensor value with a println() Serial.println(sensorValue, DEC); } } void establishContact(){ while(Serial.available()<=0){ Serial.println(“hello”); delay(300); } }<\/div>\n
And this processing sketch takes the serial input, prints the values of the sensors, and changes the color of the background based on the first three sonsors.<\/span><\/pre>\n
boolean firstContact=false;\r\n\r\nimport processing.serial.*;\r\nSerial myPort;                  \r\n\r\nPFont f;\r\n\r\nfloat sensor1=200;\r\nfloat sensor2=0;\r\nfloat sensor3=60;\r\nfloat sensor4=0;\r\nfloat sensor5=0;\r\nfloat sensor6=0;\r\nfloat sensor7=0;\r\n\r\nvoid setup() {\r\n\r\n  size(900,480);\r\n  f=createFont(\"Arial\",16,true);\r\n  println(Serial.list());\r\n\r\n  myPort = new Serial(this, Serial.list()[0], 9600);\r\n  myPort.bufferUntil('\\n');\r\n}\r\n\r\nvoid serialEvent(Serial myPort) { \r\n\r\n  String myString = myPort.readStringUntil('\\n');\r\n  if (myString != null) {\r\n     myString = trim(myString);\r\n\r\n    if(firstContact==false){\r\n      if(myString.equals(\"hello\")){\r\n        myPort.clear();\r\n        firstContact=true;\r\n        myPort.write('A');\r\n      }\r\n    }\r\n    else{\r\n    int sensors[] = int(split(myString, ','));\r\n    for (int sensorNum = 0; sensorNum < sensors.length;\u00a0\r\n      sensorNum++) {<\/pre>\n
      print(\"Sensor \" + sensorNum + \": \" +\r\n             sensors[sensorNum] + \"\\t\");\r\n      println();\r\n      if (sensors.length > 1) {\r\n        sensor1 =map(sensors[0],0,1000,0,255);\r\n        sensor2 = map(sensors[1],250,500,0,255);\r\n        sensor3= map(sensors[2],250,500,0,255);\r\n        sensor4=sensors[3];\r\n        sensor5=sensors[4];\r\n        sensor6=sensors[5];\r\n        sensor7=sensors[6];\r\n        if(sensors[3]==1){\r\n          sensor2=sensor2\/2;\r\n          }\r\n        }\r\n       }\r\n    }\r\n    myPort.write('A');\r\n}\r\n}\r\n\r\nvoid draw() {\r\n  background(sensor1,sensor2,sensor3);\r\n  textFont(f);\r\n  fill(0);\r\n  textAlign(LEFT);\r\n  text(\"sensor1: \" + sensor1 +\r\n       \"   sensor2: \" + sensor2 +\r\n       \"   sensor3: \" + sensor3 +\r\n       \"   sensor4: \" + sensor4 +\r\n       \"   sensor5: \" + sensor5 +\r\n       \"   sensor6: \" + sensor6 +\r\n       \"   switch: \"  + sensor7, width\/10, height\/4);\r\n}<\/pre>\n

And now the two put together with the video code:<\/p>\n

\/* This code reads 6 analog sensors and one digital switch to\r\ncontrol background color, alpha, and speed of a video based\r\non the sensor readings. Video is switched when sensor 4 is >\r\n400, background is dependent on the first three sensors,\r\nmovieAlpha, or transparency, is dependent on sensor5, and\r\nthe rate on sensor6. The switch is set up to change the\r\nreadings of the sensors in the if statement, but isn't\r\ndoing much in this version\r\n*\/ \r\n\r\nimport processing.serial.*;\r\nSerial myPort;\r\nboolean firstContact=false;\r\nimport jmcvideo.*;\r\nimport processing.opengl.*;\r\nimport javax.media.opengl.*; \r\n\r\nint sensor1;\r\nint sensor2=0;\r\nint sensor3=0;\r\nint sensor4;\r\nint sensor5=0;\r\nint sensor6;\r\nint sensor7=0;\r\nfloat movieRate=0;\r\nfloat movieAlpha=0;\r\n\r\nJMCMovieGL myMovie;\r\nint pvw, pvh;\r\nString[] vids = new String[]{\"static.mov\",\"sledding.mov\",\r\n               \"slide.mov\",\"californiadreams.mov\",\r\n            \"commercials.mov\", \"gummibears.mov\",\"wwf.mov\"};\r\nint vidNum = 0;\r\n\r\nvoid setup() {\r\n  size(800,600, OPENGL);\r\n  frame.setResizable(true);\r\n  background(0);\r\n\r\n  myMovie = movieFromDataPath(vids[vidNum]);\r\n  myMovie.loop();\r\n\r\n  println(Serial.list());\r\n  myPort = new Serial(this, Serial.list()[0], 9600);\r\n  myPort.bufferUntil('\\n');\r\n\r\n}\r\n\r\nvoid serialEvent(Serial myPort) { \r\n\r\n  String myString = myPort.readStringUntil('\\n');\r\n\r\n  \/\/ if you got any bytes other than the linefeed:\r\n  if (myString != null) {\r\n\r\n    myString = trim(myString);\r\n\r\n    if(firstContact==false){\r\n      if(myString.equals(\"hello\")){\r\n        myPort.clear();\r\n        firstContact=true;\r\n        myPort.write('A');\r\n        }\r\n     }\r\n    else{\r\n       int sensors[] = int(split(myString, ','));\r\n\r\n    \/\/ print out the values you got:\r\n       for (int sensorNum = 0; sensorNum < sensors.length;\r\n            sensorNum++) {\r\n       print(\"Sensor \" + sensorNum + \": \" + sensors[sensorNum]\r\n              + \"\\t\");\r\n       println();\r\n       if (sensors.length > 1) {\r\n          sensor1=sensors[0];\r\n          sensor2=sensors[1];\r\n          sensor3=sensors[2];\r\n          sensor4=sensors[3];\r\n          sensor5=sensors[4];\r\n          sensor6=sensors[5];\r\n          sensor7=sensors[6];\r\n          if(sensors[3]==1){\r\n             sensor2=sensor2\/2;\r\n             }\r\n          }\r\n       }\r\n    }\r\n    myPort.write('A');\r\n}\r\n}\r\n\r\nvoid draw()\r\n{\r\n   background(map(sensor2,0,1000,0,255),\r\n                  map(sensor3,250,500,0,255),\r\n                  map(sensor5,100,900,0,255));  \r\n\r\n  PGraphicsOpenGL pgl = (PGraphicsOpenGL) g;\r\n\r\n  GL gl = pgl.beginGL();\r\n  {\r\n    if (pvw != width || pvh != height)\r\n    {\r\n      background(0);\r\n      gl.glViewport(0, 0, width, height);\r\n      pvw = width;\r\n      pvh = height;\r\n    }\r\n    movieAlpha=map(sensor5,0,900,255,1);\r\n    myMovie.centerImage(gl);\r\n    myMovie.alpha=(1f*movieAlpha\/255f);\r\n    movieRate=map(sensor6,0,1000,.2,2);\r\n    myMovie.setRate(movieRate);\r\n  }\r\n  pgl.endGL();\r\n\r\n if(sensor4>700){\r\n   vidNum = (vidNum + 1) % vids.length;\r\n   myMovie.switchVideo(vids[vidNum]); }else{\r\n   myMovie.loop();}\r\n}  \r\n\r\nJMCMovieGL movieFromDataPath(String filename)\r\n{\r\n  return new JMCMovieGL(this, filename, RGB);\r\n}<\/pre>\n

And it works !!!!!!<\/p>\n","protected":false},"excerpt":{"rendered":"

To get back to the call and response issue, I want to resolve it for future reference, and I think I may have found the issue: a misplaced ‘}’. Here is the arduino code: int analogOne = 0; \/\/ analog input int analogTwo = 1; int analogThree = 2; int analogFour=3; int analogFive=4; int analogSix=5; […]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24,1],"tags":[],"class_list":["post-241","post","type-post","status-publish","format-standard","hentry","category-physical-computing","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/www.mariarabinovich.com\/blog\/wp-json\/wp\/v2\/posts\/241","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.mariarabinovich.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.mariarabinovich.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.mariarabinovich.com\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"http:\/\/www.mariarabinovich.com\/blog\/wp-json\/wp\/v2\/comments?post=241"}],"version-history":[{"count":14,"href":"http:\/\/www.mariarabinovich.com\/blog\/wp-json\/wp\/v2\/posts\/241\/revisions"}],"predecessor-version":[{"id":1126,"href":"http:\/\/www.mariarabinovich.com\/blog\/wp-json\/wp\/v2\/posts\/241\/revisions\/1126"}],"wp:attachment":[{"href":"http:\/\/www.mariarabinovich.com\/blog\/wp-json\/wp\/v2\/media?parent=241"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.mariarabinovich.com\/blog\/wp-json\/wp\/v2\/categories?post=241"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.mariarabinovich.com\/blog\/wp-json\/wp\/v2\/tags?post=241"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}