robot arm

Dependencies:   mbed BufferedSerial

Files at this revision

API Documentation at this revision

Comitter:
howanglam3
Date:
Sat Mar 27 07:53:20 2021 +0000
Commit message:
arm move;

Changed in this revision

BufferedSerial.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r 07a5cc567526 BufferedSerial.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/BufferedSerial.lib	Sat Mar 27 07:53:20 2021 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/howanglam3/code/BufferedSerial/#1d0446cdfcb0
diff -r 000000000000 -r 07a5cc567526 main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sat Mar 27 07:53:20 2021 +0000
@@ -0,0 +1,79 @@
+#include "mbed.h"
+#include "BufferedSerial.h"
+
+
+#define GET_LOW_char(A) (uint8_t)((A))
+//Macro function  get lower 8 bits of A
+#define GET_HIGH_char(A) (uint8_t)((A) >> 8)
+//Macro function  get higher 8 bits of A
+#define char_TO_HW(A, B) ((((uint16_t)(A)) << 8) | (uint8_t)(B))
+//put A as higher 8 bits   B as lower 8 bits   which amalgamated into 16 bits integer
+#define ID1 1
+#define ID2 2
+#define ID3 3
+#define ID4 4
+
+#define LOBOT_SERVO_FRAME_HEADER         0x55
+#define LOBOT_SERVO_MOVE_TIME_WRITE      1
+
+using namespace std;
+
+BufferedSerial serial_port(PA_9, PA_10, 16, 16); // tx, rx, buffer size, multiple
+
+DigitalOut myled(LED1);
+
+char LobotCheckSum(char buf[])
+{
+  char i;
+  uint16_t temp = 0;
+  for (i = 2; i < buf[3] + 2; i++) {
+    temp += buf[i];
+  }
+  temp = ~temp;
+  i = (char)temp;
+  return i;
+}
+
+
+void LobotSerialoneServoMove(uint8_t id, int16_t position, uint16_t time)
+{
+  char buf[10];
+  if(position < 0)
+    position = 0;
+  if(position > 1000)
+    position = 1000;
+  buf[0] = buf[1] = LOBOT_SERVO_FRAME_HEADER;
+  buf[2] = 0x08;
+  buf[3] = 0x03;
+  buf[4] = 0x01;
+  buf[5] = GET_LOW_char(time);
+  buf[6] = GET_HIGH_char(time);
+  buf[7] = id;
+  buf[8] = GET_LOW_char(position);
+  buf[9] = GET_HIGH_char(position);
+  serial_port.write(buf, 10);
+}
+
+
+int main() {
+    //serial_port.set_baud(115200);
+    //serial_port.set_format(8,BufferedSerial::None,1);
+    //char buf[10]={0};
+    while(1){
+        myled = 1;
+        LobotSerialoneServoMove(ID1, 700, 1000);//id, pos, time
+        LobotSerialoneServoMove(ID2, 500, 1000);
+        wait_ms(1000);
+        LobotSerialoneServoMove(ID1, 500, 1000);
+        LobotSerialoneServoMove(ID2, 600, 1000);
+        wait_ms(1000);
+        LobotSerialoneServoMove(ID1, 900, 1000);
+        LobotSerialoneServoMove(ID2, 700, 1000);
+        wait_ms(1000);
+        LobotSerialoneServoMove(ID1, 500, 1000);
+        LobotSerialoneServoMove(ID2, 600, 1000);
+        wait_ms(1000);
+        myled = 0;
+        wait_ms(1000);
+    }
+}
\ No newline at end of file
diff -r 000000000000 -r 07a5cc567526 mbed.bld
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Sat Mar 27 07:53:20 2021 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400
\ No newline at end of file