Generic Step Motor WebInterface - control a step motor using a Pololu A4983 driver from a webinterface (EXPERIMENTAL PROTOTYPE - just to be used as a proof-of-concept for a IoT talk, will not be updating this code so often)

Dependencies:   EthernetNetIf RPCInterface mbed HTTPServer

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers index.html.cpp Source File

index.html.cpp

00001 /*
00002 <html>
00003 <head>
00004 <script type="text/javascript">
00005 function sendrequest(request_uri)
00006 {
00007   var xmlhttp;
00008   if(window.XMLHttpRequest)
00009   {// code for IE7+, Firefox, Chrome, Opera, Safari
00010     xmlhttp=new XMLHttpRequest();
00011   }
00012   else
00013   {// code for IE6, IE5
00014     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
00015   }
00016   xmlhttp.onreadystatechange=function()
00017   {
00018     if (xmlhttp.readyState==4 && xmlhttp.status==200)
00019     {
00020       <!-- document.getElementById("myDiv").innerHTML=xmlhttp.responseText; -->
00021     }
00022   }
00023   console.log(request_uri);
00024   xmlhttp.open("GET",request_uri,true);
00025   xmlhttp.send();
00026 }
00027 
00028 function adjustvalues1(){
00029   var dataval = document.getElementById("timevalue1").value;
00030   
00031   document.getElementById("timevalue2").value = dataval*1000;
00032   
00033   document.getElementById("timevalue3").value = dataval*1000*1000;
00034 }
00035 
00036 function adjustvalues2(){
00037   var dataval = document.getElementById("timevalue2").value;
00038   
00039   document.getElementById("timevalue1").value = dataval/1000;
00040   
00041   document.getElementById("timevalue3").value = dataval*1000;
00042 }
00043 
00044 function adjustvalues3(){
00045   var dataval = document.getElementById("timevalue3").value;
00046   
00047   document.getElementById("timevalue1").value = dataval/1000/1000;
00048   
00049   document.getElementById("timevalue2").value = dataval/1000;
00050 }
00051 
00052 function demo(){
00053   // set timer to 100ms
00054   sendrequest('./rpc/delay/write%20'+(100/1000000));
00055 
00056   // set direction 0
00057   sendrequest('./rpc/direction/write%200');
00058   
00059   // 360 º
00060   sendrequest('./rpc/nsteps/run%20'+(1*64*50));
00061   
00062   // set direction 1
00063   sendrequest('./rpc/direction/write%201');
00064 
00065   // set timer to 200ms
00066   sendrequest('./rpc/delay/write%20'+(200/1000000));
00067 
00068   // 360 º
00069   sendrequest('./rpc/nsteps/run%20'+(1*64*50));
00070 }
00071 </script>
00072 </head>
00073 <body>
00074 
00075 <div id="myDiv"><h2>Step Motor HTTP REST (RPC) interface.</h2></div>
00076 <button type="button" onclick="sendrequest('./rpc/enable/write%201')">Start Autorun</button>
00077 <button type="button" onclick="sendrequest('./rpc/enable/write%200')">Stop Autorun</button>
00078 <!--<button type="button" onclick="sendrequest('./rpc/releasecmd')">Release Motor CMD</button>-->
00079 <br>
00080 <button type="button" onclick="sendrequest('./rpc/sleepmode/run%2001')">Sleep</button>
00081 <button type="button" onclick="sendrequest('./rpc/sleepmode/run%2000')">Wake up</button>
00082 <br>
00083 <button type="button" onclick="sendrequest('./rpc/stepmode/run%201')">MicroStep Mode</button>
00084 <button type="button" onclick="sendrequest('./rpc/stepmode/run%200')">FullStep Mode</button>
00085 <br>
00086 <button type="button" onclick="sendrequest('./rpc/direction/write%200')">Normal Direction</button>
00087 <button type="button" onclick="sendrequest('./rpc/direction/write%201')">Inverse Direction</button>
00088 <br>
00089 <input type="text" id="timevalue1" name="timevalue1" onKeyUp="adjustvalues1();" maxlength="10" size="10" value="0.001" />
00090 <button type="button" onclick="sendrequest('./rpc/delay/write%20'+timevalue.value)">Time value (Seconds)</button>
00091 <br>
00092 <input type="text" id="timevalue2" name="timevalue2" onKeyUp="adjustvalues2()" maxlength="10" size="10" value="1" />
00093 <button type="button" onclick="sendrequest('./rpc/delay/write%20'+(timevalue2.value/1000))">Time value (mili-Seconds)</button>
00094 <br>
00095 <input type="text" id="timevalue3" name="timevalue3" onKeyUp="adjustvalues3()" maxlength="10" size="10" value="1000" />
00096 <button type="button" onclick="sendrequest('./rpc/delay/write%20'+(timevalue3.value/1000000))">Time value (micro-Seconds)</button>
00097 <br>
00098 <br>
00099 <input type="text" id="nmicrosteps" name="nmicrosteps" maxlength="10" size="10" value="1" />
00100 <button type="button" onclick="sendrequest('./rpc/nsteps/run%20'+nmicrosteps.value)">Manual MicroSteps</button>
00101 <br>
00102 <input type="text" id="nsteps" name="nsteps" maxlength="10" size="10" value="1" />
00103 <button type="button" onclick="sendrequest('./rpc/nsteps/run%20'+(nsteps.value*16))">Manual Steps</button>
00104 <br>
00105 <input type="text" id="nsteps360" name="nsteps360" maxlength="10" size="10" value="1" />
00106 <button type="button" onclick="sendrequest('./rpc/nsteps/run%20'+(nsteps360.value*16*200))">Manual Step 360º</button>
00107 <br>
00108 <br>
00109 <!-- <button type="button" onclick="demo()">Demo</button> -->
00110 </body>
00111 </html>
00112 */