SlideShare a Scribd company logo
1 of 12
Download to read offline
mbedで楽しい組み込
みプログラミング
岸 俊道
きゅんどう @ksyundo
2015/05/17 歌舞伎座.tech#8「C++初心者会」
組み込み向けC++のやり方を探る
自己紹介
• 岸俊道(キシシュンドウ) きゅんどう@ksyndo
• 会社員。趣味でロボット製作などをしている人間
マイコン開発
ハードウェアごとに異なる初期化処理
間違えずに書くのも一苦労
ソフト、ハード両面からのデバッグ
マイコン開発
ハードウェアごとに異なる初期化処理
間違えずに書くのも一苦労
ソフト、ハード両面からのデバッグ
つらい!!
でも楽しい
OSマイコンボードの勃興
• Arduino … 何かと取り上げられる。人気っぽい
• mbed … C++で開発する環境が整っている!!!
\みんなで同じハード使おうよ/
\ソースコード共有しよう/
mbedでLED光らす(Lチカ)
#include "mbed.h"
int main() {
DigitalOut led(LED1); // I/O出力オブジェクト
while(true) {
led = 1; // 点灯
wait(0.2);
led = 0; // 消灯
wait(0.2);
}
}
mbed開発環境
公式ライブラリ
ユーザーライブラリ/
コミュニティ
オンラインコンパイラ(C++)
Cloud
Download
mbedとC++11/14
mbedライブラリはオープンソース。
ローカルに落としてきてオンラインコンパイラでなく
arm-none-eabi-gcc (ver. 4.9.3, C++14一部対応)
を使う。
mbedコミュニティでライブラリの共有ができなくなる
mbedのオンラインコンパイラはC++98のよう
えっ…
えっ…
mbedとC++11/14
\ライブラリ使うだけ/
C++11が使えると嬉しい(1)
#include "mbed.h“
#include <array>
int main() {
PwmOut led(LED1);
const std::array<float, 6> w{0, 0.2, 0.4, 0.6, 0.8, 1.0};
while(true) {
for (auto i : w) {
led = i; wait(1.0);
}
}
}
std::arrayが使える
LEDの点灯シナリオ
C++11が使えると嬉しい(2)
constexprが使える
#define NUM_JOINTS 28
#define PWM_RANGE (PWMMAX - PWMMIN)
#define DEG_TO_RAD(d) ((d)*M_PI/180.0)
#define hoge_read_byte(addr) (*(const unsigned char *)(addr))
…
constexpr char NUM_JOINTS = 28;
constexpr uint16_t PWM_RANGE = PWMMAX - PWMMIN;
constexpr float DEG_TO_RAD(float d) noexcept { return d*M_PI/180.0; }
template<typename T>
constexpr unsigned char hoge_read_byte(T addr) {
return (*(const unsigned char*)(addr));
}
…
defineマクロを駆逐してやる!!
まとめ
mbedだとデータシート読まなくていいから楽
どうしてもmbedでもC++11を使いたかったから使って
みた
今後の課題
mbedコミュニティとのうまいつきあいかた

More Related Content

What's hot

DevDo Irasally 20090426
DevDo Irasally 20090426DevDo Irasally 20090426
DevDo Irasally 20090426irasally omuko
 
C# Tokyo コミュニティ案内
C# Tokyo コミュニティ案内C# Tokyo コミュニティ案内
C# Tokyo コミュニティ案内m ishizaki
 
レガシーコードとの戦いの軌跡
レガシーコードとの戦いの軌跡レガシーコードとの戦いの軌跡
レガシーコードとの戦いの軌跡Katsuhiko Tamura
 
まんまとリレーションされた話
まんまとリレーションされた話まんまとリレーションされた話
まんまとリレーションされた話m ishizaki
 
Uno Platform 入門 2020/04/03
Uno Platform 入門 2020/04/03Uno Platform 入門 2020/04/03
Uno Platform 入門 2020/04/03m ishizaki
 
ドット絵でプログラミング!難解言語『Piet』勉強会
ドット絵でプログラミング!難解言語『Piet』勉強会ドット絵でプログラミング!難解言語『Piet』勉強会
ドット絵でプログラミング!難解言語『Piet』勉強会京大 マイコンクラブ
 
私の失敗道(仮)
私の失敗道(仮)私の失敗道(仮)
私の失敗道(仮)Yuuki Tan-nai
 
C言語について
C言語についてC言語について
C言語についてKatsuro-u
 
Visual Studio Code で C# でのアプリ開発
Visual Studio Code で C# でのアプリ開発Visual Studio Code で C# でのアプリ開発
Visual Studio Code で C# でのアプリ開発m ishizaki
 
Customizing cargo for cross compiling
Customizing cargo for cross compilingCustomizing cargo for cross compiling
Customizing cargo for cross compilingemakryo
 
シミュレーター
シミュレーターシミュレーター
シミュレーターKensei Demura
 
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRubyKanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRubyShinichi Okada
 
Cargo makeを使ってみた話
Cargo makeを使ってみた話Cargo makeを使ってみた話
Cargo makeを使ってみた話emakryo
 
デプロイに苦労した話
デプロイに苦労した話デプロイに苦労した話
デプロイに苦労した話tetuwo181
 

What's hot (20)

DevDo Irasally 20090426
DevDo Irasally 20090426DevDo Irasally 20090426
DevDo Irasally 20090426
 
C# Tokyo コミュニティ案内
C# Tokyo コミュニティ案内C# Tokyo コミュニティ案内
C# Tokyo コミュニティ案内
 
レガシーコードとの戦いの軌跡
レガシーコードとの戦いの軌跡レガシーコードとの戦いの軌跡
レガシーコードとの戦いの軌跡
 
Pietで競プロしよう
Pietで競プロしようPietで競プロしよう
Pietで競プロしよう
 
Unity/CSharp 2
Unity/CSharp 2Unity/CSharp 2
Unity/CSharp 2
 
まんまとリレーションされた話
まんまとリレーションされた話まんまとリレーションされた話
まんまとリレーションされた話
 
Uno Platform 入門 2020/04/03
Uno Platform 入門 2020/04/03Uno Platform 入門 2020/04/03
Uno Platform 入門 2020/04/03
 
ドット絵でプログラミング!難解言語『Piet』勉強会
ドット絵でプログラミング!難解言語『Piet』勉強会ドット絵でプログラミング!難解言語『Piet』勉強会
ドット絵でプログラミング!難解言語『Piet』勉強会
 
私の失敗道(仮)
私の失敗道(仮)私の失敗道(仮)
私の失敗道(仮)
 
Ultra piet
Ultra pietUltra piet
Ultra piet
 
C言語について
C言語についてC言語について
C言語について
 
Intelli code
Intelli codeIntelli code
Intelli code
 
Visual Studio Code で C# でのアプリ開発
Visual Studio Code で C# でのアプリ開発Visual Studio Code で C# でのアプリ開発
Visual Studio Code で C# でのアプリ開発
 
Customizing cargo for cross compiling
Customizing cargo for cross compilingCustomizing cargo for cross compiling
Customizing cargo for cross compiling
 
dwangocpp1-lt
dwangocpp1-ltdwangocpp1-lt
dwangocpp1-lt
 
シミュレーター
シミュレーターシミュレーター
シミュレーター
 
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRubyKanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
 
Cargo makeを使ってみた話
Cargo makeを使ってみた話Cargo makeを使ってみた話
Cargo makeを使ってみた話
 
Multi paradigm design
Multi paradigm designMulti paradigm design
Multi paradigm design
 
デプロイに苦労した話
デプロイに苦労した話デプロイに苦労した話
デプロイに苦労した話
 

Viewers also liked

組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由kikairoya
 
中3女子でもわかる constexpr
中3女子でもわかる constexpr中3女子でもわかる constexpr
中3女子でもわかる constexprGenya Murakami
 
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexprGenya Murakami
 
すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!Genya Murakami
 
トランザクションの設計と進化
トランザクションの設計と進化トランザクションの設計と進化
トランザクションの設計と進化Kumazaki Hiroki
 

Viewers also liked (6)

組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
 
Cache obliviousの話
Cache obliviousの話Cache obliviousの話
Cache obliviousの話
 
中3女子でもわかる constexpr
中3女子でもわかる constexpr中3女子でもわかる constexpr
中3女子でもわかる constexpr
 
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
 
すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!
 
トランザクションの設計と進化
トランザクションの設計と進化トランザクションの設計と進化
トランザクションの設計と進化
 

Similar to 組み込み向けC++のやり方を探る - mbedで楽しい組み込みプログラミング -

Win32 APIをてなずけよう
Win32 APIをてなずけようWin32 APIをてなずけよう
Win32 APIをてなずけようKouji Matsui
 
C# で i phone ゲーム開発
C# で i phone ゲーム開発C# で i phone ゲーム開発
C# で i phone ゲーム開発Katsutoshi Makino
 
Abc発表資料(2012s)
Abc発表資料(2012s)  Abc発表資料(2012s)
Abc発表資料(2012s) Junichi Katsu
 
Unity/CSharp 1 - pptx
Unity/CSharp 1 - pptxUnity/CSharp 1 - pptx
Unity/CSharp 1 - pptxtagawakiyoshi
 
160531 IoT LT #15 @ 日本IBM
160531 IoT LT #15 @ 日本IBM160531 IoT LT #15 @ 日本IBM
160531 IoT LT #15 @ 日本IBMToshiki Tsuboi
 
ソニーのディープラーニングツールで簡単エッジコンピューティング
ソニーのディープラーニングツールで簡単エッジコンピューティングソニーのディープラーニングツールで簡単エッジコンピューティング
ソニーのディープラーニングツールで簡単エッジコンピューティングRyohei Kamiya
 
「自分のとこでは動くけど…」を無くす devcontainer
「自分のとこでは動くけど…」を無くす devcontainer「自分のとこでは動くけど…」を無くす devcontainer
「自分のとこでは動くけど…」を無くす devcontainerYuta Matsumura
 
北陸エンジニアず 自己紹介資料
北陸エンジニアず 自己紹介資料北陸エンジニアず 自己紹介資料
北陸エンジニアず 自己紹介資料Yuuki Kojima
 
Live2Dの描画の裏側の話
Live2Dの描画の裏側の話Live2Dの描画の裏側の話
Live2Dの描画の裏側の話Naoki Aso
 
Cocos sharpでゲーム開発してみました
Cocos sharpでゲーム開発してみましたCocos sharpでゲーム開発してみました
Cocos sharpでゲーム開発してみましたTomohiro Suzuki
 
これから始める Windows io t core
これから始める Windows io t coreこれから始める Windows io t core
これから始める Windows io t coreMasuda Tomoaki
 
CICDを始める前に...ビルドデプロイについて再入門
CICDを始める前に...ビルドデプロイについて再入門CICDを始める前に...ビルドデプロイについて再入門
CICDを始める前に...ビルドデプロイについて再入門harukikato1
 
Platform io で シュッと arduino 開発を高速化しよう speed up your arduino development with p...
Platform io で シュッと arduino 開発を高速化しよう speed up your arduino development with p...Platform io で シュッと arduino 開発を高速化しよう speed up your arduino development with p...
Platform io で シュッと arduino 開発を高速化しよう speed up your arduino development with p...74th
 
「Microbit」で簡単プログラミング体験
「Microbit」で簡単プログラミング体験「Microbit」で簡単プログラミング体験
「Microbit」で簡単プログラミング体験はなずきん Hana
 
「明日からできる!面白ガジェットの作り方」 プロ生勉強会 第35回@DMM.comラボ
「明日からできる!面白ガジェットの作り方」 プロ生勉強会 第35回@DMM.comラボ 「明日からできる!面白ガジェットの作り方」 プロ生勉強会 第35回@DMM.comラボ
「明日からできる!面白ガジェットの作り方」 プロ生勉強会 第35回@DMM.comラボ kirin_nico
 
Bot Builder V4 SDK + QnA Maker / LUIS
Bot Builder V4 SDK  + QnA Maker / LUISBot Builder V4 SDK  + QnA Maker / LUIS
Bot Builder V4 SDK + QnA Maker / LUISYoshitaka Seo
 
これから始める Bot Builder 開発のコツと舞台裏
これから始める Bot Builder 開発のコツと舞台裏これから始める Bot Builder 開発のコツと舞台裏
これから始める Bot Builder 開発のコツと舞台裏Yuta Matsumura
 

Similar to 組み込み向けC++のやり方を探る - mbedで楽しい組み込みプログラミング - (20)

Win32 APIをてなずけよう
Win32 APIをてなずけようWin32 APIをてなずけよう
Win32 APIをてなずけよう
 
C# で i phone ゲーム開発
C# で i phone ゲーム開発C# で i phone ゲーム開発
C# で i phone ゲーム開発
 
Abc発表資料(2012s)
Abc発表資料(2012s)  Abc発表資料(2012s)
Abc発表資料(2012s)
 
Unity/CSharp 1 - pptx
Unity/CSharp 1 - pptxUnity/CSharp 1 - pptx
Unity/CSharp 1 - pptx
 
160531 IoT LT #15 @ 日本IBM
160531 IoT LT #15 @ 日本IBM160531 IoT LT #15 @ 日本IBM
160531 IoT LT #15 @ 日本IBM
 
ソニーのディープラーニングツールで簡単エッジコンピューティング
ソニーのディープラーニングツールで簡単エッジコンピューティングソニーのディープラーニングツールで簡単エッジコンピューティング
ソニーのディープラーニングツールで簡単エッジコンピューティング
 
「自分のとこでは動くけど…」を無くす devcontainer
「自分のとこでは動くけど…」を無くす devcontainer「自分のとこでは動くけど…」を無くす devcontainer
「自分のとこでは動くけど…」を無くす devcontainer
 
C♯_GO
C♯_GOC♯_GO
C♯_GO
 
北陸エンジニアず 自己紹介資料
北陸エンジニアず 自己紹介資料北陸エンジニアず 自己紹介資料
北陸エンジニアず 自己紹介資料
 
Unity+osc
Unity+oscUnity+osc
Unity+osc
 
Live2Dの描画の裏側の話
Live2Dの描画の裏側の話Live2Dの描画の裏側の話
Live2Dの描画の裏側の話
 
Cocos sharpでゲーム開発してみました
Cocos sharpでゲーム開発してみましたCocos sharpでゲーム開発してみました
Cocos sharpでゲーム開発してみました
 
これから始める Windows io t core
これから始める Windows io t coreこれから始める Windows io t core
これから始める Windows io t core
 
CICDを始める前に...ビルドデプロイについて再入門
CICDを始める前に...ビルドデプロイについて再入門CICDを始める前に...ビルドデプロイについて再入門
CICDを始める前に...ビルドデプロイについて再入門
 
Platform io で シュッと arduino 開発を高速化しよう speed up your arduino development with p...
Platform io で シュッと arduino 開発を高速化しよう speed up your arduino development with p...Platform io で シュッと arduino 開発を高速化しよう speed up your arduino development with p...
Platform io で シュッと arduino 開発を高速化しよう speed up your arduino development with p...
 
「Microbit」で簡単プログラミング体験
「Microbit」で簡単プログラミング体験「Microbit」で簡単プログラミング体験
「Microbit」で簡単プログラミング体験
 
Unity/CSharp 3
Unity/CSharp 3Unity/CSharp 3
Unity/CSharp 3
 
「明日からできる!面白ガジェットの作り方」 プロ生勉強会 第35回@DMM.comラボ
「明日からできる!面白ガジェットの作り方」 プロ生勉強会 第35回@DMM.comラボ 「明日からできる!面白ガジェットの作り方」 プロ生勉強会 第35回@DMM.comラボ
「明日からできる!面白ガジェットの作り方」 プロ生勉強会 第35回@DMM.comラボ
 
Bot Builder V4 SDK + QnA Maker / LUIS
Bot Builder V4 SDK  + QnA Maker / LUISBot Builder V4 SDK  + QnA Maker / LUIS
Bot Builder V4 SDK + QnA Maker / LUIS
 
これから始める Bot Builder 開発のコツと舞台裏
これから始める Bot Builder 開発のコツと舞台裏これから始める Bot Builder 開発のコツと舞台裏
これから始める Bot Builder 開発のコツと舞台裏
 

組み込み向けC++のやり方を探る - mbedで楽しい組み込みプログラミング -