Log updates
[beagleboard.org.git] / db / 3008.xml
blobad96ca65e06c192d53dd6987fb899ecdb0863958
1 <?xml version="1.0" encoding="ISO-8859-1"?>
2 <?xml-stylesheet type="text/xsl" href="helma.xsl"?>
3 <xmlroot xmlns:hop="http://www.helma.org/docs/guide/features/database">
4   <hopobject id="3008" name="accelerometer" prototype="Page" created="1375888514900" lastModified="1376560050943">
5   <hop:parent idref="2892" prototyperef="Page"/>
6     <is_xhtml type="boolean">true</is_xhtml>
7     <http_remotehost>192.91.75.30</http_remotehost>
8     <http_language>en-US,en;q=0.8</http_language>
9     <uri>accelerometer</uri>
10     <http_browser>Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36</http_browser>
11     <time type="date">15.08.2013 04:47:30 CDT</time>
12     <hopsession>192.91.75.172.24.1.1mdcrwb0yynys</hopsession>
13     <body>&lt;h1&gt;&lt;a href=&quot;http://processingjs.org/&quot; class=&quot;external&quot;&gt;Processing.JS&lt;/a&gt;&lt;/h1&gt;\r
14 &lt;canvas id=&quot;mysketch&quot;&gt;&lt;/canvas&gt;\r
15 &lt;script src=&quot;/static/bonescript.js&quot;&gt;&lt;/script&gt;\r
16 &lt;script src=&quot;/static/processing.js&quot;&gt;&lt;/script&gt;\r
17 &lt;script&gt;\r
18 (function(){\r
19 var canvas = document.getElementById(&apos;mysketch&apos;);\r
20 var pjs = new Processing(canvas);\r
22 // Global variables\r
23 var radius = 50.0;\r
24 var X, Y;\r
25 var nX, nY, nZ;\r
26 var delay = 16;\r
27 var brightness = 0;\r
28 var buttonStatus = 0;\r
29 var sliderStatus = 0;\r
30 var lastSliderValue = 0;\r
31 var LED_RED = &apos;P9_42&apos;;\r
32 var LED_GREEN = &apos;P9_14&apos;;\r
33 var LED_BLUE = &apos;P9_16&apos;;\r
34 var BUTTON = &apos;P8_19&apos;;\r
35 var POT = &apos;P9_36&apos;;\r
36 var S_DATA = &apos;P9_18&apos;;\r
37 var S_CLOCK = &apos;P9_22&apos;;\r
38 var S_LATCH = &apos;P9_17&apos;;\r
39 var S_CLEAR = &apos;P9_15&apos;;\r
41 var segDigits = [ 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90 ];\r
43 // Get the BoneScript library and begin updating the canvas\r
44 setTargetAddress(&apos;192.168.7.2&apos;, {initialized: run});\r
45 function run() {\r
46     var b = require(&apos;bonescript&apos;);\r
47     var port = &apos;/dev/i2c-2&apos;\r
48     var address = 0x1c;\r
49     b.pinMode(LED_RED, b.OUTPUT);\r
50     b.pinMode(LED_GREEN, b.OUTPUT);\r
51     b.pinMode(LED_BLUE, b.OUTPUT);\r
52     b.pinMode(BUTTON, b.INPUT);\r
53     b.pinMode(S_DATA, b.OUTPUT);\r
54     b.pinMode(S_CLOCK, b.OUTPUT);\r
55     b.pinMode(S_LATCH, b.OUTPUT);\r
56     b.pinMode(S_CLEAR, b.OUTPUT);\r
57     b.digitalWrite(S_DATA, b.LOW);\r
58     b.digitalWrite(S_CLOCK, b.LOW);\r
59     b.digitalWrite(S_LATCH, b.LOW);\r
60     b.digitalWrite(S_CLEAR, b.HIGH);\r
61     b.i2cOpen(port, address, {}, onI2C);\r
62     \r
63     function onI2C() {\r
64         b.i2cWriteBytes(port, 0x2a, [0x00], nextA);\r
65     }\r
67     function nextA() {\r
68         b.i2cWriteBytes(port, 0x0e, [0x07], nextB);\r
69     }\r
70     \r
71     function nextB() {\r
72         b.i2cWriteBytes(port, 0x2a, [0x01], pjs.setup);\r
73     }\r
75     // Setup the Processing Canvas\r
76     pjs.setup = function() {\r
77         pjs.size(255, 255);\r
78         pjs.strokeWeight(10);\r
79         pjs.frameRate(15);\r
80         X = pjs.width / 2;\r
81         Y = pjs.height / 2;\r
82         nX = X;\r
83         nY = Y;  \r
84     }\r
85     \r
86     // Main draw loop\r
87     pjs.draw = function() {\r
88         // Calculate some fading values based on the frame count\r
89         radius = 50.0 + (15-sliderStatus)*pjs.sin(pjs.frameCount / 4);\r
90         brightness = (radius - 40.0) / 20.0;\r
91         \r
92         // Set the RGB LED color based on the status of the button\r
93         if(buttonStatus) {\r
94             b.analogWrite(LED_RED, brightness);\r
95             b.analogWrite(LED_BLUE, 0);\r
96         } else {\r
97             b.analogWrite(LED_RED, 0);            \r
98             b.analogWrite(LED_BLUE, brightness);\r
99         }\r
100       \r
101         // Track circle to new destination\r
102         X+=(nX-X)/delay;\r
103         Y+=(nY-Y)/delay;\r
104       \r
105         // Fill canvas grey\r
106         pjs.background(100);\r
107       \r
108         // Set fill-color to blue or red, based on button status\r
109         if(buttonStatus) pjs.fill(200, 30, 20)\r
110         else pjs.fill(0, 121, 184);\r
111       \r
112         // Set stroke-color white\r
113         pjs.stroke(255); \r
114       \r
115         // Draw circle\r
116         pjs.ellipse(X, Y, radius, radius);\r
117         \r
118         // Fetch slider location for next time\r
119         b.analogRead(POT, onAnalogRead);\r
120         \r
121         // Fetch accelerometer status\r
122         b.i2cReadBytes(port, 1, 6, onReadBytes);\r
123         \r
124         // Fetch button status\r
125         b.digitalRead(BUTTON, onDigitalRead);\r
126     }\r
127     \r
128     // Handle data back from potentiometer\r
129     function onAnalogRead(x) {\r
130         if(!x.err &amp;&amp; (x.value &gt;= 0) &amp;&amp; (x.value &lt;= 1)) {\r
131             if(Math.abs(x.value - lastSliderValue) &gt; 0.05) {\r
132                 lastSliderValue = x.value;\r
133                 sliderStatus = parseInt(x.value*10, 10);\r
134                 $(&apos;#sliderStatus&apos;).html(sliderStatus);\r
135                 write7Seg(sliderStatus);            \r
136             }\r
137         }\r
138     }\r
139     \r
140     function write7Seg(x) {\r
141         var c = segDigits[x%10];\r
142         b.shiftOut(S_DATA, S_CLOCK, b.MSBFIRST, c, onShiftOut);\r
143     }\r
144     \r
145     function onShiftOut(x) {\r
146         b.digitalWrite(S_LATCH, b.HIGH, onLatchHigh);\r
147     }\r
148     \r
149     function onLatchHigh(x) {\r
150         b.digitalWrite(S_LATCH, b.LOW);\r
151     }\r
152     \r
153     function onWriteByte(x) {\r
154         if(x.event == &apos;callback&apos;) {\r
155             b.i2cReadBytes(port, 1, 6, onReadBytes);\r
156         }\r
157     }\r
158     \r
159     function onReadBytes(x) {\r
160         if(x.event == &apos;callback&apos;) {\r
161             nX = x.res[0];\r
162             nY = x.res[2];\r
163             nZ = x.res[4];\r
164             if(nX &gt;= 128) nX = -((nX^0xFF)+1);\r
165             if(nY &gt;= 128) nY = -((nY^0xFF)+1);\r
166             if(nZ &gt;= 128) nZ = -((nZ^0xFF)+1);\r
167             nX += 128;\r
168             nX = 255 - nX;\r
169             nY += 128;\r
170             nZ += 128;\r
171             $(&apos;#nX&apos;).html(nX);\r
172             $(&apos;#nY&apos;).html(nY);\r
173             $(&apos;#nZ&apos;).html(nZ);\r
174         }\r
175     }\r
176     \r
177     // Handle data back from button\r
178     function onDigitalRead(x) {\r
179         buttonStatus = (x.value == b.LOW) ? 1 : 0;\r
180         $(&apos;#buttonStatus&apos;).html(buttonStatus);\r
181     }\r
182     \r
183     //pjs.setup();\r
186 })();\r
187 &lt;/script&gt;\r
188 &lt;p&gt;buttonStatus = &lt;span id=&quot;buttonStatus&quot;&gt;&lt;/span&gt;&lt;/p&gt;\r
189 &lt;p&gt;sliderStatus = &lt;span id=&quot;sliderStatus&quot;&gt;&lt;/span&gt;&lt;/p&gt;\r
190 &lt;p&gt;nX = &lt;span id=&quot;nX&quot;&gt;&lt;/span&gt;&lt;/p&gt;\r
191 &lt;p&gt;nY = &lt;span id=&quot;nY&quot;&gt;&lt;/span&gt;&lt;/p&gt;\r
192 &lt;p&gt;nZ = &lt;span id=&quot;nZ&quot;&gt;&lt;/span&gt;&lt;/p&gt;\r
193 &lt;div style=&quot;clear:both;&quot;&gt;&lt;/div&gt;</body>
194     <pseudoparent idref="2892" prototyperef="Page"/>
195     <http_referer>http://beagleboard.org/support/BoneScript/processingjs/accelerometer/edit</http_referer>
196     <http_host>beagleboard.org</http_host>
197     <user>jkridner@gmail.com</user>
198     <lang>en-us</lang>
199   </hopobject>
200 </xmlroot>