<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-gb">
<link rel="self" type="application/atom+xml" href="http://forum.robosavvy.com/feed.php?f=4&amp;t=3644" />

<title>RoboSavvy Forum</title>
<subtitle>Robosavvy Forum: The largest online community of Humanoid Robot Builders</subtitle>
<link href="http://forum.robosavvy.com/index.php" />
<updated>2013-03-15T07:12:28+01:00</updated>

<author><name><![CDATA[RoboSavvy Forum]]></name></author>
<id>http://forum.robosavvy.com/feed.php?f=4&amp;t=3644</id>
<entry>
<author><name><![CDATA[Bicgatepc02]]></name></author>
<updated>2013-03-15T07:12:28+01:00</updated>
<published>2013-03-15T07:12:28+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=3644&amp;p=37371#p37371</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=3644&amp;p=37371#p37371"/>
<title type="html"><![CDATA[Real-time RoboNova PC Interface]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=3644&amp;p=37371#p37371"><![CDATA[
The most elegant solution would be to see if a real whiz like i-bot (Richard, who I believe has hacked Atmel controller on the MR-C3024) could alter the LCD interpreter code to operate at a higher baud rate Question<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />__________________________________________________________<br />wwwbicgatecom<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=4248">Bicgatepc02</a> — Fri Mar 15, 2013 7:12 am</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[blues]]></name></author>
<updated>2010-12-08T15:37:28+01:00</updated>
<published>2010-12-08T15:37:28+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=3644&amp;p=29215#p29215</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=3644&amp;p=29215#p29215"/>
<title type="html"><![CDATA[Real-time RoboNova PC Interface]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=3644&amp;p=29215#p29215"><![CDATA[
Ok dont worry, anyway thank you for the help. <img src="http://forum.robosavvy.com/images/smilies/icon_smile.gif" alt=":)" title="Smile" /><p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=2419">blues</a> — Wed Dec 08, 2010 3:37 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pejus]]></name></author>
<updated>2010-12-08T08:21:28+01:00</updated>
<published>2010-12-08T08:21:28+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=3644&amp;p=29211#p29211</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=3644&amp;p=29211#p29211"/>
<title type="html"><![CDATA[Real-time RoboNova PC Interface]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=3644&amp;p=29211#p29211"><![CDATA[
Did u get any response? I wrote pm to roboTT but he seems to not coming here anymore <img src="http://forum.robosavvy.com/images/smilies/icon_sad.gif" alt=":(" title="Sad" /><p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=2425">pejus</a> — Wed Dec 08, 2010 8:21 am</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[blues]]></name></author>
<updated>2010-11-04T16:25:35+01:00</updated>
<published>2010-11-04T16:25:35+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=3644&amp;p=28637#p28637</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=3644&amp;p=28637#p28637"/>
<title type="html"><![CDATA[Real-time RoboNova PC Interface]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=3644&amp;p=28637#p28637"><![CDATA[
//max odleglosc sensora IR;<br /><br />HANDLE hThread_networking;<br />DWORD  threadId_networking;<br />HANDLE hCom;<br />char sts[128];<br />void Servo_readposition(int servo);   <br />void Servo_syncmove(int ptp,int firstservo,int lastservo,int value);<br />void SerialPutc(HANDLE hCom, char txchar);<br />int SerialGetc(HANDLE hCom);<br />int IR_getdata();<br />float IR_centimeter(int wartosc);<br />void Servo_enable(int which);<br />void Servo_move(int which,int position);<br />void Servo_setspeed(int speed);<br />void AD_getdata(int port);<br />void Servo_readgroup6A();<br />void Servo_readgroup6B();<br />void Servo_readgroup6C();<br />void Servo_readgroup6D();<br />int Memory_read(int low,int high);<br /><br />DWORD WINAPI THREAD_listenpackets(void *parm);<br />void Servo_wait(int ktore,int wartosc){<br />   <br /><br />int a=0;<br />   while(ROBONOVA.servo[ktore].value!=wartosc){<br />      if(GetTickCount()-tick&gt;10){<br />         a=Memory_read(32+ktore,0x03);<br />         ROBONOVA.servo[ktore].value=a;<br />         tick=GetTickCount();<br />      }<br />   }<br />}<br /><br />float Voltage(){<br />int value;<br />AD_getdata(5);<br />return (10*ROBONOVA.sensor[5].value)/256;<br />}<br />int Memory_read(int low,int high){<br />   int a;<br />   SerialPutc(hCom,0xF7);SerialGetc(hCom);<br />   SerialPutc(hCom,low);SerialGetc(hCom);<br />   SerialPutc(hCom,high);SerialGetc(hCom);<br />   SerialPutc(hCom,0x00);a=SerialGetc(hCom);<br />   return a;<br />} <br /><br />void Reboot(){<br />int A,a,b,c,d;<br />   SerialPutc(hCom,0xAF); A=SerialGetc(hCom);<br />     SerialPutc(hCom,0x62); a=SerialGetc(hCom);<br />     SerialPutc(hCom,0x6F); b=SerialGetc(hCom);<br />     SerialPutc(hCom,0x6F); c=SerialGetc(hCom);<br />     SerialPutc(hCom,0x74); d=SerialGetc(hCom);<br />   <br /><br /><br />               if(a==0x42 &amp;&amp; b==0x4f &amp;&amp; c==0x4f &amp;&amp; d==0x54){SetStatusText(&quot;Boot sequence OK&quot;);ROBONOVA.bootsequence=1;}<br />            else{<br />               sprintf(sts,&quot;[0%x] Boot sequence strange: %x %x %x %x - RESTARTING&quot;,A,a,b,c,d);<br />               SetStatusText(sts);<br />               Reboot();<br />            }<br />      <br /> }<br />void Servo_move(int which,int position){<br /> <br />     SerialPutc(hCom,0xE6);SerialGetc(hCom);      //move servo<br />     SerialPutc(hCom,which);SerialGetc(hCom);      //ktore serwo<br />     SerialPutc(hCom,position);SerialGetc(hCom);   //position<br /> <br />}<br /><br /><br />void MOVEG6A(int a, int b, int c, int d,int e,int f){<br />SerialPutc(hCom,0xEB);SerialGetc(hCom);//SYNC MOVE<br />SerialPutc(hCom,0);SerialGetc(hCom);<br />SerialPutc(hCom,6);SerialGetc(hCom);<br /><br />SerialPutc(hCom,a);SerialGetc(hCom);<br />SerialPutc(hCom,b);SerialGetc(hCom);<br />SerialPutc(hCom,c);SerialGetc(hCom);<br />SerialPutc(hCom,d);SerialGetc(hCom);<br />SerialPutc(hCom,e);SerialGetc(hCom);<br />SerialPutc(hCom,f);SerialGetc(hCom);<br />}<br /><br />void MOVEG6B(int a, int b, int c, int d,int e, int f){<br />SerialPutc(hCom,0xEB);SerialGetc(hCom);//SYNC MOVE<br />SerialPutc(hCom,6);SerialGetc(hCom);<br />SerialPutc(hCom,6);SerialGetc(hCom);<br />//<br />SerialPutc(hCom,a);SerialGetc(hCom);<br />SerialPutc(hCom,b);SerialGetc(hCom);<br />SerialPutc(hCom,c);SerialGetc(hCom);<br />SerialPutc(hCom,d);SerialGetc(hCom);<br />SerialPutc(hCom,e);SerialGetc(hCom);<br />SerialPutc(hCom,f);SerialGetc(hCom);<br />}<br /><br />void MOVEG6C(int a, int b, int c, int d,int e, int f){<br />SerialPutc(hCom,0xEB);SerialGetc(hCom);//SYNC MOVE<br />SerialPutc(hCom,12);SerialGetc(hCom);<br />SerialPutc(hCom,6);SerialGetc(hCom);<br />//<br />SerialPutc(hCom,a);SerialGetc(hCom);<br />SerialPutc(hCom,b);SerialGetc(hCom);<br />SerialPutc(hCom,c);SerialGetc(hCom);<br />SerialPutc(hCom,d);SerialGetc(hCom);<br />SerialPutc(hCom,0);SerialGetc(hCom);   //servo IR<br />SerialPutc(hCom,f);SerialGetc(hCom);<br />}<br /><br />void MOVEG6D(int a, int b, int c, int d,int e, int f){<br />SerialPutc(hCom,0xEB);SerialGetc(hCom);//SYNC MOVE<br />SerialPutc(hCom,18);SerialGetc(hCom);<br />SerialPutc(hCom,6);SerialGetc(hCom);<br />//<br />SerialPutc(hCom,a);SerialGetc(hCom);<br />SerialPutc(hCom,b);SerialGetc(hCom);<br />SerialPutc(hCom,c);SerialGetc(hCom);<br />SerialPutc(hCom,d);SerialGetc(hCom);<br />SerialPutc(hCom,e);SerialGetc(hCom);<br />SerialPutc(hCom,f);SerialGetc(hCom);<br />}<br /><br /><br />void MOVE24(int a, int b, int c, int d, int e ,int f, int g, int h, int i, int j , int k, int l,int m, int n,int o, int p, int q, int r, int s,int t, int u, int v, int w, int x){<br />SerialPutc(hCom,0xEB);SerialGetc(hCom);//SYNC MOVE<br />SerialPutc(hCom,0);SerialGetc(hCom);<br />SerialPutc(hCom,24);SerialGetc(hCom);<br />//Off we go.<br />SerialPutc(hCom,a);SerialGetc(hCom);<br />SerialPutc(hCom,b);SerialGetc(hCom);<br />SerialPutc(hCom,c);SerialGetc(hCom);<br />SerialPutc(hCom,d);SerialGetc(hCom);<br />SerialPutc(hCom,e);SerialGetc(hCom);<br />SerialPutc(hCom,f);SerialGetc(hCom);<br />SerialPutc(hCom,g);SerialGetc(hCom);<br />SerialPutc(hCom,h);SerialGetc(hCom);<br />SerialPutc(hCom,i);SerialGetc(hCom);<br />SerialPutc(hCom,j);SerialGetc(hCom);<br />SerialPutc(hCom,k);SerialGetc(hCom);<br />SerialPutc(hCom,0);SerialGetc(hCom);      //servo iR<br />SerialPutc(hCom,m);SerialGetc(hCom);<br />SerialPutc(hCom,n);SerialGetc(hCom);<br />SerialPutc(hCom,o);SerialGetc(hCom);<br />SerialPutc(hCom,p);SerialGetc(hCom);<br />SerialPutc(hCom,q);SerialGetc(hCom);<br />SerialPutc(hCom,r);SerialGetc(hCom);<br />SerialPutc(hCom,s);SerialGetc(hCom);<br />SerialPutc(hCom,t);SerialGetc(hCom);<br />SerialPutc(hCom,u);SerialGetc(hCom);<br />SerialPutc(hCom,v);SerialGetc(hCom);<br />SerialPutc(hCom,w);SerialGetc(hCom);<br />SerialPutc(hCom,x);SerialGetc(hCom);<br /> <br />}<br />void SYNCMOVE(){<br />int A,a,b,c,d,e;<br /> <br />    SerialPutc(hCom,0xEB);SerialGetc(hCom);//sync move<br />    SerialPutc(hCom,0x06);SerialGetc(hCom);// start from servo no<br />    SerialPutc(hCom,0x02);SerialGetc(hCom);// how many servoes ?<br />    SerialPutc(hCom,0x64);SerialGetc(hCom);// servo1 pos<br />   SerialPutc(hCom,0x64);SerialGetc(hCom);// servox pos<br /> <br />   sprintf(sts,&quot;WRONG %x %x %x %x %x&quot;,A,b,c,d,e);SetStatusText(sts);<br />     <br />}<br /><br /><br />void Servo_enable(int which){<br />     SerialPutc(hCom,0xE7);// turn on the servo<br />     SerialPutc(hCom,which);//ktore serwo<br /> }<br /><br />void AD_getdata(int port){<br />         int b=0;<br />        SerialPutc(hCom,0xE2);  //Get data from AD<br />        SerialGetc(hCom);<br />         SerialPutc(hCom,port);  //Pobieramy wartosc z AD.port<br />        SerialGetc(hCom);<br />        SerialPutc(hCom,0x00);  //NULL       <br />        b=SerialGetc(hCom);<br />        ROBONOVA.sensor[port].value=b;<br /><br />}<br /> <br /> <br />void Servo_setspeed(int speed){<br />SerialPutc(hCom,0xE9);SerialGetc(hCom);//funkcja predkosc serwa<br />SerialPutc(hCom,speed);SerialGetc(hCom);//predkosc<br /> }<br /> <br /><br /><br />   //Konwertuje wartosc z czujnika na centymetry.<br />   float IR_centimeter(int wartosc){<br />        float oblicz=0;<br />        if(wartosc&gt;0){<br />        oblicz=(1285/wartosc)*1.1060;<br />        return oblicz;}else return 0;<br />   }<br /><br /><br /><br />int COM_open(){<br /><br />DCB dcb;<br />    BOOL fSuccess;<br />   char *pcCommPort = &quot;COM1&quot;;<br /><br />   hCom = CreateFile( pcCommPort,<br />                    GENERIC_READ | GENERIC_WRITE,<br />                    0,    // must be opened with exclusive-access<br />                    NULL, // no security attributes<br />                    OPEN_EXISTING, // must use OPEN_EXISTING<br />                    0,    // not overlapped I/O<br />                    NULL  // hTemplate must be NULL for comm devices<br />                    );<br /><br />   if (hCom == INVALID_HANDLE_VALUE)<br />   {<br />       // Handle the error.<br />       printf (&quot;CreateFile failed with error %d.\n&quot;, GetLastError());<br />       return (1);<br />   }<br /><br />   // Build on the current configuration, and skip setting the size<br />   // of the input and output buffers with SetupComm.<br /><br />   fSuccess = GetCommState(hCom, &amp;dcb);<br /><br />   if (!fSuccess)<br />   {<br />      // Handle the error.<br />      printf (&quot;GetCommState failed with error %d.\n&quot;, GetLastError());<br />      return (2);<br />   }<br /><br />   // Fill in DCB: 57,600 bps, 8 data bits, no parity, and 1 stop bit.<br /><br />   dcb.BaudRate = CBR_9600;     // set the baud rate<br />   dcb.ByteSize = 8;             // data size, xmit, and rcv<br />   dcb.Parity = NOPARITY;        // no parity bit<br />   dcb.StopBits = ONESTOPBIT;    // one stop bit<br /><br />   fSuccess = SetCommState(hCom, &amp;dcb);<br /><br />   if (!fSuccess)<br />   {<br />      // Handle the error.<br />     MessageBox(0,&quot;ERROR COM&quot;,&quot;&quot;,MB_OK);<br />      return (3);<br />   }<br /><br /> <br /> <br />  //  hThread_networking = CreateThread( NULL, 0, THREAD_listenpackets, NULL,  0, &amp;threadId_networking );<br />    return (0);<br /><br />   }<br />int SerialGetc(HANDLE hCom)<br />{<br />char rxchar=0;<br />BOOL bReadRC;<br />  char z[10];<br /> static DWORD iBytesRead=NULL;;<br /> memset(z,0,sizeof(z));<br /><br />   bReadRC = ReadFile(hCom, &amp;rxchar, 1, &amp;iBytesRead, NULL); <br /><br />   if(bReadRC!=TRUE || iBytesRead&lt;1){<br />      Sleep(1);<br />      SerialGetc(hCom);<br />    }else{<br /> <br />  sprintf(z,&quot;%i&quot;,rxchar);<br />   return atoi(z);<br />  }<br /> <br />}<br /><br />void SerialPutc(HANDLE hCom, char txchar)<br />{<br />BOOL bWriteRC;<br />static DWORD iBytesWritten;<br />bWriteRC = WriteFile(hCom, &amp;txchar, 1, &amp;iBytesWritten,NULL);<br />if(bWriteRC!=TRUE || iBytesWritten&lt;1&gt;=320 ){<br />               sprintf(sts,&quot;%x%x = %i &quot;,b,a,c);<br />               SetStatusText(sts);<br />               ROBONOVA.servo[wartosc-320].value=c;<br /><br />            }<br />         <br />            /*<br /><br />To keep you going:<br />The desired positions are stored in 24 memory locations from &amp;H300.<br />The current positions are stored in 24 memory locations from &amp;H320<br />They can both be PEEKed there.<br /><br />When a move is started a bit is cleared in locations &amp;H4E3, &amp;H4E4, &amp;H4E5.<br />there is one bit per servo starting at bit 0 in &amp;H4E3.<br />When the current = the desired, then the corresponding bit is set.<br />A move is complete when all 3 bytes = &amp;HFF<br /><br /><br />            */<br />         //   sprintf(PROCESSOR_status,&quot;Memory red: 0x%x [%x,%x value: %i]&quot;,a,SerialGetc(hCom),SerialGetc(hCom),SerialGetc(hCom) );<br /><br />         break;<br /><br />    <br />         case 0xffffffd2:<br />            a=0;b=0;c=0;d=0;<br />            a=SerialGetc(hCom);<br />            b=SerialGetc(hCom);<br />            <br />            ROBONOVA.servo[a].value=b;<br />            sprintf(GL_status,&quot;%i=%i&quot;,a,b);<br /><br /><br />         break;<br /><br />         case 0xffffffe2:<br /><br />             a=0;b=0;c=0;d=0;<br />             a=SerialGetc(hCom);<br />             b=SerialGetc(hCom);<br />            <br />            sprintf(sts,&quot;[0x%x] Data read from AD.%i, value=%i\n&quot;,A,a,b);<br />            SetStatusText(sts);<br />            ROBONOVA.sensor[a].value=b;<br />         <br />         break;<br /><br />         case 0xffffffe9:<br />            a=0;b=0;c=0;d=0;<br />            a=SerialGetc(hCom);<br />            sprintf(sts,&quot;[0x%x] Servo speed to %x&quot;,A,a);<br />            SetStatusText(sts);<br /><br />         break;<br />         case 0xffffffe6:<br />            a=0;b=0;c=0;d=0;<br />            a=SerialGetc(hCom);<br />            b=SerialGetc(hCom);<br />            sprintf(sts,&quot;[0x%x] Servo: %i to position %i&quot;,A,a,b);<br />            SetStatusText(sts);<br />         break;<br />         case 0xffffffe7:<br />            a=0;b=0;c=0;d=0;<br />            a=SerialGetc(hCom);<br />            b=SerialGetc(hCom);<br />            sprintf(sts,&quot;[0x%x] Servo: %i Enabled. %x&quot;,A,a,b);<br />            SetStatusText(sts);<br />            ROBONOVA.servo[a].enabled=1;<br /><br />         break;<br /><br /><br />   <br />      <br />       <br /><br />      }<br /><br />      <br /> <br /><br />   }<br />   <br />return 0;<br />} <br /><br /><br />Hi,<br /><br />I could read that this code is for comunicate with a Robonova with C++<br />but I could see that are not include the library, could you write wich librarys need you?<br /><br />Thank you so much.<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=2419">blues</a> — Thu Nov 04, 2010 4:25 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kushlik]]></name></author>
<updated>2009-08-23T06:26:28+01:00</updated>
<published>2009-08-23T06:26:28+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=3644&amp;p=21436#p21436</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=3644&amp;p=21436#p21436"/>
<title type="html"><![CDATA[Real-time RoboNova PC Interface]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=3644&amp;p=21436#p21436"><![CDATA[
Hello All,<br /><br />I thought I'd post a link to my implementation of the Atmel firmware for robonova. Simply compiling and flashing the firmware, will let you command all 16 servos at the same time at 100+ Hz. Also feedback can be requested at 100+ Hz. Other functionality includes the speed setting and reading 5AD channels (for IMU, for example). <br /><br /><!-- m --><a class="postlink" href="http://fling.seas.upenn.edu/~akushley/cgi-bin/pmwiki/index.php?n=Site.Robonova">http://fling.seas.upenn.edu/~akushley/c ... e.Robonova</a><!-- m --><br /><br />Use AVR Studio to compile the Robonova atmel code. The interface (from PC) is only available for Linux via C++ and Matlab.<br /><br />I have written this up over a year ago, but forgot to post it...<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=1048">kushlik</a> — Sun Aug 23, 2009 6:26 am</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[roboTT]]></name></author>
<updated>2009-08-12T19:32:32+01:00</updated>
<published>2009-08-12T19:32:32+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=3644&amp;p=21299#p21299</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=3644&amp;p=21299#p21299"/>
<title type="html"><![CDATA[Real-time RoboNova PC Interface]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=3644&amp;p=21299#p21299"><![CDATA[
Here is my serial code, that drives my RN1 board directly from W32 C++ application.<br /><br /><br /><dl class="codebox"><dt>Code: </dt><dd><code>         //max odleglosc sensora IR<br /><br />HANDLE hThread_networking ;<br />DWORD  threadId_networking ;<br />HANDLE hCom;<br />char sts&#91;128&#93;;<br />void Servo_readposition&#40;int servo&#41;;   <br />void Servo_syncmove&#40;int ptp,int firstservo,int lastservo,int value&#41;;<br />void SerialPutc&#40;HANDLE hCom, char txchar&#41;;<br />int SerialGetc&#40;HANDLE hCom&#41;;<br />int IR_getdata&#40;&#41;;<br />float IR_centimeter&#40;int wartosc&#41;;<br />void Servo_enable&#40;int which&#41;;<br />void Servo_move&#40;int which,int position&#41;;<br />void Servo_setspeed&#40;int speed&#41;;<br />void AD_getdata&#40;int port&#41;;<br />void Servo_readgroup6A&#40;&#41;;<br />void Servo_readgroup6B&#40;&#41;;<br />void Servo_readgroup6C&#40;&#41;;<br />void Servo_readgroup6D&#40;&#41;;<br />int Memory_read&#40;int low,int high&#41;;<br /><br />DWORD WINAPI THREAD_listenpackets&#40;void *parm&#41;;<br />void Servo_wait&#40;int ktore,int wartosc&#41;&#123;<br />   int a=0;<br />   while&#40;ROBONOVA.servo&#91;ktore&#93;.value!=wartosc&#41;&#123;<br />      if&#40;GetTickCount&#40;&#41;-tick&gt;10&#41;&#123;<br />         a=Memory_read&#40;32+ktore,0x03&#41;;<br />         ROBONOVA.servo&#91;ktore&#93;.value=a;<br />         tick=GetTickCount&#40;&#41;;<br />      &#125;<br />   &#125;<br />&#125;<br /><br />float Voltage&#40;&#41;&#123;<br />int value;<br />AD_getdata&#40;5&#41;;<br />return &#40;10*ROBONOVA.sensor&#91;5&#93;.value&#41;/256;<br />&#125;<br />int Memory_read&#40;int low,int high&#41;&#123;<br />   int a;<br />   SerialPutc&#40;hCom,0xF7&#41;;SerialGetc&#40;hCom&#41;;<br />   SerialPutc&#40;hCom,low&#41;;SerialGetc&#40;hCom&#41;;<br />   SerialPutc&#40;hCom,high&#41;;SerialGetc&#40;hCom&#41;;<br />   SerialPutc&#40;hCom,0x00&#41;;a=SerialGetc&#40;hCom&#41;;<br />   return a;<br />&#125;  <br /><br />void Reboot&#40;&#41;&#123;<br />int A,a,b,c,d;<br />   SerialPutc&#40;hCom,0xAF&#41;; A=SerialGetc&#40;hCom&#41;;<br />     SerialPutc&#40;hCom,0x62&#41;; a=SerialGetc&#40;hCom&#41;;<br />     SerialPutc&#40;hCom,0x6F&#41;; b=SerialGetc&#40;hCom&#41;; <br />     SerialPutc&#40;hCom,0x6F&#41;; c=SerialGetc&#40;hCom&#41;;<br />     SerialPutc&#40;hCom,0x74&#41;; d=SerialGetc&#40;hCom&#41;; <br />    <br /><br /><br />               if&#40;a==0x42 &amp;&amp; b==0x4f &amp;&amp; c==0x4f &amp;&amp; d==0x54&#41;&#123;SetStatusText&#40;&quot;Boot sequence OK&quot;&#41;;ROBONOVA.bootsequence=1;&#125;<br />            else&#123; <br />               sprintf&#40;sts,&quot;&#91;0%x&#93; Boot sequence strange: %x %x %x %x - RESTARTING&quot;,A,a,b,c,d&#41;;<br />               SetStatusText&#40;sts&#41;;<br />               Reboot&#40;&#41;;<br />            &#125;<br />       <br /> &#125;<br />void Servo_move&#40;int which,int position&#41;&#123;<br /> <br />     SerialPutc&#40;hCom,0xE6&#41;;SerialGetc&#40;hCom&#41;;      //move servo<br />     SerialPutc&#40;hCom,which&#41;;SerialGetc&#40;hCom&#41;;      //ktore serwo<br />     SerialPutc&#40;hCom,position&#41;;SerialGetc&#40;hCom&#41;;   //position<br /> <br />&#125;<br /><br /><br />void MOVEG6A&#40;int a, int b, int c, int d,int e,int f&#41;&#123;<br />SerialPutc&#40;hCom,0xEB&#41;;SerialGetc&#40;hCom&#41;;//SYNC MOVE<br />SerialPutc&#40;hCom,0&#41;;SerialGetc&#40;hCom&#41;;<br />SerialPutc&#40;hCom,6&#41;;SerialGetc&#40;hCom&#41;;<br /><br />SerialPutc&#40;hCom,a&#41;;SerialGetc&#40;hCom&#41;;<br />SerialPutc&#40;hCom,b&#41;;SerialGetc&#40;hCom&#41;;<br />SerialPutc&#40;hCom,c&#41;;SerialGetc&#40;hCom&#41;;<br />SerialPutc&#40;hCom,d&#41;;SerialGetc&#40;hCom&#41;;<br />SerialPutc&#40;hCom,e&#41;;SerialGetc&#40;hCom&#41;;<br />SerialPutc&#40;hCom,f&#41;;SerialGetc&#40;hCom&#41;;<br />&#125;<br /><br />void MOVEG6B&#40;int a, int b, int c, int d,int e, int f&#41;&#123;<br />SerialPutc&#40;hCom,0xEB&#41;;SerialGetc&#40;hCom&#41;;//SYNC MOVE<br />SerialPutc&#40;hCom,6&#41;;SerialGetc&#40;hCom&#41;;<br />SerialPutc&#40;hCom,6&#41;;SerialGetc&#40;hCom&#41;;<br />//<br />SerialPutc&#40;hCom,a&#41;;SerialGetc&#40;hCom&#41;;<br />SerialPutc&#40;hCom,b&#41;;SerialGetc&#40;hCom&#41;;<br />SerialPutc&#40;hCom,c&#41;;SerialGetc&#40;hCom&#41;;<br />SerialPutc&#40;hCom,d&#41;;SerialGetc&#40;hCom&#41;;<br />SerialPutc&#40;hCom,e&#41;;SerialGetc&#40;hCom&#41;;<br />SerialPutc&#40;hCom,f&#41;;SerialGetc&#40;hCom&#41;;<br />&#125;<br /><br />void MOVEG6C&#40;int a, int b, int c, int d,int e, int f&#41;&#123;<br />SerialPutc&#40;hCom,0xEB&#41;;SerialGetc&#40;hCom&#41;;//SYNC MOVE<br />SerialPutc&#40;hCom,12&#41;;SerialGetc&#40;hCom&#41;;<br />SerialPutc&#40;hCom,6&#41;;SerialGetc&#40;hCom&#41;;<br />//<br />SerialPutc&#40;hCom,a&#41;;SerialGetc&#40;hCom&#41;;<br />SerialPutc&#40;hCom,b&#41;;SerialGetc&#40;hCom&#41;;<br />SerialPutc&#40;hCom,c&#41;;SerialGetc&#40;hCom&#41;;<br />SerialPutc&#40;hCom,d&#41;;SerialGetc&#40;hCom&#41;;<br />SerialPutc&#40;hCom,0&#41;;SerialGetc&#40;hCom&#41;;   //servo IR<br />SerialPutc&#40;hCom,f&#41;;SerialGetc&#40;hCom&#41;;<br />&#125;<br /><br />void MOVEG6D&#40;int a, int b, int c, int d,int e, int f&#41;&#123;<br />SerialPutc&#40;hCom,0xEB&#41;;SerialGetc&#40;hCom&#41;;//SYNC MOVE<br />SerialPutc&#40;hCom,18&#41;;SerialGetc&#40;hCom&#41;;<br />SerialPutc&#40;hCom,6&#41;;SerialGetc&#40;hCom&#41;;<br />//<br />SerialPutc&#40;hCom,a&#41;;SerialGetc&#40;hCom&#41;;<br />SerialPutc&#40;hCom,b&#41;;SerialGetc&#40;hCom&#41;;<br />SerialPutc&#40;hCom,c&#41;;SerialGetc&#40;hCom&#41;;<br />SerialPutc&#40;hCom,d&#41;;SerialGetc&#40;hCom&#41;;<br />SerialPutc&#40;hCom,e&#41;;SerialGetc&#40;hCom&#41;;<br />SerialPutc&#40;hCom,f&#41;;SerialGetc&#40;hCom&#41;;<br />&#125;<br /><br /><br />void MOVE24&#40;int a, int b, int c, int d, int e ,int f, int g, int h, int i, int j , int k, int l,int m, int n,int o, int p, int q, int r, int s,int t, int u, int v, int w, int x&#41;&#123;<br />SerialPutc&#40;hCom,0xEB&#41;;SerialGetc&#40;hCom&#41;;//SYNC MOVE<br />SerialPutc&#40;hCom,0&#41;;SerialGetc&#40;hCom&#41;;<br />SerialPutc&#40;hCom,24&#41;;SerialGetc&#40;hCom&#41;;<br />//Off we go.<br />SerialPutc&#40;hCom,a&#41;;SerialGetc&#40;hCom&#41;;<br />SerialPutc&#40;hCom,b&#41;;SerialGetc&#40;hCom&#41;;<br />SerialPutc&#40;hCom,c&#41;;SerialGetc&#40;hCom&#41;;<br />SerialPutc&#40;hCom,d&#41;;SerialGetc&#40;hCom&#41;;<br />SerialPutc&#40;hCom,e&#41;;SerialGetc&#40;hCom&#41;;<br />SerialPutc&#40;hCom,f&#41;;SerialGetc&#40;hCom&#41;;<br />SerialPutc&#40;hCom,g&#41;;SerialGetc&#40;hCom&#41;;<br />SerialPutc&#40;hCom,h&#41;;SerialGetc&#40;hCom&#41;;<br />SerialPutc&#40;hCom,i&#41;;SerialGetc&#40;hCom&#41;;<br />SerialPutc&#40;hCom,j&#41;;SerialGetc&#40;hCom&#41;;<br />SerialPutc&#40;hCom,k&#41;;SerialGetc&#40;hCom&#41;;<br />SerialPutc&#40;hCom,0&#41;;SerialGetc&#40;hCom&#41;;      //servo iR<br />SerialPutc&#40;hCom,m&#41;;SerialGetc&#40;hCom&#41;;<br />SerialPutc&#40;hCom,n&#41;;SerialGetc&#40;hCom&#41;;<br />SerialPutc&#40;hCom,o&#41;;SerialGetc&#40;hCom&#41;;<br />SerialPutc&#40;hCom,p&#41;;SerialGetc&#40;hCom&#41;;<br />SerialPutc&#40;hCom,q&#41;;SerialGetc&#40;hCom&#41;;<br />SerialPutc&#40;hCom,r&#41;;SerialGetc&#40;hCom&#41;;<br />SerialPutc&#40;hCom,s&#41;;SerialGetc&#40;hCom&#41;;<br />SerialPutc&#40;hCom,t&#41;;SerialGetc&#40;hCom&#41;;<br />SerialPutc&#40;hCom,u&#41;;SerialGetc&#40;hCom&#41;;<br />SerialPutc&#40;hCom,v&#41;;SerialGetc&#40;hCom&#41;;<br />SerialPutc&#40;hCom,w&#41;;SerialGetc&#40;hCom&#41;;<br />SerialPutc&#40;hCom,x&#41;;SerialGetc&#40;hCom&#41;;<br /> <br />&#125;<br />void SYNCMOVE&#40;&#41;&#123;<br />int A,a,b,c,d,e;<br /> <br />    SerialPutc&#40;hCom,0xEB&#41;;SerialGetc&#40;hCom&#41;;//sync move<br />    SerialPutc&#40;hCom,0x06&#41;;SerialGetc&#40;hCom&#41;;// start from servo no<br />    SerialPutc&#40;hCom,0x02&#41;;SerialGetc&#40;hCom&#41;;// how many servoes ?<br />    SerialPutc&#40;hCom,0x64&#41;;SerialGetc&#40;hCom&#41;;// servo1 pos<br />   SerialPutc&#40;hCom,0x64&#41;;SerialGetc&#40;hCom&#41;;// servox pos<br /> <br />   sprintf&#40;sts,&quot;WRONG %x %x %x %x %x&quot;,A,b,c,d,e&#41;;SetStatusText&#40;sts&#41;;<br />      <br />&#125;<br /><br /><br />void Servo_enable&#40;int which&#41;&#123;<br />     SerialPutc&#40;hCom,0xE7&#41;;// turn on the servo<br />     SerialPutc&#40;hCom,which&#41;;//ktore serwo<br /> &#125;<br /><br />void AD_getdata&#40;int port&#41;&#123;<br />         int b=0;<br />        SerialPutc&#40;hCom,0xE2&#41;;  //Get data from AD<br />        SerialGetc&#40;hCom&#41;;<br />         SerialPutc&#40;hCom,port&#41;;  //Pobieramy wartosc z AD.port <br />        SerialGetc&#40;hCom&#41;;<br />        SerialPutc&#40;hCom,0x00&#41;;  //NULL        <br />        b=SerialGetc&#40;hCom&#41;;<br />        ROBONOVA.sensor&#91;port&#93;.value=b;<br /><br />&#125;<br /> <br /> <br />void Servo_setspeed&#40;int speed&#41;&#123;<br />SerialPutc&#40;hCom,0xE9&#41;;SerialGetc&#40;hCom&#41;;//funkcja predkosc serwa<br />SerialPutc&#40;hCom,speed&#41;;SerialGetc&#40;hCom&#41;;//predkosc<br /> &#125;<br /> <br /><br /><br />   //Konwertuje wartosc z czujnika na centymetry.<br />   float IR_centimeter&#40;int wartosc&#41;&#123;<br />        float oblicz=0;<br />        if&#40;wartosc&gt;0&#41;&#123;<br />        oblicz=&#40;1285/wartosc&#41;*1.1060;<br />        return oblicz;&#125;else return 0;<br />   &#125;<br /><br /><br /><br />int COM_open&#40;&#41;&#123;<br /><br />DCB dcb;<br />    BOOL fSuccess;<br />   char *pcCommPort = &quot;COM1&quot;;<br /><br />   hCom = CreateFile&#40; pcCommPort,<br />                    GENERIC_READ | GENERIC_WRITE,<br />                    0,    // must be opened with exclusive-access<br />                    NULL, // no security attributes<br />                    OPEN_EXISTING, // must use OPEN_EXISTING<br />                    0,    // not overlapped I/O<br />                    NULL  // hTemplate must be NULL for comm devices<br />                    &#41;;<br /><br />   if &#40;hCom == INVALID_HANDLE_VALUE&#41; <br />   &#123;<br />       // Handle the error.<br />       printf &#40;&quot;CreateFile failed with error %d.\n&quot;, GetLastError&#40;&#41;&#41;;<br />       return &#40;1&#41;;<br />   &#125;<br /><br />   // Build on the current configuration, and skip setting the size<br />   // of the input and output buffers with SetupComm.<br /><br />   fSuccess = GetCommState&#40;hCom, &amp;dcb&#41;;<br /><br />   if &#40;!fSuccess&#41; <br />   &#123;<br />      // Handle the error.<br />      printf &#40;&quot;GetCommState failed with error %d.\n&quot;, GetLastError&#40;&#41;&#41;;<br />      return &#40;2&#41;;<br />   &#125;<br /><br />   // Fill in DCB: 57,600 bps, 8 data bits, no parity, and 1 stop bit.<br /><br />   dcb.BaudRate = CBR_9600;     // set the baud rate<br />   dcb.ByteSize = 8;             // data size, xmit, and rcv<br />   dcb.Parity = NOPARITY;        // no parity bit<br />   dcb.StopBits = ONESTOPBIT;    // one stop bit<br /><br />   fSuccess = SetCommState&#40;hCom, &amp;dcb&#41;;<br /><br />   if &#40;!fSuccess&#41; <br />   &#123;<br />      // Handle the error.<br />     MessageBox&#40;0,&quot;ERROR COM&quot;,&quot;&quot;,MB_OK&#41;;<br />      return &#40;3&#41;;<br />   &#125;<br /><br /> <br /> <br />  //  hThread_networking = CreateThread&#40; NULL, 0, THREAD_listenpackets, NULL,  0, &amp;threadId_networking &#41;; <br />    return &#40;0&#41;;<br /><br />   &#125;<br />int SerialGetc&#40;HANDLE hCom&#41;<br />&#123;<br />char rxchar=0;<br />BOOL bReadRC;<br />  char z&#91;10&#93;;<br /> static DWORD iBytesRead=NULL;;<br /> memset&#40;z,0,sizeof&#40;z&#41;&#41;;<br /><br />   bReadRC = ReadFile&#40;hCom, &amp;rxchar, 1, &amp;iBytesRead, NULL&#41;;  <br /><br />   if&#40;bReadRC!=TRUE || iBytesRead&lt;1&#41;&#123;<br />      Sleep&#40;1&#41;;<br />      SerialGetc&#40;hCom&#41;;<br />    &#125;else&#123;<br />  <br />  sprintf&#40;z,&quot;%i&quot;,rxchar&#41;;<br />   return atoi&#40;z&#41;;<br />  &#125;<br /> <br />&#125;<br /><br />void SerialPutc&#40;HANDLE hCom, char txchar&#41;<br />&#123;<br />BOOL bWriteRC;<br />static DWORD iBytesWritten;<br />bWriteRC = WriteFile&#40;hCom, &amp;txchar, 1, &amp;iBytesWritten,NULL&#41;;<br />if&#40;bWriteRC!=TRUE || iBytesWritten&lt;1&gt;=320 &#41;&#123;<br />               sprintf&#40;sts,&quot;%x%x = %i &quot;,b,a,c&#41;;<br />               SetStatusText&#40;sts&#41;;<br />               ROBONOVA.servo&#91;wartosc-320&#93;.value=c;<br /><br />            &#125;<br />          <br />            /*<br /><br />To keep you going: <br />The desired positions are stored in 24 memory locations from &amp;H300. <br />The current positions are stored in 24 memory locations from &amp;H320 <br />They can both be PEEKed there. <br /><br />When a move is started a bit is cleared in locations &amp;H4E3, &amp;H4E4, &amp;H4E5. <br />there is one bit per servo starting at bit 0 in &amp;H4E3. <br />When the current = the desired, then the corresponding bit is set. <br />A move is complete when all 3 bytes = &amp;HFF <br /><br /><br />            */<br />         //   sprintf&#40;PROCESSOR_status,&quot;Memory red: 0x%x &#91;%x,%x value: %i&#93;&quot;,a,SerialGetc&#40;hCom&#41;,SerialGetc&#40;hCom&#41;,SerialGetc&#40;hCom&#41; &#41;; <br /><br />         break;<br /><br />     <br />         case 0xffffffd2:<br />            a=0;b=0;c=0;d=0;<br />            a=SerialGetc&#40;hCom&#41;;<br />            b=SerialGetc&#40;hCom&#41;;<br />            <br />            ROBONOVA.servo&#91;a&#93;.value=b;<br />            sprintf&#40;GL_status,&quot;%i=%i&quot;,a,b&#41;;<br /><br /><br />         break;<br /><br />         case 0xffffffe2:<br /><br />             a=0;b=0;c=0;d=0;<br />             a=SerialGetc&#40;hCom&#41;;<br />             b=SerialGetc&#40;hCom&#41;;<br />            <br />            sprintf&#40;sts,&quot;&#91;0x%x&#93; Data read from AD.%i, value=%i\n&quot;,A,a,b&#41;;<br />            SetStatusText&#40;sts&#41;;<br />            ROBONOVA.sensor&#91;a&#93;.value=b;<br />          <br />         break;<br /><br />         case 0xffffffe9:<br />            a=0;b=0;c=0;d=0;<br />            a=SerialGetc&#40;hCom&#41;;<br />            sprintf&#40;sts,&quot;&#91;0x%x&#93; Servo speed to %x&quot;,A,a&#41;;<br />            SetStatusText&#40;sts&#41;;<br /><br />         break;<br />         case 0xffffffe6:<br />            a=0;b=0;c=0;d=0;<br />            a=SerialGetc&#40;hCom&#41;;<br />            b=SerialGetc&#40;hCom&#41;;<br />            sprintf&#40;sts,&quot;&#91;0x%x&#93; Servo: %i to position %i&quot;,A,a,b&#41;;<br />            SetStatusText&#40;sts&#41;;<br />         break;<br />         case 0xffffffe7:<br />            a=0;b=0;c=0;d=0;<br />            a=SerialGetc&#40;hCom&#41;;<br />            b=SerialGetc&#40;hCom&#41;;<br />            sprintf&#40;sts,&quot;&#91;0x%x&#93; Servo: %i Enabled. %x&quot;,A,a,b&#41;;<br />            SetStatusText&#40;sts&#41;;<br />            ROBONOVA.servo&#91;a&#93;.enabled=1;<br /><br />         break;<br /><br /><br />    <br />       <br />        <br /><br />      &#125; <br /><br />      <br />  <br /><br />   &#125;<br />   <br />return 0;<br />&#125;<br /> </code></dd></dl><p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=946">roboTT</a> — Wed Aug 12, 2009 7:32 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[roboninja]]></name></author>
<updated>2009-07-20T03:48:28+01:00</updated>
<published>2009-07-20T03:48:28+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=3644&amp;p=20795#p20795</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=3644&amp;p=20795#p20795"/>
<title type="html"><![CDATA[Real-time RoboNova PC Interface]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=3644&amp;p=20795#p20795"><![CDATA[
The RoBoard looks like a pretty sweet solution. I'll have to pick one up and play with it a bit. I'll keep you guys posted<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=1533">roboninja</a> — Mon Jul 20, 2009 3:48 am</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Hephaestus]]></name></author>
<updated>2009-07-11T01:12:28+01:00</updated>
<published>2009-07-11T01:12:28+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=3644&amp;p=20684#p20684</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=3644&amp;p=20684#p20684"/>
<title type="html"><![CDATA[Real-time RoboNova PC Interface]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=3644&amp;p=20684#p20684"><![CDATA[
OOOPPPSSS   should have read a bit more - only works with standard servos - but the idea is a winner.<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=886">Hephaestus</a> — Sat Jul 11, 2009 1:12 am</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Hephaestus]]></name></author>
<updated>2009-07-10T21:43:22+01:00</updated>
<published>2009-07-10T21:43:22+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=3644&amp;p=20683#p20683</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=3644&amp;p=20683#p20683"/>
<title type="html"><![CDATA[Real-time RoboNova PC Interface]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=3644&amp;p=20683#p20683"><![CDATA[
this could get costly but <br /><!-- m --><a class="postlink" href="http://www.sparkfun.com/commerce/product_info.php?products_id=9014">http://www.sparkfun.com/commerce/produc ... ts_id=9014</a><!-- m --> <br />connected to an arduino and wireless com via bluesmirf or other radio tech would eliminate the current controller<br /><br />my current setup with the blueSmirf - as you should know - only replaces the IR remote - no comm between<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=886">Hephaestus</a> — Fri Jul 10, 2009 9:43 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[PedroR]]></name></author>
<updated>2009-07-08T13:13:12+01:00</updated>
<published>2009-07-08T13:13:12+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=3644&amp;p=20628#p20628</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=3644&amp;p=20628#p20628"/>
<title type="html"><![CDATA[Real-time RoboNova PC Interface]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=3644&amp;p=20628#p20628"><![CDATA[
Would 't it be possible to replace the cable with a bluetooth or zigbee modem for wireless freedom?<br /><br />Something like Bluesmirf  that offers transparent replacement for serial comm?<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=1061">PedroR</a> — Wed Jul 08, 2009 1:13 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[roboTT]]></name></author>
<updated>2009-07-07T22:28:23+01:00</updated>
<published>2009-07-07T22:28:23+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=3644&amp;p=20618#p20618</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=3644&amp;p=20618#p20618"/>
<title type="html"><![CDATA[Real-time RoboNova PC Interface]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=3644&amp;p=20618#p20618"><![CDATA[
I wrote a W32 application that was talking to RN1 MRC board using serial - in clear C.<br /><br />It was really working fine, i could read sensor data, speak to servos...<br /><br />But?<br />The problem was the cable running around with the bot so i dropped that.<br /><br /><br />Ill try to find my code somewhere and i'll post it.<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=946">roboTT</a> — Tue Jul 07, 2009 10:28 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[PedroR]]></name></author>
<updated>2009-06-26T14:26:14+01:00</updated>
<published>2009-06-26T14:26:14+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=3644&amp;p=20463#p20463</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=3644&amp;p=20463#p20463"/>
<title type="html"><![CDATA[Real-time RoboNova PC Interface]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=3644&amp;p=20463#p20463"><![CDATA[
Hi roboninja<br /><br />Depending on your programming skills I believe the Roboard will pose a great alternative for your robonova.<br /><br />It is a bit larger than the original Robonova controller board (the size of the robosard is similar to the size of a credit card; only a bit larger but the height is similar). If you check out the roboard docs here <!-- m --><a class="postlink" href="http://robosavvy.com/site/index.php?option=com_content&amp;task=view&amp;id=183&amp;Itemid=135">http://robosavvy.com/site/index.php?opt ... Itemid=135</a><!-- m --> you get the full specs.<br /><br />The board has 24 PWM interfaces so it should be compatible with the Robonova servos.<br />In the case of robonova it is a drop in replacement: you connect the Robonova battery to the roboard and connect the servos and the board will power the servos and do all the PWM communication.<br /><br />However - and this is where programming skill is needed - you will need to program the board for your own usage.<br />The board is a full PC so it can run Windows XP and Linux and you can use Visual Studio or gcc to program it.<br />There is also an open source library that encapsulates all the PWM functions and communication. Additionally you can send RAW PWM pulses (although this is not really needed as the library implements the most common functions).<br />The library also implements techniques to capture static postures (reading the servo position through PWM instructions) and to <span style="font-weight: bold">capture dynamic movements.</span><br /><br />The capture of Dynamic movements is quite unique: instead of capturing static poses and then animating them, you can capture the full fluid motion and replay it later.<br /><br />If you need further technical information Please let me know.<br />The page here <!-- m --><a class="postlink" href="http://robosavvy.com/site/index.php?option=com_content&amp;task=view&amp;id=183&amp;Itemid=135#Open_Source_Library">http://robosavvy.com/site/index.php?opt ... ce_Library</a><!-- m --> includes a link to a full description of the Software Library features.<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=1061">PedroR</a> — Fri Jun 26, 2009 2:26 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[limor]]></name></author>
<updated>2009-06-26T11:10:55+01:00</updated>
<published>2009-06-26T11:10:55+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=3644&amp;p=20461#p20461</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=3644&amp;p=20461#p20461"/>
<title type="html"><![CDATA[Real-time RoboNova PC Interface]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=3644&amp;p=20461#p20461"><![CDATA[
Check out the new Ro-Board. It puts the PC on the robot so to speak.<br />designed specifically for multi-servo humanoids and closed-loop control.<br />Not sure about size compatibility but i'm sure someone will be able to provide those measurements.<br /><!-- m --><a class="postlink" href="http://robosavvy.com/forum/viewforum.php?f=17">http://robosavvy.com/forum/viewforum.php?f=17</a><!-- m --><p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=2">limor</a> — Fri Jun 26, 2009 11:10 am</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[roboninja]]></name></author>
<updated>2009-06-25T23:28:40+01:00</updated>
<published>2009-06-25T23:28:40+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=3644&amp;p=20456#p20456</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=3644&amp;p=20456#p20456"/>
<title type="html"><![CDATA[Alternative Controller?]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=3644&amp;p=20456#p20456"><![CDATA[
I read some older posts on the forum about an open source controller as an alternative to the MR-C3024 but it didn't look like anything ever came of it. Do you know if anyone has successfully replaced the C3024 with something that I might be able to communicate with a bit quicker?<br /><br />I read on another forum that, for instance, the Lynxmotion SSC-32 servo controller will work with the Hitec HSR-8498 servos so perhaps that could be a possibility. Think that might be a valid route to take?<br /><br />Thanks again!<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=1533">roboninja</a> — Thu Jun 25, 2009 11:28 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[i-Bot]]></name></author>
<updated>2009-06-25T09:37:42+01:00</updated>
<published>2009-06-25T09:37:42+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=3644&amp;p=20430#p20430</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=3644&amp;p=20430#p20430"/>
<title type="html"><![CDATA[Real-time RoboNova PC Interface]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=3644&amp;p=20430#p20430"><![CDATA[
There are some posts earlier in this forum from people who have done this.<br /><br />The challenge is to get it to work fast enough. The serial link is a 9600 and the protocol is a ping pong with the PC and RoboNova exchanging one byte at a time. The reason for this protocol is that the UART on the RoboNova is not interrupt driven and has limited buffer. The RoboNova Processor is busy managing the servos or other activity for long periods.<br /><br />To get best performance you may need to:<br />1) Make any PC adjustments to USB or serial to maximise performance on single byte messages. Bluetooth seems to make this worse.<br /><br />2) Stop the Robobasic interpreter in the RoboNova<br /><br />3) Take care in using other serial instructions which take a long time ( reading servo positions)<br /><br />4) Use Point to Point on RoboNova to interpolate between poses<br /><br />I did raise the serial speed to 115K, but the latency meant the improvement was small.<br /><br />I would expect you should be able to make a sync move about every 100mSec.<br /><br />Some errors in my original document have also been described and corrected in this forum.<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=159">i-Bot</a> — Thu Jun 25, 2009 9:37 am</p><hr />
]]></content>
</entry>
</feed>