{"id":24233,"date":"2019-09-05T14:41:21","date_gmt":"2019-09-05T06:41:21","guid":{"rendered":"\/blog\/?p=24233"},"modified":"2020-11-04T12:24:56","modified_gmt":"2020-11-04T04:24:56","slug":"get-started-with-the-grove-16-channel-pwm-driver-pca9685-and-control-your-own-robotic-arm","status":"publish","type":"post","link":"https:\/\/www.seeedstudio.com\/blog\/2019\/09\/05\/get-started-with-the-grove-16-channel-pwm-driver-pca9685-and-control-your-own-robotic-arm\/","title":{"rendered":"How to use Grove &#8211; 16-Channel PWM Driver (PCA9685) to Control Robotic Arm!"},"content":{"rendered":"\n<p>Have you ever encountered the situation where you want to build your own robotics projects using an Arduino, but failed to do so with only just an Arduino because of the limited number of PWM outputs it has? <\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/blog.seeedstudio.com\/wp-content\/uploads\/2019\/09\/thumb.jpg\" alt=\"\" width=\"502\" height=\"282\"\/><\/figure><\/div>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>The solution to this will be to use a PWM driver such as the <a href=\"https:\/\/www.seeedstudio.com\/Grove-16-Channel-PWM-Driver-PCA9685.html\">Grove &#8211; 16-Channel PWM Driver (PCA9685)<\/a> which is a 12-bit PWM driver based on the NXP PCA9685 and can drive up to 16 servos with an external power supply of 5V. This PWM Driver can also be used to control LEDs. <\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><a href=\"https:\/\/www.seeedstudio.com\/Grove-16-Channel-PWM-Driver-PCA9685-p-322\"><img decoding=\"async\" src=\"https:\/\/blog.seeedstudio.com\/wp-content\/uploads\/2019\/09\/edited-1030x769.png\" alt=\"\" class=\"wp-image-24241\" width=\"264\" height=\"197\" srcset=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/edited-1030x769.png 1030w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/edited-300x224.png 300w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/edited-768x573.png 768w\" sizes=\"(max-width: 264px) 100vw, 264px\" \/><\/a><figcaption> <br>Grove &#8211; 16-Channel PWM Driver (PCA9685) <\/figcaption><\/figure><\/div>\n\n\n\n<p>When you want to connect more than 16 servos at the same time, you can connect these drivers in series for up to 62 drivers which will be connected to the same I2C bus. <\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What is\nPWM?<\/strong><\/h2>\n\n\n\n<p>PWM stands for\nPulse Width Modulation. Normally there are two different kinds of signals:\nDigital and Analog. Digital signals are \u201c0\u201d or \u201c1\u201d, \u201cOFF\u201d or \u201cON\u201d and Analog\nsignals can be ON, OFF or have an infinite number of positions between 0 and 1.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" width=\"1030\" height=\"184\" src=\"https:\/\/blog.seeedstudio.com\/wp-content\/uploads\/2019\/09\/signals-1030x184.png\" alt=\"\" class=\"wp-image-24242\" srcset=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/signals-1030x184.png 1030w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/signals-300x54.png 300w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/signals-768x137.png 768w\" sizes=\"(max-width: 1030px) 100vw, 1030px\" \/><figcaption>Digital vs Analog Signal<\/figcaption><\/figure>\n\n\n\n<p>Computers can only understand 0\u2019s and 1\u2019s which is digital. So finally, the MCU (Microcontroller Unit) can only understand digital input. Once you have Analog inputs from your sensors, the Analog signals (ex: &#8211; from temperature sensors) have to be first translated into Digital signals through an Analog-to-digital converter and then the MCU can recognize that signal.<\/p>\n\n\n\n<p>On the other hand, PWM can be explained as the reverse of that. It is a way of controlling analog devices using a digital output. But PWM is not truly an Analog output, however, it pretends to be an Analog like the signal result, by applying power in pulses.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p><strong>Here is an example to explain it further:<\/strong><\/p>\n\n\n\n<p>Apply maximum\nvoltage to a motor for a brief amount of time, and then turn it off. Repeat\nthis by changing the time interval between the turning off and turning on. Even\nthough we are applying and removing voltage many times within an interval, it creates\na response which is near to being Analog. <\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.seeedstudio.com\/wp-content\/uploads\/2019\/09\/15675852741.png\" alt=\"\" class=\"wp-image-24244\" width=\"442\" height=\"221\" srcset=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/15675852741.png 532w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/15675852741-300x151.png 300w\" sizes=\"(max-width: 442px) 100vw, 442px\" \/><figcaption>Blue Lines are PWM outputs from MCU whereas the Red Line is the average voltage<\/figcaption><\/figure><\/div>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>How\nservos are controlled using PWM?<\/strong><\/h2>\n\n\n\n<p>A Servo\nMotor is a low-speed, high-torque motor and comes in different sizes. These\nmotors are often limited to the following rotation angles: 180, 270 or 90 degrees and are\ncontrolled by an electrical signal which determines the amount of movement of\nthe shaft. This signal is a PWM signal and the amount of movement of the shaft is\ndependent upon the duration of the pulse sent via the control wire.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.seeedstudio.com\/wp-content\/uploads\/2019\/09\/a867f691-8205-47fa-9837-0e694316ddf2-1-1030x305.jpg\" alt=\"\" class=\"wp-image-24251\" width=\"488\" height=\"144\" srcset=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/a867f691-8205-47fa-9837-0e694316ddf2-1-1030x305.jpg 1030w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/a867f691-8205-47fa-9837-0e694316ddf2-1-300x89.jpg 300w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/a867f691-8205-47fa-9837-0e694316ddf2-1-768x228.jpg 768w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/a867f691-8205-47fa-9837-0e694316ddf2-1.jpg 1036w\" sizes=\"(max-width: 488px) 100vw, 488px\" \/><figcaption>Diffrerent Types of Servo Motors<\/figcaption><\/figure><\/div>\n\n\n\n<p>Normally a servo\nmotor expects to see a pulse every 20 milliseconds (ms) and the length of the\npulse will determine how far the motor turns. For example, a 1.5ms pulse will\nmake the motor turn to the 90\u00b0 position. Shorter than 1.5ms moves it in the counterclockwise\ndirection toward the 0\u00b0 position, and any longer than 1.5ms will turn the servo\nin a clockwise direction toward the 180\u00b0 position.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.seeedstudio.com\/wp-content\/uploads\/2019\/09\/pulse-1030x605.png\" alt=\"\" class=\"wp-image-24252\" width=\"504\" height=\"295\" srcset=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/pulse-1030x605.png 1030w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/pulse-300x176.png 300w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/pulse-768x451.png 768w\" sizes=\"(max-width: 504px) 100vw, 504px\" \/><\/figure><\/div>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>How to test the Grove &#8211; 16-Channel PWM Driver (PCA9685) with a single servo motor?<\/strong><\/h2>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Hardware\nNeeded<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/www.seeedstudio.com\/Seeeduino-Lotus-V1-1-ATMega328-Board-with-Grove-Interface.html\">Seeeduino Lotus<\/a> \/Arduino (If Arduino, needs Base Shield)<\/li><li><a href=\"https:\/\/www.seeedstudio.com\/Grove-16-Channel-PWM-Driver-PCA9685-p-3221.html\">Grove &#8211; 16-Channel PWM Driver (PCA9685)<\/a><\/li><li>A Servo Motor<\/li><\/ul>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Software Setup<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\"><li>We will be using Arduino IDE to communicate with Seeeduino\/ Arduino boards. If you have not already installed Arduino, please do so by visiting the following URL: <a href=\"https:\/\/www.arduino.cc\/\">https:\/\/www.arduino.cc\/<\/a><\/li><li> Then go to Software &gt; Downloads<\/li><\/ul>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.seeedstudio.com\/wp-content\/uploads\/2019\/09\/1-1.png\" alt=\"\" class=\"wp-image-24255\" width=\"390\" height=\"116\" srcset=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/1-1.png 355w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/1-1-300x90.png 300w\" sizes=\"(max-width: 390px) 100vw, 390px\" \/><figcaption>Software &gt; Downloads<\/figcaption><\/figure><\/div>\n\n\n\n<ul class=\"wp-block-list\"><li>Download the Arduino IDE according to your operating system and Install. Another website will be re-directed, and simply click \u201cJust Download\u201d. <\/li><\/ul>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.seeedstudio.com\/wp-content\/uploads\/2019\/09\/new-1.png\" alt=\"\" class=\"wp-image-24256\" width=\"267\" height=\"41\" srcset=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/new-1.png 418w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/new-1-300x45.png 300w\" sizes=\"(max-width: 267px) 100vw, 267px\" \/><figcaption>Click &#8220;JUST DOWNLOAD&#8221;<\/figcaption><\/figure><\/div>\n\n\n\n<ul class=\"wp-block-list\"><li>Install the Arduino IDE following the on-screen installing instructions.<\/li><\/ul>\n\n\n\n<ul class=\"wp-block-list\"><li>Open Arduino IDE\nand go to Sketch &gt; Include Library &gt; Manage Libraries\u2026<\/li><\/ul>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.seeedstudio.com\/wp-content\/uploads\/2019\/09\/2.png\" alt=\"\" class=\"wp-image-24257\" width=\"530\" height=\"153\" srcset=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/2.png 902w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/2-300x86.png 300w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/2-768x221.png 768w\" sizes=\"(max-width: 530px) 100vw, 530px\" \/><\/figure><\/div>\n\n\n\n<ul class=\"wp-block-list\"><li>Type \u201cSeeed\nPCA9685\u201d in the text box and click install.<\/li><\/ul>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.seeedstudio.com\/wp-content\/uploads\/2019\/09\/3.png\" alt=\"\" class=\"wp-image-24258\" width=\"575\" height=\"115\" srcset=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/3.png 946w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/3-300x60.png 300w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/3-768x154.png 768w\" sizes=\"(max-width: 575px) 100vw, 575px\" \/><\/figure><\/div>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Hardware\nSetup<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li>Connect one end of the Grove cable to Grove &#8211; 16-Channel PWM Driver (PCA9685) and the other end to the I2C port of the Seeeduino Lotus\/ Base Shield. <\/li><\/ul>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.seeedstudio.com\/wp-content\/uploads\/2019\/09\/2-1030x580.jpg\" alt=\"\" class=\"wp-image-24273\" width=\"435\" height=\"245\" srcset=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/2-1030x580.jpg 1030w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/2-300x169.jpg 300w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/2-768x432.jpg 768w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/2-750x420.jpg 750w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/2-1140x641.jpg 1140w\" sizes=\"(max-width: 435px) 100vw, 435px\" \/><figcaption>Grove cable connected to I2C port of Grove &#8211; 16-Channel PWM Driver (PCA9685) <\/figcaption><\/figure><\/div>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.seeedstudio.com\/wp-content\/uploads\/2019\/09\/1-1030x580.jpg\" alt=\"\" class=\"wp-image-24272\" width=\"438\" height=\"246\" srcset=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/1-1030x580.jpg 1030w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/1-300x169.jpg 300w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/1-768x432.jpg 768w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/1-750x420.jpg 750w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/1-1140x641.jpg 1140w\" sizes=\"(max-width: 438px) 100vw, 438px\" \/><figcaption> <br>Grove cable connected to I2C  port of Base Shield<\/figcaption><\/figure><\/div>\n\n\n\n<ul class=\"wp-block-list\"><li>Then connect a Servo Motor to P1 port of the PWM Driver.<\/li><\/ul>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.seeedstudio.com\/wp-content\/uploads\/2019\/09\/DSC09996-1030x587.jpg\" alt=\"\" class=\"wp-image-24288\" width=\"405\" height=\"230\" srcset=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/DSC09996-1030x587.jpg 1030w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/DSC09996-300x171.jpg 300w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/DSC09996-768x438.jpg 768w\" sizes=\"(max-width: 405px) 100vw, 405px\" \/><figcaption>Servo Motor connected to P1 port of PWM Driver<\/figcaption><\/figure><\/div>\n\n\n\n<ul class=\"wp-block-list\"><li>Insert two wires into the &#8220;Power In&#8221; port by pushing it down and releasing.<\/li><\/ul>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.seeedstudio.com\/wp-content\/uploads\/2019\/09\/3-1030x580.jpg\" alt=\"\" class=\"wp-image-24274\" width=\"438\" height=\"247\" srcset=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/3-1030x580.jpg 1030w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/3-300x169.jpg 300w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/3-768x432.jpg 768w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/3-1140x641.jpg 1140w\" sizes=\"(max-width: 438px) 100vw, 438px\" \/><figcaption>Inserting 2 wires into the &#8220;Power In&#8221; port<\/figcaption><\/figure><\/div>\n\n\n\n<ul class=\"wp-block-list\"><li>Provide 5V power through that wire.<\/li><li>Connect Seeeduino Lotus\/ Arduino to power.<\/li><\/ul>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Now that everything is set up, jump back to the Arduino IDE and paste the following code inside the IDE.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include \"PCA9685.h\"\n#include &lt;Wire.h>\n\nServoDriver servo;\n\nvoid setup()\n{\n    \/\/ join I2C bus (I2Cdev library doesn't do this automatically)\n    Wire.begin();\n    Serial.begin(9600);\n    servo.init(0x7f);\n    \/\/ uncomment this line if you need to use a special servo\n    \/\/ servo.setServoPulseRange(600,2400,180);\n}\n\nvoid loop()\n{\n  servo.setAngle(1, 0);\n  delay(1000);\n  servo.setAngle(1, 180);\n  delay(1000);\n        \n}<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Choose the correct board and port by visitng &#8220;Tools &gt; Board&#8221; and &#8220;Tools&gt; Port&#8221;.<\/li><\/ul>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.seeedstudio.com\/wp-content\/uploads\/2019\/09\/2019-09-05.png\" alt=\"\" class=\"wp-image-24277\" width=\"364\" height=\"182\" srcset=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/2019-09-05.png 673w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/2019-09-05-300x150.png 300w\" sizes=\"(max-width: 364px) 100vw, 364px\" \/><figcaption>Choosing the correct board<\/figcaption><\/figure><\/div>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.seeedstudio.com\/wp-content\/uploads\/2019\/09\/2019-09-05-1.png\" alt=\"\" class=\"wp-image-24276\" width=\"362\" height=\"199\" srcset=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/2019-09-05-1.png 520w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/2019-09-05-1-300x166.png 300w\" sizes=\"(max-width: 362px) 100vw, 362px\" \/><figcaption>Choosing the correct port<\/figcaption><\/figure><\/div>\n\n\n\n<ul class=\"wp-block-list\"><li>Then hit the <strong>Upload<\/strong> button.<\/li><\/ul>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.seeedstudio.com\/wp-content\/uploads\/2019\/09\/2019-09-05-2.png\" alt=\"\" class=\"wp-image-24278\" width=\"212\" height=\"78\"\/><figcaption>Hit <strong>Upload<\/strong> Button<\/figcaption><\/figure><\/div>\n\n\n\n<p>If you followed the setups properly, you will see the servo rotate 180 degrees clockwise and rotates back 180 degrees anti-clockwise.<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>How to make your own Robotic Arm work with four servos?<\/strong><\/h2>\n\n\n\n<p>Let\u2019s have\nsome more fun with this PWM driver!<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Hardware Used<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/www.seeedstudio.com\/Seeeduino-Lotus-V1-1-ATMega328-Board-with-Grove-Interface.html\">Seeeduino<\/a> \/Arduino <\/li><li><a href=\"https:\/\/www.seeedstudio.com\/Base-Shield-V2.html\">Base Shield <\/a><\/li><li><a href=\"https:\/\/www.seeedstudio.com\/Grove-16-Channel-PWM-Driver-PCA9685-p-3221.html\">Grove &#8211; 16-Channel PWM Driver (PCA9685)<\/a><\/li><li>4 Servo Motors<\/li><li><a href=\"https:\/\/www.seeedstudio.com\/Grove-Rotary-Angle-Sensor.html\">4 Grove \u2013 Rotary Angle Sensors<\/a><\/li><li>Robotic Arm Frame<\/li><\/ul>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Hardware\nSetup<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\"><li>Connect Grove &#8211; 16-Channel PWM Driver (PCA9685) to the I2C port of the Seeeduino \/Base Shield.<\/li><li>Then connect four servos from port P1 to P4 to the PWM Driver.<\/li><\/ul>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.seeedstudio.com\/wp-content\/uploads\/2019\/09\/DSC09999-1030x672.jpg\" alt=\"\" class=\"wp-image-24289\" width=\"394\" height=\"257\" srcset=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/DSC09999-1030x672.jpg 1030w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/DSC09999-300x196.jpg 300w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/DSC09999-768x501.jpg 768w\" sizes=\"(max-width: 394px) 100vw, 394px\" \/><figcaption>Four servos connected to pins P1 to P4 on the PWM Driver<\/figcaption><\/figure><\/div>\n\n\n\n<ul class=\"wp-block-list\"><li>Connect four Grove \u2013 Rotary Angle Sensors from ports A0 to A3 to the Base Shield.<\/li><\/ul>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.seeedstudio.com\/wp-content\/uploads\/2019\/09\/DSC00002-1030x384.jpg\" alt=\"\" class=\"wp-image-24290\" width=\"501\" height=\"187\" srcset=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/DSC00002-1030x384.jpg 1030w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/DSC00002-300x112.jpg 300w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/DSC00002-768x286.jpg 768w\" sizes=\"(max-width: 501px) 100vw, 501px\" \/><figcaption>Grove &#8211; Rotary Angle Sensors<\/figcaption><\/figure><\/div>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.seeedstudio.com\/wp-content\/uploads\/2019\/09\/DSC00001-1030x580.jpg\" alt=\"\" class=\"wp-image-24291\" width=\"502\" height=\"281\" srcset=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/DSC00001-300x169.jpg 300w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/DSC00001-768x432.jpg 768w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/DSC00001-750x420.jpg 750w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/DSC00001-1140x641.jpg 1140w\" sizes=\"(max-width: 502px) 100vw, 502px\" \/><figcaption>Rotary Angle Sensors connected from A0 to A3<\/figcaption><\/figure><\/div>\n\n\n\n<ul class=\"wp-block-list\"><li>Insert two wires into the &#8220;Power In&#8221; port by pushing it down and releasing.<\/li><li>Provide 5V power through that wire.<\/li><li>Connect Seeeduino Lotus\/ Arduino to power.<\/li><\/ul>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Software\nSetup <\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\"><li>Setup the software as the previous example<\/li><li> Upload the following code into the Arduino IDE <\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>#include \"PCA9685.h\"\n#include &lt;Wire.h>\n\nServoDriver servo;\n#define RotarySensor_1 A0\n#define RotarySensor_2 A1\n#define RotarySensor_3 A2\n#define RotarySensor_4 A3\n\nvoid setup()\n{\n  \/\/ join I2C bus (I2Cdev library doesn't do this automatically)\n  Wire.begin();\n  Serial.begin(9600);\n  servo.init(0x7f);\n  pinMode(RotarySensor_1, INPUT);\n  pinMode(RotarySensor_2, INPUT);\n  pinMode(RotarySensor_3, INPUT);\n  pinMode(RotarySensor_4, INPUT);\n\n  \/\/ uncomment this line if you need to use a special servo\n  \/\/ servo.setServoPulseRange(600,2400,180);\n  Serial.begin(9600);\n}\nvoid loop()\n{\n\n  int angle[6];\n  int sensor_value[6];\n  sensor_value[0] = analogRead(RotarySensor_1);\n  sensor_value[1] = analogRead(RotarySensor_2);\n  sensor_value[2] = analogRead(RotarySensor_3);\n  sensor_value[3] = analogRead(RotarySensor_4);\n\n  angle[0] = (float)sensor_value[0] * 300 \/ 1023;\n  angle[1] = (float)sensor_value[1] * 300 \/ 1023;\n  angle[2] = (float)sensor_value[2] * 300 \/ 1023;\n  angle[3] = (float)sensor_value[3] * 300 \/ 1023;\n  Serial.println(angle[0]);\n\n  servo.setAngle(12, map(angle[0], 0, 300, 0, 170));\n  servo.setAngle(13, map(angle[1], 0, 300, 0, 180));\n  servo.setAngle(14, map(angle[2], 0, 300, 20, 180));\n  servo.setAngle(15, map(angle[3], 0, 300, 20, 160));\n  \/\/delay(15);\n\n\n}<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Then hit the <strong>Upload<\/strong> button as before.<\/li><\/ul>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Now you will be able to control your own robotic arm just by rotating the knobs on the Grove &#8211; Rotary Angle Sensors!!<\/p>\n\n\n\n<figure class=\"wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe title=\"Robotic Arm using Grove - 16-Channel PWM Driver (PCA9685)\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/R7k0uOsqWhM?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><figcaption>Robotic Arm Demo<\/figcaption><\/figure>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Summary<\/h2>\n\n\n\n<p>And that&#8217;s all on using Grove &#8211; 16-Channel PWM Driver (PCA9685) to Control Robotic Arm! Did you learn something new? We hope this post has helped you learn more about PWM drivers, and do stay tuned for more content coming up in the future!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Have you ever encountered the situation where you want to build your own robotics projects<\/p>\n","protected":false},"author":141,"featured_media":24287,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_lmt_disableupdate":"","_lmt_disable":"","_price":"","_stock":"","_tribe_ticket_header":"","_tribe_default_ticket_provider":"","_tribe_ticket_capacity":"0","_ticket_start_date":"","_ticket_end_date":"","_tribe_ticket_show_description":"","_tribe_ticket_show_not_going":false,"_tribe_ticket_use_global_stock":"","_tribe_ticket_global_stock_level":"","_global_stock_mode":"","_global_stock_cap":"","_tribe_rsvp_for_event":"","_tribe_ticket_going_count":"","_tribe_ticket_not_going_count":"","_tribe_tickets_list":"[]","_tribe_ticket_has_attendee_info_fields":false,"iawp_total_views":0,"footnotes":""},"categories":[1],"tags":[6,139,1603,12],"class_list":["post-24233","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news","tag-arduino","tag-grove","tag-rotary-angle-sensor","tag-seeeduino"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How to use Grove - 16-Channel PWM Driver (PCA9685) to Control Robotic Arm! - Latest News from Seeed Studio<\/title>\n<meta name=\"description\" content=\"Have you ever encountered the situation where you want to build your own robotics projects using an Arduino, but failed to do so with only just an Arduino because of the limited number of PWM outputs it has?\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.seeedstudio.com\/blog\/2019\/09\/05\/get-started-with-the-grove-16-channel-pwm-driver-pca9685-and-control-your-own-robotic-arm\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to use Grove - 16-Channel PWM Driver (PCA9685) to Control Robotic Arm! - Latest News from Seeed Studio\" \/>\n<meta property=\"og:description\" content=\"Have you ever encountered the situation where you want to build your own robotics projects using an Arduino, but failed to do so with only just an Arduino because of the limited number of PWM outputs it has?\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.seeedstudio.com\/blog\/2019\/09\/05\/get-started-with-the-grove-16-channel-pwm-driver-pca9685-and-control-your-own-robotic-arm\/\" \/>\n<meta property=\"og:site_name\" content=\"Latest News from Seeed Studio\" \/>\n<meta property=\"article:published_time\" content=\"2019-09-05T06:41:21+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-11-04T04:24:56+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/thumb.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Lakshan\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lakshan\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/2019\/09\/05\/get-started-with-the-grove-16-channel-pwm-driver-pca9685-and-control-your-own-robotic-arm\/\",\"url\":\"https:\/\/www.seeedstudio.com\/blog\/2019\/09\/05\/get-started-with-the-grove-16-channel-pwm-driver-pca9685-and-control-your-own-robotic-arm\/\",\"name\":\"How to use Grove - 16-Channel PWM Driver (PCA9685) to Control Robotic Arm! - Latest News from Seeed Studio\",\"isPartOf\":{\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/2019\/09\/05\/get-started-with-the-grove-16-channel-pwm-driver-pca9685-and-control-your-own-robotic-arm\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/2019\/09\/05\/get-started-with-the-grove-16-channel-pwm-driver-pca9685-and-control-your-own-robotic-arm\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/thumb.jpg\",\"datePublished\":\"2019-09-05T06:41:21+00:00\",\"dateModified\":\"2020-11-04T04:24:56+00:00\",\"author\":{\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/#\/schema\/person\/75eb10f611f7c10a195a98452628bba5\"},\"description\":\"Have you ever encountered the situation where you want to build your own robotics projects using an Arduino, but failed to do so with only just an Arduino because of the limited number of PWM outputs it has?\",\"breadcrumb\":{\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/2019\/09\/05\/get-started-with-the-grove-16-channel-pwm-driver-pca9685-and-control-your-own-robotic-arm\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.seeedstudio.com\/blog\/2019\/09\/05\/get-started-with-the-grove-16-channel-pwm-driver-pca9685-and-control-your-own-robotic-arm\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/2019\/09\/05\/get-started-with-the-grove-16-channel-pwm-driver-pca9685-and-control-your-own-robotic-arm\/#primaryimage\",\"url\":\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/thumb.jpg\",\"contentUrl\":\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/thumb.jpg\",\"width\":1920,\"height\":1080,\"caption\":\"Introduce Grove - 16-Channel PWM Driver (PCA9685) and control your own Robotic Arm!\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/2019\/09\/05\/get-started-with-the-grove-16-channel-pwm-driver-pca9685-and-control-your-own-robotic-arm\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.seeedstudio.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to use Grove &#8211; 16-Channel PWM Driver (PCA9685) to Control Robotic Arm!\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/#website\",\"url\":\"https:\/\/www.seeedstudio.com\/blog\/\",\"name\":\"Latest News from Seeed Studio\",\"description\":\"Emerging IoT, AI and Autonomous Applications on the Edge\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.seeedstudio.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/#\/schema\/person\/75eb10f611f7c10a195a98452628bba5\",\"name\":\"Lakshan\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c1688294d55a746c8c80f4b85eb94989?s=96&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c1688294d55a746c8c80f4b85eb94989?s=96&r=g\",\"caption\":\"Lakshan\"},\"url\":\"https:\/\/www.seeedstudio.com\/blog\/author\/lakshan\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to use Grove - 16-Channel PWM Driver (PCA9685) to Control Robotic Arm! - Latest News from Seeed Studio","description":"Have you ever encountered the situation where you want to build your own robotics projects using an Arduino, but failed to do so with only just an Arduino because of the limited number of PWM outputs it has?","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.seeedstudio.com\/blog\/2019\/09\/05\/get-started-with-the-grove-16-channel-pwm-driver-pca9685-and-control-your-own-robotic-arm\/","og_locale":"en_US","og_type":"article","og_title":"How to use Grove - 16-Channel PWM Driver (PCA9685) to Control Robotic Arm! - Latest News from Seeed Studio","og_description":"Have you ever encountered the situation where you want to build your own robotics projects using an Arduino, but failed to do so with only just an Arduino because of the limited number of PWM outputs it has?","og_url":"https:\/\/www.seeedstudio.com\/blog\/2019\/09\/05\/get-started-with-the-grove-16-channel-pwm-driver-pca9685-and-control-your-own-robotic-arm\/","og_site_name":"Latest News from Seeed Studio","article_published_time":"2019-09-05T06:41:21+00:00","article_modified_time":"2020-11-04T04:24:56+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/thumb.jpg","type":"image\/jpeg"}],"author":"Lakshan","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lakshan","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.seeedstudio.com\/blog\/2019\/09\/05\/get-started-with-the-grove-16-channel-pwm-driver-pca9685-and-control-your-own-robotic-arm\/","url":"https:\/\/www.seeedstudio.com\/blog\/2019\/09\/05\/get-started-with-the-grove-16-channel-pwm-driver-pca9685-and-control-your-own-robotic-arm\/","name":"How to use Grove - 16-Channel PWM Driver (PCA9685) to Control Robotic Arm! - Latest News from Seeed Studio","isPartOf":{"@id":"https:\/\/www.seeedstudio.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.seeedstudio.com\/blog\/2019\/09\/05\/get-started-with-the-grove-16-channel-pwm-driver-pca9685-and-control-your-own-robotic-arm\/#primaryimage"},"image":{"@id":"https:\/\/www.seeedstudio.com\/blog\/2019\/09\/05\/get-started-with-the-grove-16-channel-pwm-driver-pca9685-and-control-your-own-robotic-arm\/#primaryimage"},"thumbnailUrl":"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/thumb.jpg","datePublished":"2019-09-05T06:41:21+00:00","dateModified":"2020-11-04T04:24:56+00:00","author":{"@id":"https:\/\/www.seeedstudio.com\/blog\/#\/schema\/person\/75eb10f611f7c10a195a98452628bba5"},"description":"Have you ever encountered the situation where you want to build your own robotics projects using an Arduino, but failed to do so with only just an Arduino because of the limited number of PWM outputs it has?","breadcrumb":{"@id":"https:\/\/www.seeedstudio.com\/blog\/2019\/09\/05\/get-started-with-the-grove-16-channel-pwm-driver-pca9685-and-control-your-own-robotic-arm\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.seeedstudio.com\/blog\/2019\/09\/05\/get-started-with-the-grove-16-channel-pwm-driver-pca9685-and-control-your-own-robotic-arm\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.seeedstudio.com\/blog\/2019\/09\/05\/get-started-with-the-grove-16-channel-pwm-driver-pca9685-and-control-your-own-robotic-arm\/#primaryimage","url":"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/thumb.jpg","contentUrl":"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/thumb.jpg","width":1920,"height":1080,"caption":"Introduce Grove - 16-Channel PWM Driver (PCA9685) and control your own Robotic Arm!"},{"@type":"BreadcrumbList","@id":"https:\/\/www.seeedstudio.com\/blog\/2019\/09\/05\/get-started-with-the-grove-16-channel-pwm-driver-pca9685-and-control-your-own-robotic-arm\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.seeedstudio.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to use Grove &#8211; 16-Channel PWM Driver (PCA9685) to Control Robotic Arm!"}]},{"@type":"WebSite","@id":"https:\/\/www.seeedstudio.com\/blog\/#website","url":"https:\/\/www.seeedstudio.com\/blog\/","name":"Latest News from Seeed Studio","description":"Emerging IoT, AI and Autonomous Applications on the Edge","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.seeedstudio.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.seeedstudio.com\/blog\/#\/schema\/person\/75eb10f611f7c10a195a98452628bba5","name":"Lakshan","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.seeedstudio.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/c1688294d55a746c8c80f4b85eb94989?s=96&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c1688294d55a746c8c80f4b85eb94989?s=96&r=g","caption":"Lakshan"},"url":"https:\/\/www.seeedstudio.com\/blog\/author\/lakshan\/"}]}},"modified_by":"Gigi","views":17947,"featured_image_urls":{"full":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/thumb.jpg",1920,1080,false],"thumbnail":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/thumb-80x80.jpg",80,80,true],"medium":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/thumb-300x169.jpg",300,169,true],"medium_large":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/thumb-768x432.jpg",640,360,true],"large":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/thumb-1030x579.jpg",640,360,true],"1536x1536":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/thumb.jpg",1536,864,false],"2048x2048":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/thumb.jpg",1920,1080,false],"visody_icon":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/thumb.jpg",32,18,false],"magazine-7-slider-full":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/thumb.jpg",1536,864,false],"magazine-7-slider-center":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/thumb.jpg",936,527,false],"magazine-7-featured":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/thumb.jpg",1024,576,false],"magazine-7-medium":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/thumb.jpg",676,380,false],"magazine-7-medium-square":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/09\/thumb.jpg",675,380,false]},"author_info":{"display_name":"Lakshan","author_link":"https:\/\/www.seeedstudio.com\/blog\/author\/lakshan\/"},"category_info":"<a href=\"https:\/\/www.seeedstudio.com\/blog\/category\/news\/\" rel=\"category tag\">News<\/a>","tag_info":"News","comment_count":"0","_links":{"self":[{"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/posts\/24233","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/users\/141"}],"replies":[{"embeddable":true,"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/comments?post=24233"}],"version-history":[{"count":31,"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/posts\/24233\/revisions"}],"predecessor-version":[{"id":37915,"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/posts\/24233\/revisions\/37915"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/media\/24287"}],"wp:attachment":[{"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/media?parent=24233"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/categories?post=24233"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/tags?post=24233"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}