{"id":2223,"date":"2013-03-05T21:00:24","date_gmt":"2013-03-05T12:00:24","guid":{"rendered":"https:\/\/blog.eldhrimnir.com?p=2223"},"modified":"2013-03-06T04:46:54","modified_gmt":"2013-03-05T19:46:54","slug":"crazyflie-nano-quadcopter%e3%81%8c%e6%97%a5%e6%9c%ac%e3%81%a7%e9%a3%9b%e3%81%b0%e3%81%9b%e3%81%aa%e3%81%84%e3%81%aa%e3%82%89","status":"publish","type":"post","link":"https:\/\/blog.eldhrimnir.com\/?p=2223","title":{"rendered":"Crazyflie Nano Quadcopter\u304c\u65e5\u672c\u3067\u98db\u3070\u305b\u306a\u3044\u306a\u3089"},"content":{"rendered":"<p>Crazyflie Nano Quadcopter\u304c\u65e5\u672c\u3067\u98db\u3070\u305b\u306a\u3044\u306a\u3089\u3001<wbr \/>\u98db\u3070\u305b\u308b\u7269\u3092\u4f5c\u308c\u3070\u3044\u3044\u3058\u3083\u306a\u3044\u304b\u2026\u3002\u30c1\u30e7\u30c3\u30c8\u8003\u3048\u3066\u307f\u308b\u304b\u3089\u3001<wbr \/>\u771f\u9762\u76ee\u306b\u8003\u3048\u3066\u4f5c\u3063\u3066\u307f\u308b\u306b\u6607\u683c\u3055\u305b\u307e\u3057\u3066\u4e88\u5099\u5b9f\u9a13\u3092\u3057\u3066\u53ef\u80fd\u6027<wbr \/>\u3092\u63a2\u3063\u3066\u3044\u304d\u305f\u3044\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n<p><a href=\"https:\/\/blog.eldhrimnir.comwp-content\/uploads\/2013\/03\/DSC02030-1res.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone  wp-image-2251\" alt=\"SONY DSC\" src=\"https:\/\/blog.eldhrimnir.comwp-content\/uploads\/2013\/03\/DSC02030-1res.jpg\" width=\"496\" height=\"330\" \/><\/a><\/p>\n<p>\u307e\u305a\u306f\u3001<wbr \/>\u4e00\u756a\u7c21\u5358\u306a\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u3092\u4f7f\u3063\u305f\u7121\u7dda\u64cd\u4f5c\u304c\u51fa\u6765\u308b\u304b\u3092\u691c\u8a3c\u3057\u3066\u307f<wbr \/>\u307e\u3059\u3002\u4f55\u3092\u4f7f\u3063\u3066\u5b9f\u9a13\u3059\u308b\u304b\u3067\u3059\u304c\u3001<wbr \/>\u4f7f\u3044\u6163\u308c\u305fArdunio\u3067BT\u306e\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3092\u63a5\u7d9a\u3057\u3066\u307f\u307e\u3059\u3002<wbr \/><\/p>\n<p><span style=\"text-decoration: underline;\"><strong>\u25a0\u4eca\u56de\u306e\u69cb\u6210\u306f\u3053\u3061\u3089<\/strong><\/span><br \/>\n<span style=\"text-decoration: underline;\"><strong>\u53d7\u4fe1\u5074\uff1aArdunioMega(1280)\uff0bUSB Host Shield 2.0 for Arduino<\/strong><\/span><br \/>\n<span style=\"text-decoration: underline;\"><strong>\u9001\u4fe1\u5074\uff1a\u30ef\u30a4\u30e4\u30ec\u30b9\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9(DUALSHOCK 3)<\/strong><\/span><\/p>\n<p>\u300c<a href=\"http:\/\/www.circuitsathome.com\/products-page\/arduino-shields\/usb-host-shield-2-0-for-arduino\">USB Host Shield 2.0<\/a>\u300d\u306f\u300c<a href=\"https:\/\/github.com\/felis\/USB_Host_Shield_2.0\">USB Host Library for Arduino<\/a>\u300d<wbr \/>\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u304c\u3042\u308b\u306e\u3067\u7c21\u5358\u306b\u3067\u304d\u308b\u306f\u305a\u3002<\/p>\n<p><strong>\u25b2PS3\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306e\u63a5\u7d9a\u306e\u6d41\u308c<\/strong><\/p>\n<div style=\"padding-left: 30px;\">1.)Bluetooth\u30c9\u30f3\u30b0\u30eb\u306e\u30a2\u30c9\u30ec\u30b9\u78ba\u8a8d<\/div>\n<div style=\"padding-left: 60px;\">\u30b9\u30b1\u30c3\u30c1\u300cPS3BT.ino\u300d<wbr \/>\u3092\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3057\u3066\u30c9\u30f3\u30b0\u30eb\u3092\u30bb\u30c3\u30c8\u3057\u305f\u72b6\u614b\u3067\u30b7\u30ea\u30a2\u30eb\u30e2\u30cb\u30bf\u3092<wbr \/>\u8868\u793a\u8868\u793a\u3055\u308c\u3066\u3044\u308bBluetooth\u30a2\u30c9\u30ec\u30b9\u3092\u63a7\u3048\u3066\u304a\u304f<\/div>\n<div style=\"padding-left: 60px;\"><\/div>\n<div style=\"padding-left: 30px;\">2.)\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3078\u306e\u30c9\u30f3\u30b0\u30eb\u30a2\u30c9\u30ec\u30b9\u306e\u767b\u9332<\/div>\n<div style=\"padding-left: 60px;\">\u30b9\u30b1\u30c3\u30c1\u300cPS3USB.ino\u300d<wbr \/>\u3092\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u4fee\u6b63\u3057\u3066\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9<\/div>\n<div style=\"padding-left: 60px;\">\/\/PS3USB\u00a0PS3(&amp;Usb); \/\/ This will just create the instance\u3000\u2190\u3000\u30b3\u30e1\u30f3\u30c8\u30a2\u30a6\u30c8<\/div>\n<div style=\"padding-left: 60px;\">PS3USB\u00a0PS(&amp;Usb,0x00,0x15,0x83,0x3D,<wbr \/>0x0A,0x57);\u3000\u2190\u3000\u3053\u3053\u306b\u8868\u793a\u3055\u308c\u305fBluetooth\u30a2\u30c9\u30ec\u30b9\u3092\u8a2d\u5b9a<\/div>\n<div style=\"padding-left: 60px;\"><\/div>\n<div style=\"padding-left: 60px;\"><em>\u25a0\u6b63\u5e38\u306b\u8a2d\u5b9a\u3055\u308c\u308b\u3068\u3053\u306e\u3088\u3046\u306a\u8868\u793a<\/em><\/div>\n<div style=\"padding-left: 60px;\"><a href=\"https:\/\/blog.eldhrimnir.comwp-content\/uploads\/2013\/03\/PS3_Setup-Address.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-2224\" alt=\"PS3_Setup-Address\" src=\"https:\/\/blog.eldhrimnir.comwp-content\/uploads\/2013\/03\/PS3_Setup-Address.jpg\" width=\"451\" height=\"211\" \/><\/a><\/div>\n<div style=\"padding-left: 60px;\"><\/div>\n<div style=\"padding-left: 30px;\">3.)\u30bd\u30d5\u30c8\u5074\u30a2\u30c9\u30ec\u30b9\u8a2d\u5b9a\uff08\u30c9\u30f3\u30b0\u30eb\u30a2\u30c9\u30ec\u30b9\u767b\u9332\uff09<\/div>\n<div style=\"padding-left: 60px;\">Bluetooth\u30a2\u30c9\u30ec\u30b9\u3092\u30b9\u30b1\u30c3<wbr \/>\u30c1\u306b\u8a2d\u5b9a<\/div>\n<div style=\"padding-left: 60px;\">\/\/PS3BT\u00a0PS3(&amp;Btd); \/\/ This will just create the instance\u3000\u2190\u3000\u30b3\u30e1\u30f3\u30c8\u30a2\u30a6\u30c8<\/div>\n<div style=\"padding-left: 60px;\">PS3BT\u00a0PS3(&amp;Btd,0x00,0x15,0x83,0x3D,<wbr \/>0x0A,0x57);\u3000\u2190\u3000\u3053\u3053\u306b\u8868\u793a\u3055\u308c\u305fBluetooth\u30a2\u30c9\u30ec\u30b9\u3092\u8a2d\u5b9a<\/div>\n<div style=\"padding-left: 60px;\"><\/div>\n<div style=\"padding-left: 30px;\">4.)PS\u30dc\u30bf\u30f3\u3092\u62bc\u3059\u3053\u3068\u3067\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3092\u63a5\u7d9a<\/div>\n<div style=\"padding-left: 60px;\"><em>\u25a0\u63a5\u7d9a\u7d42\u4e86\u753b\u9762<\/em><\/div>\n<div style=\"padding-left: 60px;\"><a href=\"https:\/\/blog.eldhrimnir.comwp-content\/uploads\/2013\/03\/PS3_Connect.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-2225\" alt=\"PS3_Connect\" src=\"https:\/\/blog.eldhrimnir.comwp-content\/uploads\/2013\/03\/PS3_Connect.jpg\" width=\"478\" height=\"435\" \/><\/a><\/div>\n<p><strong>\u6bd4\u8f03\u7684\u7c21\u5358\u306b\u63a5\u7d9a\u3067\u304d\u3066\u3057\u307e\u3044\u307e\u3057\u305f\u3002<\/strong><br \/>\n<!--more--><br \/>\n\u3042\u3068\u306f\u3001<wbr \/>Ardunio\u3067\u53d7\u4fe1\u3055\u308c\u305f\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u4fe1\u53f7\u3092MultiWi<wbr \/>i\u306b\u9001\u4fe1\u3057\u3066\u3042\u3052\u308b\u4e8b\u3067\u64cd\u7e26\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002<br \/>\n\u3069\u306e\u3088\u3046\u306b\u9001\u4fe1\u3059\u308b\u304b\u3067\u3059\u304c\u3001<wbr \/>Arduino\u5074\u304b\u3089MultiWii\u3092\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb\u3059\u308b\u306b\u306f\u5236<wbr \/>\u5fa1\u4fe1\u53f7\u3068\u3057\u3066UART\/DSM\/<wbr \/>PPM\u306e3\u7a2e\u985e\u306e\u4fe1\u53f7\u304c\u3042\u308a\u307e\u3059\u3002\uff08UART\/<wbr \/>DSM\u306f\u540c\u3058\u30dd\u30fc\u30c8\u3092\u4f7f\u7528\u3059\u308b\u305f\u3081\u3001\u5b9f\u969b\u306f2\u7a2e\u985e\u306e\u5236\u5fa1\u4fe1\u53f7\uff09UART\u306f\u4ed6\u3067\u306e\u5229\u7528\uff08\u81ea\u5f8b\u5236\u5fa1\/\u30ed\u30ae\u30f3\u30b0\uff09\u3082\u8003\u3048\u3089\u308c\u308b\u306e\u3067\u3001<wbr \/>\u4eca\u56de\u306fPPM\u4fe1\u53f7\u3092\u5c02\u7528\u306e\u30dd\u30fc\u30c8\u306b\u9001\u4fe1\u3057\u3066\u5236\u5fa1\u304c\u3067\u304d\u308b\u304b\u3092\u78ba\u8a8d<wbr \/>\u3057\u307e\u3059\u3002\u203b\uff1a\u4eca\u56de\u306f\u63a5\u7d9a\u78ba\u8a8d\u306b\u5b9f\u6a5f\u304c\u306a\u3044\u306e\u3067\u300c<wbr \/>MultiWiiConf_2_0\u300d\u3092\u4f7f\u3063\u3066\u78ba\u8a8d\u3092\u884c\u3044\u307e\u3057\u305f\u3002<wbr \/>\uff08PPM\u3067\u5165\u529b\u3057\u305f\u306e\u306f\u78ba\u8a8d\u304c\u7c21\u5358(\u30dd\u30fc\u30c8\u304c\u5225\uff09<wbr \/>\u3060\u3063\u305f\u306e\u3067\uff09<\/p>\n<p>\u2605<strong>PPM\u4fe1\u53f7\u306e\u6982\u8981\u306f\u3053\u306e\u3088\u3046\u306b\u306a\u3063\u3066\u3044\u308b\u3002<\/strong><br \/>\n<a href=\"https:\/\/blog.eldhrimnir.comwp-content\/uploads\/2013\/03\/RC_Receiver_Timing_Diagram1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone  wp-image-2232\" alt=\"RC_Receiver_Timing_Diagram1\" src=\"https:\/\/blog.eldhrimnir.comwp-content\/uploads\/2013\/03\/RC_Receiver_Timing_Diagram1.jpg\" width=\"625\" height=\"319\" \/><\/a><\/p>\n<p>\u3088\u3046\u3059\u308b\u306b\u3001<wbr \/>\u30d0\u30e9\u30d0\u30e9\u306e\u5404\u30c1\u30e3\u30f3\u30cd\u30eb\u4fe1\u53f7\u3092\u30b7\u30ea\u30a2\u30eb\u5f62\u5f0f\u3067\u4e26\u3079\u30661\u672c\u306e\u30b1\u30fc\u30d6<wbr \/>\u30eb\u3067\u9001\u4fe1\u3059\u308b\u3002\u30b5\u30fc\u30dc\u89d2\u306b\u95a2\u3057\u3066\u306f\u30d1\u30eb\u30b9\u9577\u306b\u3066\u8868\u3059\u3002 \u4fe1\u53f7\u5f62\u5f0f\u304c\u308f\u304b\u3063\u305f\u6240\u3067\u3001<wbr \/>PPM\u4fe1\u53f7\u306e\u767a\u4fe1\u3067\u3059\u304c\u7c21\u5358\u306b\u51fa\u529b\u3059\u308b\u306a\u3089micros()<wbr \/>\u95a2\u6570\u3068\u304b\u4f7f\u3048\u3070\u3044\u3044\u306e\u3067\u3059\u304c\u3001<wbr \/>\u8272\u3005\u3068\u540c\u6642\u5b9f\u884c\u3059\u308b\u3068\u30bf\u30a4\u30df\u30f3\u30b0\u304c\u305a\u308c\u305d\u3046\u306a\u306e\u3067\u30bf\u30a4\u30de\u30fc\u51e6\u7406\u3057<wbr \/>\u3066\u3042\u3052\u305f\u3044\u6240\u3067\u3059\u3002<\/p>\n<p>\u3057\u3087\u3046\u304c\u306a\u3044\u304b\u3089\u81ea\u5206\u3067\u4f5c\u308d\u3046\u304b\u3068\u601d\u3063\u3066\u63a2\u3057\u3066\u307f\u305f\u3089\u3001<wbr \/>\u4f5c\u3063\u3066\u3044\u308b\u4eba\u304c\u3044\u3089\u3063\u3057\u3083\u3044\u307e\u3057\u305f\u3002<\/p>\n<p>\u300c<wbr \/><a href=\"http:\/\/sourceforge.net\/p\/arduinorclib\/wiki\/Home\/\">ArduinoRCLib<\/a>\u300d\u3092\u305d\u306e\u307e\u307e\u4f7f\u3046\u3053\u3068\u306b\u3057\u307e\u3059\u3002<\/p>\n<p><strong>\u691c\u8a3c\u7528\u306e\u63a5\u7d9a\u30a4\u30e1\u30fc\u30b8\u3092\u66f8\u304f\u3068\u2026\u3002<\/strong><br \/>\n<a href=\"https:\/\/blog.eldhrimnir.comwp-content\/uploads\/2013\/03\/60f3234b7f03778e199077bdd2be6dc1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone  wp-image-2238\" alt=\"\u30af\u30ea\u30c3\u30d7\u30dc\u30fc\u30c9\" src=\"https:\/\/blog.eldhrimnir.comwp-content\/uploads\/2013\/03\/60f3234b7f03778e199077bdd2be6dc1.jpg\" width=\"555\" height=\"316\" \/><\/a><\/p>\n<p><span style=\"text-decoration: underline;\"><strong>\u25a0\u4eca\u56de\u306e\u63a5\u7d9a\u69cb\u6210\u306f\u3053\u3061\u3089<\/strong><\/span><br \/>\n<span style=\"text-decoration: underline;\"><strong>\u30fbMultiWii\uff08<wbr \/>\u4eca\u56de\u306fArdunioNano\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u5165\u308c\u66ff\u3048\uff09<\/strong><\/span><br \/>\n<span style=\"text-decoration: underline;\"><strong>\u30fbArdunioMega(1280)\uff0bUSB Host Shield 2.0 for Arduino<\/strong><\/span><br \/>\n<span style=\"text-decoration: underline;\"><strong>\u30fb\u30ef\u30a4\u30e4\u30ec\u30b9\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9(DUALSHOCK 3)<\/strong><\/span><\/p>\n<p><strong>\u25a0\u63a5\u7d9a\u8981\u4ef6<\/strong><\/p>\n<ul>\n<li>Bluetooth\u63a5\u7d9a\u306b\u306f\u30e9\u30a4\u30d6\u30e9\u30ea\u300cUSB Host Library for Arduino\u300d\u3092\u4f7f\u7528\u3059\u308b\u3002<\/li>\n<li>PPM\u4fe1\u53f7\u306e\u751f\u6210\u306b\u306f\u30e9\u30a4\u30d6\u30e9\u30ea\u300cArduinoRCLib\u300d<wbr \/>\u3092\u4f7f\u7528\u3059\u308b\u3002<\/li>\n<li>\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306f\u30ef\u30a4\u30e4\u30ec\u30b9\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9(DUALSHOCK 3) \u3092Arduino\u3078Bluetooth\u63a5\u7d9a<\/li>\n<li>Ardunio\u2192<wbr \/>MultiWii\u306e\u3078\u306e\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb\u4fe1\u53f7\u9001\u4fe1\u306fPPM\u4fe1\u53f7\u3092\u9001\u4fe1<wbr \/>\u3001CH\u6570\u306f\u6700\u5927\u5236\u5fa1CH\u306e8CH<\/li>\n<li>PPM\u4fe1\u53f7\u53d7\u4fe1\u306e\u78ba\u8a8d\u306b\u306fMultiWii\u306bUART\u3067\u63a5\u7d9a\u3057\u305f<wbr \/>UART_Conf\u3067\u4fe1\u53f7\u3092\u78ba\u8a8d<\/li>\n<\/ul>\n<p>\u4eca\u56de\u8a66\u3057\u305f\u30c6\u30b9\u30c8\u30b3\u30fc\u30c9\uff08<wbr \/>\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u4f7f\u3063\u3066\u3044\u308b\u306e\u3067\u7d71\u5408\u90e8\u5206\u306e\u307f\u4f5c\u6210\uff09<\/p>\n<p>[sourcecode]<br \/>\n#include<br \/>\n#include<br \/>\n#include<br \/>\n#include<\/p>\n<p>\/\/ PPM<br \/>\n#define CHANNELS 6<br \/>\n#define LED_PIN 13 \/\/ debug<\/p>\n<p>USB Usb;<\/p>\n<p>\/\/ PS3<br \/>\nboolean printTemperature = false;<br \/>\nboolean printAngle = false;<br \/>\nboolean changeThrottle = false;<\/p>\n<p>\/\/ RC Control Mode(1-4)<br \/>\n\/\/ Mode 1 : Japanese Type<br \/>\n\/\/ Mode 2 : USA Type<br \/>\n#define RC_MODE 1<br \/>\n#define RC_DEBUG_MODE<\/p>\n<p>\/\/ ROLL,PITCH,THROTTLE,YAW,AUX1,AUX2,AUX3,AUX4,8,9,10,11<br \/>\n#if (RC_MODE ==1)<br \/>\n  #define RC_CH1  2 \/\/ PITCH(ELEVATOR)<br \/>\n  #define RC_CH2  4 \/\/ YAW(RUDDER)<br \/>\n  #define RC_CH3  3 \/\/ THROTTLE<br \/>\n  #define RC_CH4  1 \/\/ ROLL(AILERON)<br \/>\n#elif (RC_MODE ==2)<br \/>\n  #define RC_CH1  3 \/\/ THROTTLE<br \/>\n  #define RC_CH2  4 \/\/ YAW(RUDDER)<br \/>\n  #define RC_CH3  2 \/\/ PITCH(ELEVATOR)<br \/>\n  #define RC_CH4  1 \/\/ ROLL(AILERON)<br \/>\n#elif (RC_MODE ==3)<br \/>\n  #define RC_CH1  2 \/\/ PITCH(ELEVATOR)<br \/>\n  #define RC_CH2  1 \/\/ ROLL(AILERON)<br \/>\n  #define RC_CH3  3 \/\/ THROTTLE<br \/>\n  #define RC_CH4  4 \/\/ YAW(RUDDER)<br \/>\n#elif (RC_MODE ==4)<br \/>\n  #define RC_CH1  3 \/\/ THROTTLE<br \/>\n  #define RC_CH2  1 \/\/ ROLL(AILERON)<br \/>\n  #define RC_CH3  2 \/\/ PITCH(ELEVATOR)<br \/>\n  #define RC_CH4  4 \/\/ YAW(RUDDER)<br \/>\n#endif<\/p>\n<p>#define AUX1 5<br \/>\n#define AUX2 6<br \/>\n#define AUX3 7<br \/>\n#define AUX4 8<\/p>\n<p>\/* You can create the instance of the class in two ways *\/<br \/>\n\/\/PS3USB PS3(&amp;Usb); \/\/ This will just create the instance<br \/>\n\/\/PS3USB PS3(&amp;Usb,0x00,0x1B,0xDC,0x05,0xF8,0x71); \/\/ This will also store the bluetooth address &#8211; this can be obtained from the dongle when running the sketch<\/p>\n<p>BTD Btd(&amp;Usb); \/\/ You have to create the Bluetooth Dongle instance like so<br \/>\n\/* You can create the instance of the class in two ways *\/<br \/>\nPS3BT PS3(&amp;Btd,0x00,0x1B,0xDC,0x05,0xF8,0x71); \/\/ This will also store the bluetooth address &#8211; this can be obtained from the dongle when running the sketch<\/p>\n<p>uint16_t g_input[CHANNELS];                   \/\/ Input buffer in microseconds<br \/>\nuint8_t  g_work[PPMOUT_WORK_SIZE(CHANNELS+1)*2];  \/\/ we need to have a work buffer for the PPMOut class<br \/>\n\/\/ PPMOut requires two buffers:<br \/>\n\/\/     Input buffer containing input samples in microseconds<br \/>\n\/\/     Work buffer of ((channels + 1) * 2) elements for internal calculations and frame buffering<br \/>\n\/\/ This setup removes any limit on the number of channels you want, and makes sure the library doesn&#8217;t use more<br \/>\n\/\/ memory than it really needs, since the client code supplies the buffers.<br \/>\nrc::PPMOut g_PPMOut(CHANNELS, g_input, g_work, CHANNELS);<\/p>\n<p>\/\/ initialize<br \/>\nvoid setup() {<\/p>\n<p>  \/\/ initialize serial:<br \/>\n  Serial.begin(115200);<\/p>\n<p>  \/\/ initialize PIN_MODE<br \/>\n  #if defined(LED_PIN)<br \/>\n    pinMode(LED_PIN, OUTPUT);<br \/>\n  #endif<\/p>\n<p>  \/\/ USB initialize<br \/>\n  if (Usb.Init() == -1) {<br \/>\n    Serial.print(F(&quot;\\r\\nOSC did not start&quot;));<br \/>\n    while(1); \/\/halt<br \/>\n  }<br \/>\n  Serial.print(F(&quot;\\r\\nUSB_Host Bluetooth Library Started&quot;));<\/p>\n<p>  \/\/ Initialize timer1, this is required for all features that use Timer1<br \/>\n  \/\/ (PPMIn\/PPMOut\/ServoIn\/ServoOut)<br \/>\n  rc::Timer1::init();<\/p>\n<p>  \/\/ initialize PPMOut with some settings<br \/>\n  g_PPMOut.setPulseLength(448);   \/\/ pulse length in microseconds<br \/>\n  g_PPMOut.setPauseLength(10448); \/\/ length of pause after last channel in microseconds<br \/>\n  \/\/ note: this is also called the end of frame, or start of frame, and is usually around 10ms<\/p>\n<p>  \/\/ start PPMOut, use pin 9 (pins 9 and 10 are preferred)<br \/>\n  g_PPMOut.start(12);<br \/>\n}<br \/>\n\/\/ main loop<br \/>\nvoid loop() {<\/p>\n<p>  Usb.Task();<\/p>\n<p>  if(PS3.PS3Connected) {<br \/>\n    \/\/ Nomalmode Control(4CH)<br \/>\n    if (!changeThrottle){<br \/>\n      g_input[RC_CH1-1] = map(PS3.getAnalogHat(LeftHatX), 0, 255, 1000, 2000);<br \/>\n      #if defined(RC_DEBUG_MODE)<br \/>\n        Serial.print(F(&quot;\\r\\nLeftHatX: &quot;));<br \/>\n        Serial.print(g_input[RC_CH1-1]);<br \/>\n      #endif<br \/>\n      g_input[RC_CH3-1] = map(PS3.getAnalogHat(RightHatX), 0, 255, 1000, 2000);<br \/>\n      #if defined(RC_DEBUG_MODE)<br \/>\n        Serial.print(F(&quot;\\tRightHatX: &quot;));<br \/>\n        Serial.print(g_input[RC_CH3-1]);<br \/>\n      #endif<br \/>\n    }<br \/>\n    g_input[RC_CH2-1] = map(PS3.getAnalogHat(LeftHatY), 0, 255, 1000, 2000);<br \/>\n    #if defined(RC_DEBUG_MODE)<br \/>\n      Serial.print(F(&quot;\\tLeftHatY: &quot;));<br \/>\n      Serial.print(g_input[RC_CH2-1]);<br \/>\n    #endif<br \/>\n    g_input[RC_CH4-1] = map(PS3.getAnalogHat(RightHatY), 0, 255, 1000, 2000);<br \/>\n    #if defined(RC_DEBUG_MODE)<br \/>\n      Serial.print(F(&quot;\\tRightHatY: &quot;));<br \/>\n      Serial.print(g_input[RC_CH4-1]);<br \/>\n    #endif<br \/>\n  }<br \/>\n\/\/  \/\/ update the input buffer<br \/>\n\/\/  for (uint8_t i = 0;  i &lt; CHANNELS; ++i){<br \/>\n\/\/    \/\/ fill input buffer, convert raw values to microseconds<br \/>\n\/\/    g_input[i] = random(1000,2000);<br \/>\n\/\/  }<br \/>\n\/\/<br \/>\n  \/\/ tell PPMOut there are new values available in the input buffer<br \/>\n  g_PPMOut.update();<\/p>\n<p>  if ((millis() % 1000) == 0){<br \/>\n    digitalWrite(LED_PIN,!digitalRead(LED_PIN));<br \/>\n  }<br \/>\n}<br \/>\n[\/sourcecode]<\/p>\n<p>\u3053\u308c\u304c\u51fa\u6765\u308c\u3070\u3001\u666e\u901a\u306b\u624b\u52d5\u3067\u98db\u884c\u3055\u305b\u308b\u3060\u3051\u306a\u3089\u53ef\u80fd\u3067\u3059\u3002<wbr \/>\u305d\u306e\u5834\u5408\u306b\u306fArdunioMega\u3068\u304b\u3069\u3046\u8003\u3048\u3066\u3082\u30aa\u30fc\u30d0\u30fc\u30b9<wbr \/>\u30da\u30c3\u30af\u3067\u3059\u3051\u308c\u3069\u2026\u3002 PC\u304b\u3089\u306e\u5236\u5fa1\u4fe1\u53f7\u3067\u81ea\u7acb\u98db\u884c\u3068\u304b\u3001<wbr \/>\u5358\u4f53\u3067\u306e\u81ea\u7acb\u98db\u884c\u3068\u304b\u3057\u306a\u3044\u9650\u308a\u5b9d\u306e\u6301\u3061\u8150\u308c\u3002<wbr \/>\u6700\u8fd1\u6d41\u884c\u308a\u306e\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306b\u3057\u3066\u5927\u4eba\u6570\u3067\u53ef\u80fd\u6027\u3092\u63a2\u3063\u305f\u307b\u3046\u304c<wbr \/>\u3044\u3044\u3088\u3046\u306a\u6c17\u304c\u3057\u307e\u3059\u3002<\/p>\n<p>Mega\u306f\u30aa\u30fc\u30d0\u30b9\u30da\u30c3\u30af\u3060\u3068\u601d\u3046\u306e\u3067\u3001<wbr \/>\u3053\u3053\u306f\u6700\u8fd1\u3088\u3046\u3084\u304f\u30d6\u30fc\u30c8\u30ed\u30fc\u30c0\u30fc\u304c\u51fa\u6765\u4e0a\u304c\u3063\u3066\u6765\u307e\u3057\u305f128<wbr \/>4P\u3042\u305f\u308a\u3092\u4f7f\u3044\u307e\u3057\u3066\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb\u3057\u3066\u307f\u305f\u3044\u3068\u601d\u3044\u307e\u3059\u3002 \u6b21\u56de\u306f\u3001\u30e9\u30a4\u30d6\u30e9\u30ea\u5bfe\u5fdc\u3057\u3066\u3044\u306a\u3044\u3088\u3046\u306a\u306e\u3067\u5909\u66f4\u304c\u5fc5\u8981\uff06<wbr \/>\u30b7\u30fc\u30eb\u30c9\u304b\u3089\u3067\u306f\u3046\u307e\u304f\u4fe1\u53f7\u3092\u62fe\u3048\u306a\u304b\u3063\u305f\u306e\u3067\u30c6\u30b9\u30c8\u56de\u8def\u304b\u3089\u4f5c<wbr \/>\u3063\u3066\u691c\u8a3c\u3057\u3066\u307f\u307e\u3059\u3002<\/p>\n<blockquote><p>\u25a0\u53c2\u8003\u60c5\u5831<br \/>\n<a href=\"http:\/\/diydrones.com\/profiles\/blogs\/705844:BlogPost:38393\">How to hack the PPM signal from any receiver (Futaba) with Arduino &#8211; DIY Drones<\/a><\/p>\n<p>\u25a0\u300cUSB Host Shield 2.0 for Arduino\u306e\u30c9\u30f3\u30b0\u30eb\u5bfe\u5fdc\u72b6\u6cc1\u300d<\/p>\n<ul>\n<li>\u25a0\u5bfe\u5fdc<br \/>\niBUFFALO Bluetooth USB\u30a2\u30c0\u30d7\u30bf\u30fc 3.0+EDR\u5bfe\u5fdc class2 \u30d6\u30e9\u30c3\u30af BSHSBD04BK<br \/>\nPLANEX Bluetooth Ver3.0+EDR Micro\u30b5\u30a4\u30ba USB\u30a2\u30c0\u30d7\u30bf (Class2\/10m) BT-Micro3E2XZ<br \/>\nPLANEX Bluetooth Ver.4.0\uff0bEDR\/LE\u5bfe\u5fdc USB\u30a2\u30c0\u30d7\u30bf (\u7701\u30a8\u30cd\u8a2d\u8a08) BT-MICRO4<\/li>\n<li>\u25a0\u672a\u5bfe\u5fdc<br \/>\nPLANEX Bluetooth ver2.1+EDR Micro\u30b5\u30a4\u30ba USB\u30a2\u30c0\u30d7\u30bf (Class2\/10m) BTMICROEDR2XZ<\/li>\n<\/ul>\n<\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>Crazyflie Nano Quadcopter\u304c\u65e5\u672c\u3067\u98db\u3070\u305b\u306a\u3044\u306a\u3089\u3001\u98db\u3070\u305b\u308b\u7269\u3092\u4f5c\u308c\u3070\u3044\u3044\u3058\u3083\u306a\u3044\u304b\u2026\u3002\u30c1\u30e7\u30c3\u30c8\u8003\u3048\u3066\u307f\u308b\u304b\u3089\u3001\u771f\u9762\u76ee\u306b\u8003\u3048\u3066\u4f5c\u3063\u3066\u307f\u308b\u306b\u6607\u683c\u3055\u305b\u307e\u3057\u3066\u4e88\u5099\u5b9f\u9a13\u3092\u3057\u3066\u53ef\u80fd\u6027\u3092\u63a2\u3063\u3066\u3044\u304d\u305f\u3044\u3068\u601d\u3044\u307e\u3059 [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13,25,16],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.eldhrimnir.com\/index.php?rest_route=\/wp\/v2\/posts\/2223"}],"collection":[{"href":"https:\/\/blog.eldhrimnir.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.eldhrimnir.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.eldhrimnir.com\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.eldhrimnir.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2223"}],"version-history":[{"count":0,"href":"https:\/\/blog.eldhrimnir.com\/index.php?rest_route=\/wp\/v2\/posts\/2223\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.eldhrimnir.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2223"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.eldhrimnir.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2223"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.eldhrimnir.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2223"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}