SlideShare a Scribd company logo
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

PPTX
RoboticsとC++@歌舞伎座.tech#8「C++初心者会」
PPTX
C++がなぜ組込みに採用されにくいか
PPTX
「推しが100万部売れて欲しい!」 推し技術書LT大会 発表スライド
PPTX
1-1_C言語入門 - C言語について
PPTX
C# Tokyo コミュニティ説明 20200925
PPTX
俺とGitHubとcodeシリーズ
PDF
Study3 boost
PDF
Siv3Dのすゝめ
RoboticsとC++@歌舞伎座.tech#8「C++初心者会」
C++がなぜ組込みに採用されにくいか
「推しが100万部売れて欲しい!」 推し技術書LT大会 発表スライド
1-1_C言語入門 - C言語について
C# Tokyo コミュニティ説明 20200925
俺とGitHubとcodeシリーズ
Study3 boost
Siv3Dのすゝめ

What's hot (20)

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

Viewers also liked (6)

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

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