SlideShare a Scribd company logo
1 of 243
Download to read offline
Arduinoで

プログラミングに触れてみよう
続編
2016/01/10 Hiromu Yakura
自己紹介
• 矢倉 大夢 (やくら ひろむ)
• 筑波大学 情報学群 情報科学類 1年
• 情報処理推進機構 未踏クリエイター
目的
• プログラミングとはどういう作業かを知ってもらう
• プログラミングで必要な論理的思考を感じてもらう
• プログラミングの指示したとおりに動くという

楽しさに触れてもらう
Arduino
• マイクロコントローラ
• コンピュータの機能が

ひとつの基盤に
• 3000円くらいで買える
セットアップ
• Internet Explorer   を起動する
• アドレスバーに arduino.cc と打ち込む
• 左上の「Download」をクリック
セットアップ
• 中央右の「Windows ZIP File for non admin install」
セットアップ
• 右下の「JUST DOWNLOAD」
• ダウンロードしたファイルをダブルクリックで開き

「ファイルをすべて解凍」をクリック
• ダイアログが出てきたら「展開」をクリック
• 解凍が終われば「arduino-1.6.7」フォルダを開く
セットアップ
• 付属のUSBケーブルでArduinoを接続する
• 「drivers」フォルダの「dpinst-x86.exe」を起動
• 「次へ」をクリックして、インストールを開始
セットアップ
セットアップ
• 以下の様なダイアログが2-3回表示されるが

すべて「インストールする」を選択する
セットアップ
• 以下の画面になれば、インストール完了なので

「完了」を押して終了する
セットアップ
• 「arduino-1.6.7」の「arduino.exe」を起動
• 「ツール」の

「マイコンボード」を

「Arduino/Genuino Uno」に

 設定する
セットアップ
• 「ツール」の

「シリアルポート」のうち

 有効になっているものを

 選択する
セットアップ
Breadboard
• はんだ付けせずに

回路設計をするボード
• 裏側で配線されている
Breadboard
• はんだ付けせずに

回路設計をするボード
• 裏側で配線されている
Breadboard
• はんだ付けせずに

回路設計をするボード
• 裏側で配線されている
Breadboard
• はんだ付けせずに

回路設計をするボード
• 裏側で配線されている
Breadboard
• はんだ付けせずに

回路設計をするボード
• 裏側で配線されている
Breadboard
• はんだ付けせずに

回路設計をするボード
• 裏側で配線されている
Breadboard
• はんだ付けせずに

回路設計をするボード
• 裏側で配線されている
Breadboard
• はんだ付けせずに

回路設計をするボード
• 裏側で配線されている
Breadboard
• はんだ付けせずに

回路設計をするボード
• 裏側で配線されている
Breadboard
• はんだ付けせずに

回路設計をするボード
• 裏側で配線されている
Breadboard
• はんだ付けせずに

回路設計をするボード
• 裏側で配線されている
LEDを光らせてみよう
回路設計
262221
• LEDは足の長い方が

21番にくるように
• 抵抗はどれでもOK
回路設計
• 13番ピンから赤
• + (電源供給) の役割
• GNDピンから青
• − の役割
LEDを光らせてみよう
• Arduino IDE
• Arduinoで

プログラミングする用の

ソフトウェア
LEDを光らせてみよう
void	
  setup()	
  {	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
}
LEDを光らせてみよう
ここをクリック
• +から回路をたどる
• LEDを通る
• 抵抗を通る
• ーにたどりつく
回路を理解しよう
• +から回路をたどる
• LEDを通る
• 抵抗を通る
• ーにたどりつく
回路を理解しよう
• +から回路をたどる
• LEDを通る
• 抵抗を通る
• ーにたどりつく
回路を理解しよう
• +から回路をたどる
• LEDを通る
• 抵抗を通る
• ーにたどりつく
回路を理解しよう
• +から回路をたどる
• LEDを通る
• 抵抗を通る
• ーにたどりつく
回路を理解しよう
• +から回路をたどる
• LEDを通る
• 抵抗を通る
• ーにたどりつく
回路を理解しよう
• +から回路をたどる
• LEDを通る
• 抵抗を通る
• ーにたどりつく
回路を理解しよう
• +から回路をたどる
• LEDを通る
• 抵抗を通る
• ーにたどりつく
回路を理解しよう
回路を理解しよう
• +から回路をたどる
• LEDを通る
• 抵抗を通る
• ーにたどりつく
• このような回路図
• 13番からLED
• LEDから抵抗
• 抵抗からGND
回路を理解しよう
プログラムを理解しよう
void	
  setup()	
  {	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
}
プログラムを理解しよう
void	
  setup()	
  {	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
}
2つのグループに分けられる
プログラムを理解しよう
void	
  setup()	
  {	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
}
プログラムを理解しよう
void	
  setup()	
  {	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
}
最初の1回だけ

実行される
プログラムを理解しよう
void	
  setup()	
  {	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
}
最初の1回だけ

実行される
繰り返し

実行される
プログラムを理解しよう
void	
  setup()	
  {	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
}
← 13番ピンを

  OUTPUTに使用する
プログラムを理解しよう
void	
  setup()	
  {	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
}
← 13番ピンを

  OUTPUTに使用する
=
+として

電流を出せるように
プログラムを理解しよう
void	
  setup()	
  {	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
}
← 13番ピンを

  HIGHに設定する
プログラムを理解しよう
void	
  setup()	
  {	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
}
← 13番ピンを

  HIGHに設定する
=
+から電流を出す
プログラムを理解しよう
void	
  setup()	
  {	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
}
← LOWにすると

  LEDは光らない
LEDを点滅させてみよう
void	
  setup()	
  {	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  delay(1000);	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  delay(1000);	
  
}
LEDを点滅させてみよう
ここをクリック
プログラムを理解しよう
void	
  setup()	
  {	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  delay(1000);	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  delay(1000);	
  
}
プログラムを理解しよう
void	
  setup()	
  {	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  delay(1000);	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  delay(1000);	
  
}
← 13番ピンを

  HIGHに設定する
+から電流を出す
=
プログラムを理解しよう
void	
  setup()	
  {	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  delay(1000);	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  delay(1000);	
  
}
← 1000ms (1秒間)

 そのままにする
プログラムを理解しよう
void	
  setup()	
  {	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  delay(1000);	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  delay(1000);	
  
}
← 13番ピンを

  LOWに設定する
=+からの電流を止める
プログラムを理解しよう
void	
  setup()	
  {	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  delay(1000);	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  delay(1000);	
  
}
← 1000ms (1秒間)

 そのままにする
LEDを点滅させてみよう
• チャレンジ: プログラムを改造してみよう
• 0.1秒点灯 / 0.1秒消灯
• 1秒点灯 / 0.5秒消灯
• (0.5秒点灯 / 1秒消灯) x 2 → 1秒点灯 / 0.5秒消灯
LEDを点滅させてみよう
• チャレンジ: 0.1秒点灯 / 0.1秒消灯
void	
  loop()	
  {	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  delay(100);	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  delay(100);	
  
}
LEDを点滅させてみよう
• チャレンジ: 1秒点灯 / 0.5秒消灯
void	
  loop()	
  {	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  delay(1000);	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  delay(500);	
  
}
LEDを点滅させてみよう
• 上級者向け: 回路とプログラムを改造してみよう
• 2つのLEDを点灯させてみよう
• setupとpinModeを同様に使えばよい
• 2つのLEDを点滅させてみよう
LEDを点滅させてみよう
• 上級者向け: 回路とプログラムを改造してみよう
• 2つのLEDを異なる周期で点滅させてみよう
• 1つ目は1秒ごと、2つ目は0.5秒ごとに点滅
• 1つ目は1秒ごと、2つ目は0.3秒ごとに点滅
• 変数と条件分岐(後述)を使えば良い
センサーを読み取ってみよう
• CdSセンサー
• 赤茶色の部分がCdS

(硫化カドミウム)
• 明るいと抵抗値が低く

暗いと抵抗値が高くなる
センサーを読み取ってみよう
回路設計
2923 28
• CdSセンサーは

どっち向きに

刺してもOK
• 抵抗はどれでもOK
回路設計
• 5Vピンから赤
• + (電源供給) の役割
• GNDピンから青
• − の役割
• A0ピンから緑
• センサーの値を

読み取る役割
センサーを読み取ってみよう
int	
  val;	
  
void	
  setup()	
  {	
  
	
  	
  Serial.begin(9600);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  val	
  =	
  analogRead(0);	
  
	
  	
  Serial.println(val);	
  
	
  	
  delay(100);	
  
}
センサーを読み取ってみよう
ここをクリック
センサーを読み取ってみよう
• 「ツール」の「シリアルモニタ」を選択
• 右下が「9600 bps」になっていることを確認
センサーを読み取ってみよう
• 手をかざして値の変化を見てみる
• +から回路をたどる
• 抵抗を通る
• 枝分かれ
• CdSセンサーを通る
• ーにたどりつく
回路を理解しよう
• +から回路をたどる
• 抵抗を通る
• 枝分かれ
• CdSセンサーを通る
• ーにたどりつく
回路を理解しよう
• +から回路をたどる
• 抵抗を通る
• 枝分かれ
• CdSセンサーを通る
• ーにたどりつく
回路を理解しよう
• +から回路をたどる
• 抵抗を通る
• 枝分かれ
• CdSセンサーを通る
• ーにたどりつく
回路を理解しよう
• +から回路をたどる
• 抵抗を通る
• 枝分かれ
• CdSセンサーを通る
• ーにたどりつく
回路を理解しよう
• +から回路をたどる
• 抵抗を通る
• 枝分かれ
• CdSセンサーを通る
• ーにたどりつく
回路を理解しよう
• +から回路をたどる
• 抵抗を通る
• 枝分かれ
• CdSセンサーを通る
• ーにたどりつく
回路を理解しよう
• +から回路をたどる
• 抵抗を通る
• 枝分かれ
• CdSセンサーを通る
• ーにたどりつく
回路を理解しよう
• +から回路をたどる
• 抵抗を通る
• 枝分かれ
• CdSセンサーを通る
• ーにたどりつく
回路を理解しよう
• +から回路をたどる
• 抵抗を通る
• 枝分かれ
• CdSセンサーを通る
• ーにたどりつく
回路を理解しよう
• +から回路をたどる
• 抵抗を通る
• 枝分かれ
• A0にたどりつく
• ーにたどりつく
回路を理解しよう
回路を理解しよう
• このような回路図
• 5Vから抵抗
• 枝分かれしてA0
• センサーからGND
センサーを読み取ってみよう
• CdSセンサー
• 赤茶色の部分がCdS

(硫化カドミウム)
• 明るいと抵抗値が低く

暗いと抵抗値が高くなる
センサーを読み取ってみよう
• CdSセンサー
• 赤茶色の部分がCdS

(硫化カドミウム)
• 明るいと抵抗値が低く

暗いと抵抗値が高くなる
回路を理解しよう
• 明るいとき
• センサーの抵抗値が

高くなる
• A0の電圧が

高くなる
回路を理解しよう
• 暗いとき
• センサーの抵抗値が

低くなる
• A0の電圧が

低くなる
int	
  val;	
  
void	
  setup()	
  {	
  
	
  	
  Serial.begin(9600);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  val	
  =	
  analogRead(0);	
  
	
  	
  Serial.println(val);	
  
	
  	
  delay(100);	
  
}
プログラムを理解しよう
← valという変数を宣言
プログラミングの基本概念
• 変数 = 情報を記録しておくための領域
プログラミングの基本概念
• 変数 = 情報を記録しておくための領域
int	
  val;	
  
val	
  =	
  100;	
  
delay(val);	
  
val	
  =	
  200;	
  
delay(val);
← 変数宣言
  valという領域を

  作る
プログラミングの基本概念
• 変数 = 情報を記録しておくための領域
int	
  val;	
  
val	
  =	
  100;	
  
delay(val);	
  
val	
  =	
  200;	
  
delay(val);
val
← 変数宣言
  valという領域を

  作る
プログラミングの基本概念
• 変数 = 情報を記録しておくための領域
int	
  val;	
  
val	
  =	
  100;	
  
delay(val);	
  
val	
  =	
  200;	
  
delay(val);
← 代入
  valを100と

  設定する 
← 変数宣言
val
プログラミングの基本概念
• 変数 = 情報を記録しておくための領域
int	
  val;	
  
val	
  =	
  100;	
  
delay(val);	
  
val	
  =	
  200;	
  
delay(val);
← 代入
  valを100と

  設定する 
← 変数宣言
val
100
プログラミングの基本概念
• 変数 = 情報を記録しておくための領域
int	
  val;	
  
val	
  =	
  100;	
  
delay(val);	
  
val	
  =	
  200;	
  
delay(val);
← 変数宣言
val
100← 代入 
← 100ミリ秒待つ
プログラミングの基本概念
• 変数 = 情報を記録しておくための領域
int	
  val;	
  
val	
  =	
  100;	
  
delay(val);	
  
val	
  =	
  200;	
  
delay(val);
← 変数宣言
val
100← 代入 
← 代入
  valを200と

  設定する 
← 100ミリ秒待つ
プログラミングの基本概念
• 変数 = 情報を記録しておくための領域
int	
  val;	
  
val	
  =	
  100;	
  
delay(val);	
  
val	
  =	
  200;	
  
delay(val);
← 変数宣言
val
200← 代入 
← 代入
  valを200と

  設定する 
← 100ミリ秒待つ
← 代入 
プログラミングの基本概念
• 変数 = 情報を記録しておくための領域
int	
  val;	
  
val	
  =	
  100;	
  
delay(val);	
  
val	
  =	
  200;	
  
delay(val);
← 変数宣言
val
200← 代入 
← 200ミリ秒待つ
← 100ミリ秒待つ
int	
  val;	
  
void	
  setup()	
  {	
  
	
  	
  Serial.begin(9600);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  val	
  =	
  analogRead(0);	
  
	
  	
  Serial.println(val);	
  
	
  	
  delay(100);	
  
}
プログラムを理解しよう
← valという変数を宣言
int	
  val;	
  
void	
  setup()	
  {	
  
	
  	
  Serial.begin(9600);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  val	
  =	
  analogRead(0);	
  
	
  	
  Serial.println(val);	
  
	
  	
  delay(100);	
  
}
プログラムを理解しよう
← シリアル通信の

  速度を設定
• シリアル通信 = ArduinoとPC間での通信ができる

       シリアルモニタで送受信ができる
プログラミングの基本概念
• シリアル通信 = ArduinoとPC間での通信ができる

       シリアルモニタで送受信ができる
プログラミングの基本概念
Serial.begin(9600); - 通信の速度を設定する
• シリアル通信 = ArduinoとPC間での通信ができる

       シリアルモニタで送受信ができる
プログラミングの基本概念
← PC側の設定と

  一致していないと

  正しく通信できない
Serial.begin(9600); - 通信の速度を設定する
• シリアル通信 = ArduinoとPC間での通信ができる

       シリアルモニタで送受信ができる
プログラミングの基本概念
Serial.begin(9600); - 通信の速度を設定する
Serial.println(データ);

	
  	
   - データを1行分PCへ送信する
Serial.print(データ);

	
  	
   - データをPCへ送信する(改行されない)
int	
  val;	
  
void	
  setup()	
  {	
  
	
  	
  Serial.begin(9600);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  val	
  =	
  analogRead(0);	
  
	
  	
  Serial.println(val);	
  
	
  	
  delay(100);	
  
}
プログラムを理解しよう
← A0ポートの電圧を

  数値として読み取る
  0 5Vが0 1023に対応
int	
  val;	
  
void	
  setup()	
  {	
  
	
  	
  Serial.begin(9600);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  val	
  =	
  analogRead(0);	
  
	
  	
  Serial.println(val);	
  
	
  	
  delay(100);	
  
}
プログラムを理解しよう
← valに記憶された

  A0の値を

  シリアル通信で送信
int	
  val;	
  
void	
  setup()	
  {	
  
	
  	
  Serial.begin(9600);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  val	
  =	
  analogRead(0);	
  
	
  	
  Serial.println(val);	
  
	
  	
  delay(100);	
  
}
プログラムを理解しよう
← 100ms (0.1秒間) 待つ
回路を理解しよう
• 明るいとき
• センサーの抵抗値が

低くなる
• A0の電圧が

低くなる
回路を理解しよう
• 暗いとき
• センサーの抵抗値が

高くなる
• A0の電圧が

高くなる
センサーを読み取ってみよう
• 手をかざして値の変化を見てみる
• 明るい時に低く、暗い時に高くなっているはず
センサーを読み取ってみよう
• チャレンジ: プログラムを改造してみよう
• 0.5秒ごとに読み取った値を送る
• 送る値を明るい時は低く、暗い時は高いまま
0 511にする
センサーを読み取ってみよう
• チャレンジ: 0.5秒ごとに読み取った値を送る
void	
  loop()	
  {	
  
	
  	
  val	
  =	
  analogRead(0);	
  
	
  	
  Serial.println(val);	
  
	
  	
  delay(500);	
  
}
センサーを読み取ってみよう
• チャレンジ: 送る値を0 511にする
void	
  loop()	
  {	
  
	
  	
  val	
  =	
  analogRead(0);	
  
	
  	
  Serial.println(val	
  /	
  2);	
  
	
  	
  delay(100);	
  
}
analogReadで読み取る値は0 1023なので
2で割ると切り捨てられて0 511になる
センサーを読み取ってみよう
• 上級者向け: 回路を改造してみよう
• プログラムはそのままでLEDを追加して

暗い時ほど明るく光るようにする
• ヒント: 暗い時ほどLEDに

    高い電圧がかかればよい
センサーとLEDを組み合わせてみよう
回路設計
• 右半分は

さっきと同じ
• LEDは21番に

足の長い方を
• 抵抗は

どれでもOK2115 20
回路設計
• A0ピンから緑
• センサーの値を

読み取る役割
• 13番ピンから黄
• LEDに電気を流す役割
センサーとLEDを組み合わせてみよう
int	
  val;	
  
void	
  setup()	
  {	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  val	
  =	
  analogRead(0);	
  
	
  	
  if	
  (val	
  >	
  800)	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  }	
  else	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  }	
  
	
  	
  delay(100);	
  
}
センサーとLEDを組み合わせてみよう
ここをクリック
• LEDの回路と

センサーの回路を

そのまま

組み合わせた
• GNDは共通して

−の列を使う
回路を理解しよう
• LEDの回路と

センサーの回路を

そのまま

組み合わせた
• GNDは共通して

−の列を使う
回路を理解しよう
← A0ポートの電圧を

  数値として読み取る
int	
  val;	
  
void	
  setup()	
  {	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  val	
  =	
  analogRead(0);	
  
	
  	
  if	
  (val	
  >	
  800)	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  }	
  else	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  }	
  
	
  	
  delay(100);	
  
}
プログラムを理解しよう
int	
  val;	
  
void	
  setup()	
  {	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  val	
  =	
  analogRead(0);	
  
	
  	
  if	
  (val	
  >	
  800)	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  }	
  else	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  }	
  
	
  	
  delay(100);	
  
}
プログラムを理解しよう
← 条件分岐
プログラミングの基本概念
• 条件分岐 = 状況に応じて実行内容を変える
if	
  (条件)	
  {	
  
	
  	
  処理1;	
  
}	
  else	
  { 	
  
	
  	
  処理2;	
  
}
プログラミングの基本概念
• 条件分岐 = 状況に応じて実行内容を変える
if	
  (
	
  	
  
}	
  else	
  {
	
  	
  
}
条件にあてはまるとき
 ・処理1は実行される

 ・処理2は無視される
if	
  (条件)	
  {	
  
	
  	
  処理1;	
  
}
プログラミングの基本概念
• 条件分岐 = 状況に応じて実行内容を変える
if	
  (
	
  	
  
}	
  else	
  {
	
  	
  
}
条件にあてはまらないとき
 ・処理1は無視される

 ・処理2は実行される
	
  	
  else	
  { 	
  
	
  	
  処理2;	
  
}
プログラミングの基本概念
• 条件分岐 = 状況に応じて実行内容を変える
if	
  (条件)	
  {	
  
	
  	
  処理;	
  
}
条件にあてはまるときだけ
処理が実行される
プログラミングの基本概念
• 条件分岐 = 状況に応じて実行内容を変える
if	
  (条件1)	
  {	
  
	
  	
  処理1;	
  
}	
  else	
  if	
  (条件2)	
  { 	
  
	
  	
  処理2;	
  
}	
  else	
  { 	
  
	
  	
  処理3;	
  
}
プログラミングの基本概念
• 条件分岐 = 状況に応じて実行内容を変える
if	
  (
	
  	
  
}	
  else	
  if	
  (
	
  	
  
}	
  else	
  {
	
  	
  
}
if	
  (条件1)	
  {	
  
	
  	
  処理1;	
  
}
条件1にあてはまるとき
 ・処理1は実行される

 ・処理2は無視される
 ・処理3は無視される
プログラミングの基本概念
• 条件分岐 = 状況に応じて実行内容を変える
if	
  (
	
  	
  
}	
  else	
  if	
  (
	
  	
  
}	
  else	
  {
	
  	
  
}
	
  	
  else	
  if	
  (条件2)	
  { 	
  
	
  	
  処理2;	
  
}	
  else	
  { 	
  
	
  	
  処理3;	
  
}
条件1にあてはまらないとき
プログラミングの基本概念
• 条件分岐 = 状況に応じて実行内容を変える
if	
  (
	
  	
  
}	
  else	
  if	
  (
	
  	
  
}	
  else	
  {
	
  	
  
}
	
  	
  else	
  if	
  (条件2)	
  { 	
  
	
  	
  処理2;	
  
}
条件1にあてはまらず
条件2にあてはまるとき
 ・処理1は無視される

 ・処理2は実行される
 ・処理3は無視される
プログラミングの基本概念
• 条件分岐 = 状況に応じて実行内容を変える
if	
  (
	
  	
  
}	
  else	
  if	
  (
	
  	
  
}	
  else	
  {
	
  	
  
}
	
  	
  else	
  { 	
  
	
  	
  処理3;	
  
}
条件1にあてはまらず
条件2もあてはまらないとき
 ・処理1は無視される

 ・処理2は無視される
 ・処理3は実行される
プログラミングの基本概念
• 条件分岐 = 状況に応じて実行内容を変える
if	
  (条件1)	
  {	
  
	
  	
  処理1;	
  
}	
  else	
  if	
  (条件2)	
  { 	
  
	
  	
  処理2;	
  
}
条件1にあてはまるとき
処理1が実行される
条件1にあてはまらず
条件2にあてはまるとき

処理2は実行される
int	
  val;	
  
void	
  setup()	
  {	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  val	
  =	
  analogRead(0);	
  
	
  	
  if	
  (val	
  >	
  800)	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  }	
  else	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  }	
  
	
  	
  delay(100);	
  
}
プログラムを理解しよう
← valが800より大きいか
int	
  val;	
  
void	
  setup()	
  {	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  val	
  =	
  analogRead(0);	
  
	
  	
  if	
  (val	
  >	
  800)	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  }	
  else	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  }	
  
	
  	
  delay(100);	
  
}
プログラムを理解しよう
← valが800より大きいか
=
センサーの値が

800より大きいか
int	
  val;	
  
void	
  setup()	
  {	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  val	
  =	
  analogRead(0);	
  
	
  	
  if	
  (val	
  >	
  800)	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  }	
  else	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  }	
  
	
  	
  delay(100);	
  
}
プログラムを理解しよう
← valが800より大きいか
=
センサーの値が

800より大きいか
≒
ある程度以上明るいか
int
void
	
  	
  
}	
  
void
	
  	
  val	
  =	
  
	
  	
  
	
  	
  	
  	
  
	
  	
  }	
  
	
  	
  	
  	
  
	
  	
  }
	
  	
  
}
int	
  val;	
  
void	
  setup()	
  {	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  val	
  =	
  analogRead(0);	
  
	
  	
  if	
  (val	
  >	
  800)	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  }	
  
	
  	
  	
  	
  
	
  	
  	
  
	
  	
  delay(100);	
  
}
プログラムを理解しよう
← 明るい時は

  13番ピンをHIGHに
int
void
	
  	
  
}	
  
void
	
  	
  val	
  =	
  
	
  	
  
	
  	
  	
  	
  
	
  	
  }	
  
	
  	
  	
  	
  
	
  	
  }
	
  	
  
}
int	
  val;	
  
void	
  setup()	
  {	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  val	
  =	
  analogRead(0);	
  
	
  	
  if	
  (val	
  >	
  800)	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  }	
  
	
  	
  	
  	
  
	
  	
  	
  
	
  	
  delay(100);	
  
}
プログラムを理解しよう
← 明るい時は

  13番ピンをHIGHに
LEDに電流を送る=
int
void
	
  	
  
}	
  
void
	
  	
  val	
  =	
  
	
  	
  
	
  	
  	
  	
  
	
  	
  }	
  
	
  	
  	
  	
  
	
  	
  }
	
  	
  
}
int	
  val;	
  
void	
  setup()	
  {	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  val	
  =	
  analogRead(0);	
  
	
  	
  
	
  	
  	
  	
  
	
  	
  	
  	
  else	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  }	
  
	
  	
  delay(100);	
  
}
プログラムを理解しよう
← 暗い時は

  13番ピンをLOWに
int
void
	
  	
  
}	
  
void
	
  	
  val	
  =	
  
	
  	
  
	
  	
  	
  	
  
	
  	
  }	
  
	
  	
  	
  	
  
	
  	
  }
	
  	
  
}
int	
  val;	
  
void	
  setup()	
  {	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  val	
  =	
  analogRead(0);	
  
	
  	
  
	
  	
  	
  	
  
	
  	
  	
  	
  else	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  }	
  
	
  	
  delay(100);	
  
}
プログラムを理解しよう
← 暗い時は

  13番ピンをLOWに
LEDへの電流を止める
=
int	
  val;	
  
void	
  setup()	
  {	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  val	
  =	
  analogRead(0);	
  
	
  	
  if	
  (val	
  >	
  800)	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  }	
  else	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  }	
  
	
  	
  delay(100);	
  
}
プログラムを理解しよう
← 100ms (0.1秒) 間待つ
センサーを読み取ってみよう
• チャレンジ: プログラムを改造してみよう
• 明るい時に点灯し、暗い時に消灯させる
int	
  val;	
  
void	
  setup()	
  {	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}
センサーを読み取ってみよう
• チャレンジ: 明るい時に点灯・暗い時に消灯させる
void	
  loop()	
  {	
  
	
  	
  val	
  =	
  analogRead(0);	
  
	
  	
  if	
  (val	
  >	
  800)	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  }	
  else	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  }	
  
	
  	
  delay(100);	
  
}
HIGHとLOWを

逆にすれば良い
センサーを読み取ってみよう
• 上級者向け: 回路とプログラムを改造してみよう
• 2つのLEDを使って

明るい時は1つのLEDを点灯

暗い時はもう1つのLEDを点灯させる
センサーを読み取ってみよう
• 上級者向け: 回路とプログラムを改造してみよう
• 3秒以上暗いと点灯
• ヒント: millis()で起動からの時間がわかる
• ヒント: 暗くなった瞬間の時間を記憶する変数
加速度を読み取ってみよう
Vdd
Enable
GND
OutX
OutY
OutZ
• 3軸加速度センサー
• タテ・ヨコ・奥行きにかかる

重力の大きさがわかる
• どれくらいの割合で

かかっているかで

傾きがわかる
• スマートフォンにも搭載
加速度を読み取ってみよう
Vdd
Enable
GND
OutX
OutY
OutZ
• Vdd: 電源供給 (+)
• Enable: 通電しているときのみ

    動作する
• GND: GNDにつなぐ (ー)
加速度を読み取ってみよう
Vdd
Enable
GND
OutX
OutY
OutZ
• Out X: X軸の加速度
• Out Y: Y軸の加速度
• Out Z: Z軸の加速度
X軸
Y軸
加速度を読み取ってみよう
回路設計
• 上半分
• センサーの1, 2に+を接続
• センサーの3にーを接続
3027
回路設計
• 下半分
• センサーの6が緑
• センサーの7が黄
• センサーの8が黒
3027
回路設計
• A0ピンから黒
• Z軸のデータ
• A1ピンから黄
• Y軸のデータ
• A2ピンから緑
• X軸のデータ
int	
  x,	
  y,	
  z;	
  
void	
  setup()	
  {	
  
	
  	
  Serial.begin(9600);	
  
}
加速度を読み取ってみよう
void	
  loop()	
  {	
  
	
  	
  x	
  =	
  analogRead(2);	
  
	
  	
  y	
  =	
  analogRead(1);	
  
	
  	
  z	
  =	
  analogRead(0);	
  
	
  	
  Serial.print("X:	
  ");	
  
	
  	
  Serial.print(x);	
  
	
  	
  Serial.print(",	
  Y:	
  ");	
  
	
  	
  Serial.print(y);	
  
	
  	
  Serial.print(",	
  Z:	
  ");	
  
	
  	
  Serial.println(z);	
  
	
  	
  delay(500);	
  
}
加速度を読み取ってみよう
ここをクリック
加速度を読み取ってみよう
• 「ツール」の「シリアルモニタ」を選択
• 右下が「9600 bps」になっていることを確認
加速度を読み取ってみよう
• ボードを傾けて変化を見てみる
• どの向きに傾けるとX軸, Y軸, Z軸がどう変化するか
回路を理解しよう
• 加速度センサーと

対応するピンを

素直につないでいる
プログラムを理解しよう
int	
  x,	
  y,	
  z;	
  
void	
  setup()	
  {	
  
	
  	
  Serial.begin(9600);	
  
}
← x, y, zという3つの変数を宣言
プログラムを理解しよう
int	
  x,	
  y,	
  z;	
  
void	
  setup()	
  {	
  
	
  	
  Serial.begin(9600);	
  
}
← シリアル通信の速度を設定
プログラムを理解しよう
void	
  loop()	
  {	
  
	
  	
  x	
  =	
  analogRead(2);	
  
	
  	
  y	
  =	
  analogRead(1);	
  
	
  	
  z	
  =	
  analogRead(0);	
  
	
  	
  Serial.print("X:	
  ");	
  
	
  	
  Serial.print(x);	
  
	
  	
  Serial.print(",	
  Y:	
  ");	
  
	
  	
  Serial.print(y);	
  
	
  	
  Serial.print(",	
  Z:	
  ");	
  
	
  	
  Serial.println(z);	
  
	
  	
  delay(500);	
  
}
← A2のX軸の値を読み取る
プログラムを理解しよう
void	
  loop()	
  {	
  
	
  	
  x	
  =	
  analogRead(2);	
  
	
  	
  y	
  =	
  analogRead(1);	
  
	
  	
  z	
  =	
  analogRead(0);	
  
	
  	
  Serial.print("X:	
  ");	
  
	
  	
  Serial.print(x);	
  
	
  	
  Serial.print(",	
  Y:	
  ");	
  
	
  	
  Serial.print(y);	
  
	
  	
  Serial.print(",	
  Z:	
  ");	
  
	
  	
  Serial.println(z);	
  
	
  	
  delay(500);	
  
}
← A1のY軸の値を読み取る
プログラムを理解しよう
void	
  loop()	
  {	
  
	
  	
  x	
  =	
  analogRead(2);	
  
	
  	
  y	
  =	
  analogRead(1);	
  
	
  	
  z	
  =	
  analogRead(0);	
  
	
  	
  Serial.print("X:	
  ");	
  
	
  	
  Serial.print(x);	
  
	
  	
  Serial.print(",	
  Y:	
  ");	
  
	
  	
  Serial.print(y);	
  
	
  	
  Serial.print(",	
  Z:	
  ");	
  
	
  	
  Serial.println(z);	
  
	
  	
  delay(500);	
  
}
← A0のZ軸の値を読み取る
プログラムを理解しよう
void	
  loop()	
  {	
  
	
  	
  x	
  =	
  analogRead(2);	
  
	
  	
  y	
  =	
  analogRead(1);	
  
	
  	
  z	
  =	
  analogRead(0);	
  
	
  	
  Serial.print("X:	
  ");	
  
	
  	
  Serial.print(x);	
  
	
  	
  Serial.print(",	
  Y:	
  ");	
  
	
  	
  Serial.print(y);	
  
	
  	
  Serial.print(",	
  Z:	
  ");	
  
	
  	
  Serial.println(z);	
  
	
  	
  delay(500);	
  
}
← 読み取った値を

  シリアル通信で送る
プログラムを理解しよう
	
  	
  Serial.print("X:	
  ");	
  
	
  	
  Serial.print(x);	
  
	
  	
  Serial.print(",	
  Y:	
  ");	
  
	
  	
  Serial.print(y);	
  
	
  	
  Serial.print(",	
  Z:	
  ");	
  
	
  	
  Serial.println(z);
x = 50, y = 100, z = 150のとき
送信されたデータ「」
プログラムを理解しよう
	
  	
  Serial.print("X:	
  ");	
  
	
  	
  Serial.print(x);	
  
	
  	
  Serial.print(",	
  Y:	
  ");	
  
	
  	
  Serial.print(y);	
  
	
  	
  Serial.print(",	
  Z:	
  ");	
  
	
  	
  Serial.println(z);
x = 50, y = 100, z = 150のとき
← 「X: 」を送信
送信されたデータ「X: 」
プログラムを理解しよう
	
  	
  Serial.print("X:	
  ");	
  
	
  	
  Serial.print(x);	
  
	
  	
  Serial.print(",	
  Y:	
  ");	
  
	
  	
  Serial.print(y);	
  
	
  	
  Serial.print(",	
  Z:	
  ");	
  
	
  	
  Serial.println(z);
x = 50, y = 100, z = 150のとき
← 「50 」を送信
送信されたデータ「X: 50」
プログラムを理解しよう
	
  	
  Serial.print("X:	
  ");	
  
	
  	
  Serial.print(x);	
  
	
  	
  Serial.print(",	
  Y:	
  ");	
  
	
  	
  Serial.print(y);	
  
	
  	
  Serial.print(",	
  Z:	
  ");	
  
	
  	
  Serial.println(z);
x = 50, y = 100, z = 150のとき
← 「, Y: 」を送信
送信されたデータ「X: 50, Y: 」
プログラムを理解しよう
	
  	
  Serial.print("X:	
  ");	
  
	
  	
  Serial.print(x);	
  
	
  	
  Serial.print(",	
  Y:	
  ");	
  
	
  	
  Serial.print(y);	
  
	
  	
  Serial.print(",	
  Z:	
  ");	
  
	
  	
  Serial.println(z);
x = 50, y = 100, z = 150のとき
← 「100」を送信
送信されたデータ「X: 50, Y: 100」
プログラムを理解しよう
	
  	
  Serial.print("X:	
  ");	
  
	
  	
  Serial.print(x);	
  
	
  	
  Serial.print(",	
  Y:	
  ");	
  
	
  	
  Serial.print(y);	
  
	
  	
  Serial.print(",	
  Z:	
  ");	
  
	
  	
  Serial.println(z);
x = 50, y = 100, z = 150のとき
← 「, Z: 」を送信
送信されたデータ「X: 50, Y: 100, Z: 」
プログラムを理解しよう
	
  	
  Serial.print("X:	
  ");	
  
	
  	
  Serial.print(x);	
  
	
  	
  Serial.print(",	
  Y:	
  ");	
  
	
  	
  Serial.print(y);	
  
	
  	
  Serial.print(",	
  Z:	
  ");	
  
	
  	
  Serial.println(z);
x = 50, y = 100, z = 150のとき
← 「150」を送信して

  改行する
送信されたデータ「X: 50, Y: 100, Z: 150」
プログラムを理解しよう
void	
  loop()	
  {	
  
	
  	
  x	
  =	
  analogRead(2);	
  
	
  	
  y	
  =	
  analogRead(1);	
  
	
  	
  z	
  =	
  analogRead(0);	
  
	
  	
  Serial.print("X:	
  ");	
  
	
  	
  Serial.print(x);	
  
	
  	
  Serial.print(",	
  Y:	
  ");	
  
	
  	
  Serial.print(y);	
  
	
  	
  Serial.print(",	
  Z:	
  ");	
  
	
  	
  Serial.println(z);	
  
	
  	
  delay(500);	
  
}
← 読み取った値を

  シリアル通信で送る
プログラムを理解しよう
void	
  loop()	
  {	
  
	
  	
  x	
  =	
  analogRead(2);	
  
	
  	
  y	
  =	
  analogRead(1);	
  
	
  	
  z	
  =	
  analogRead(0);	
  
	
  	
  Serial.print("X:	
  ");	
  
	
  	
  Serial.print(x);	
  
	
  	
  Serial.print(",	
  Y:	
  ");	
  
	
  	
  Serial.print(y);	
  
	
  	
  Serial.print(",	
  Z:	
  ");	
  
	
  	
  Serial.println(z);	
  
	
  	
  delay(500);	
  
}
← 500ms (0.5秒間) 待つ
加速度とLEDを組み合わせてみよう
底面上面
• ブレッドボードをイラスト右側が底面になるように

立てるとLEDが点灯するようにしたい
加速度とLEDを組み合わせてみよう
回路設計
• さっきの回路にLEDを足す
• 黄色の線がLEDの

足の長い方と繋がる
• GNDはセンサーと共有
25
19
回路設計
• さっきの回路にLEDを足す
• 黄色の線が13番ピンに
int	
  x,	
  y,	
  z;	
  
void	
  setup()	
  {	
  
	
  	
  Serial.begin(9600);	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}
加速度とLEDを組み合わせてみよう
void	
  loop()	
  {	
  
	
  	
  x	
  =	
  analogRead(2);	
  
	
  	
  y	
  =	
  analogRead(1);	
  
	
  	
  z	
  =	
  analogRead(0);	
  
	
  	
  if	
  (x	
  >	
  700)	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  }	
  else	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  }	
  
	
  	
  delay(500);	
  
}
加速度とLEDを組み合わせてみよう
ここをクリック
回路を理解しよう
• さっきの回路に

LEDを足しただけ
プログラムを理解しよう
int	
  x,	
  y,	
  z;	
  
void	
  setup()	
  {	
  
	
  	
  Serial.begin(9600);	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}
← 13番ピンをOUTPUTに使用
プログラムを理解しよう
← x軸の値が700を

  超えたら

  13番ピンのLEDを点灯
void	
  loop()	
  {	
  
	
  	
  x	
  =	
  analogRead(2);	
  
	
  	
  y	
  =	
  analogRead(1);	
  
	
  	
  z	
  =	
  analogRead(0);	
  
	
  	
  if	
  (x	
  >	
  700)	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  }	
  else	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  }	
  
	
  	
  delay(500);	
  
}
プログラムを理解しよう
← x軸の値が700より

  低ければ

  13番ピンのLEDを消灯
void	
  loop()	
  {	
  
	
  	
  x	
  =	
  analogRead(2);	
  
	
  	
  y	
  =	
  analogRead(1);	
  
	
  	
  z	
  =	
  analogRead(0);	
  
	
  	
  if	
  (x	
  >	
  700)	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  }	
  else	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  }	
  
	
  	
  delay(500);	
  
}
加速度とLEDを組み合わせてみよう
上面
底面
• ブレッドボードをイラスト上部が底面になるように

立ててもLEDが点灯するようにしたい
加速度とLEDを組み合わせてみよう
void
	
  	
  x	
  =	
  
	
  	
  y	
  =	
  
	
  	
  z	
  =	
  
	
  	
  
	
  	
  	
  	
  
	
  	
  }	
  
	
  	
  	
  	
  
	
  	
  }
	
  	
  
}
	
  	
  if	
  (x	
  >	
  700	
  ||	
  y	
  >	
  700)	
  { ← この1行だけ

  変更する
加速度とLEDを組み合わせてみよう
ここをクリック
プログラムを理解しよう
← 条件が

  変更されている
void
	
  	
  x	
  =	
  
	
  	
  y	
  =	
  
	
  	
  z	
  =	
  
	
  	
  
	
  	
  	
  	
  
	
  	
  }	
  
	
  	
  	
  	
  
	
  	
  }
	
  	
  
}
	
  	
  if	
  (x	
  >	
  700	
  ||	
  y	
  >	
  700)	
  {
プログラミングの基本概念
x	
  >	
  700	
  ||	
  y	
  >	
  700	
  
   =	
  x	
  >	
  700	
  または	
  y	
  >	
  700	
  
x	
  >	
  700	
  &&	
  y	
  >	
  700	
  
   =	
  x	
  >	
  700	
  かつ	
  y	
  >	
  700	
  
• 二項演算子 = 「もしくは」「かつ」を表す
プログラミングの基本概念
x	
  >	
  700	
  ||	
  y	
  >	
  700	
  ||	
  z	
  >	
  700	
  
   =	
  x	
  >	
  700	
  または	
  y	
  >	
  700	
  または z	
  >	
  700
x	
  >	
  700	
  &&	
  y	
  >	
  700	
  &&	
  z	
  >	
  700	
  
   =	
  x	
  >	
  700	
  かつ	
  y	
  >	
  700	
  かつ z	
  >	
  700	
  
• 二項演算子 = 「もしくは」「かつ」を表す
プログラミングの基本概念
• 二項演算子 = 「もしくは」「かつ」を表す
x	
  >	
  700	
  ||	
  y	
  >	
  700	
  &&	
  z	
  >	
  700	
  
   =	
  x	
  >	
  700	
  または「y	
  >	
  700	
  かつ	
  z	
  >	
  700」
(x	
  >	
  700	
  ||	
  y	
  >	
  700)	
  &&	
  z	
  >	
  700	
  
   =「x	
  >	
  700	
  または y	
  >	
  700」かつ z	
  >	
  700
プログラミングの基本概念
x	
  >	
  700	
  ||	
  y	
  >	
  700	
  &&	
  z	
  >	
  700	
  
   =	
  x	
  >	
  700	
  または「y	
  >	
  700	
  かつ	
  z	
  >	
  700」
(x	
  >	
  700	
  ||	
  y	
  >	
  700)	
  &&	
  z	
  >	
  700	
  
   =「x	
  >	
  700	
  または y	
  >	
  700」かつ z	
  >	
  700
「もしくは」より「かつ」が優先される
• 二項演算子 = 「もしくは」「かつ」を表す
プログラムを理解しよう
← x > 700 または
  y > 700 のとき
  LEDが点灯する
void
	
  	
  x	
  =	
  
	
  	
  y	
  =	
  
	
  	
  z	
  =	
  
	
  	
  
	
  	
  	
  	
  
	
  	
  }	
  
	
  	
  	
  	
  
	
  	
  }
	
  	
  
}
	
  	
  if	
  (x	
  >	
  700	
  ||	
  y	
  >	
  700)	
  {
センサーを読み取ってみよう
• チャレンジ: 回路とプログラムを改造してみよう
• 上下をひっくり返したときに

LEDが点灯するようにする
• ヒント: シリアル通信でひっくり返した時の

    数値を確認するとよい
int	
  val;	
  
void	
  setup()	
  {	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}
センサーを読み取ってみよう
• チャレンジ: 上下ひっくり返すと点灯
zについての
条件を指定する
void	
  loop()	
  {	
  
	
  	
  x	
  =	
  analogRead(2);	
  
	
  	
  y	
  =	
  analogRead(1);	
  
	
  	
  z	
  =	
  analogRead(0);	
  
	
  	
  if	
  (z	
  <	
  100)	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  }	
  else	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  }	
  
	
  	
  delay(500);	
  
}
センサーを読み取ってみよう
• 上級者向け: 回路とプログラムを改造してみよう
• LEDを3つ使って、それぞれの方向に傾けた時に

それぞれ別のLEDが点灯するように
• ある方向に1回転した時にLEDが点灯するように
モーターを使ってみよう
• まずワイヤー線2本の先っぽを切り取り

軽くハサミを当てて皮膜を1cmほど外す
モーターを使ってみよう
• ダブルギアボックスからモーターを1つ取り出し

それぞれの端子に線を刺して軽くねじる
モーターを使ってみよう
• 電池ボックスを

つなげて

接続を確認する
モーターを使ってみよう
• TA7291P - モータードライバ
• モーターの制御に使う
1 10
モーターを使ってみよう
• TA7291P - モータードライバ
• 1 - GND
• 4 - 回転速度制御
• 今回は使わないので

8につなぐ
• 8 - モーター用電源入力
• 電池ボックスにつなぐ
1 84
モーターを使ってみよう
• TA7291P - モータードライバ
• 5, 6 - 回転方向制御
• Arduinoのピンにつなぐ
• 7 - 制御用電源入力
• Arduinoの5Vにつなぐ
5 6 7
モーターを使ってみよう
• TA7291P - モータードライバ
• 2, 10 - モーター制御
• モーター端子につなぐ
2 10
モーターを使ってみよう
モーターを使ってみよう
• ブレッドボードに

モーターと電池ケースを

つなげる
モーターを使ってみよう
• 上の+とーの列に

電池ボックスの

+とーを刺す
モーターを使ってみよう
• モータードライバを

外すとこうなる
• 21から30の部分に

モータードライバ
21 30
モーターへ
13番ピン
GND
12番ピン
5V
void	
  loop()	
  {	
  
	
  	
  digitalWrite(12,	
  LOW);	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  delay(1000);	
  
	
  	
  digitalWrite(12,	
  HIGH);	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  delay(1000);	
  
	
  	
  digitalWrite(12,	
  HIGH);	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  delay(1000);	
  
	
  	
  digitalWrite(12,	
  LOW);	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  delay(1000);	
  
}
void	
  setup()	
  {	
  
	
  	
  pinMode(12,	
  OUTPUT);	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}
モーターを使ってみよう
モーターを使ってみよう
ここをクリック
モーターを使ってみよう
• 1秒ごとに止まり、回転の向きが逆になるはず
• 部品が熱くなったり、焦げた匂いがしたりすれば

すぐに電池ボックスと5Vのピンを抜く
プログラムを理解しよう
void	
  loop()	
  {	
  
	
  	
  digitalWrite(12,	
  LOW);	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  delay(1000);	
  
	
  	
  digitalWrite(12,	
  HIGH);	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  delay(1000);	
  
	
  	
  digitalWrite(12,	
  HIGH);	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  delay(1000);	
  
	
  	
  digitalWrite(12,	
  LOW);	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  delay(1000);	
  
}
モータードライバの
回転方向制御ピンに

つながっている
Arduinoの12,13番ピンの
HIGH, LOWを制御する
プログラムを理解しよう
void	
  loop()	
  {	
  
	
  	
  digitalWrite(12,	
  LOW);	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  delay(1000);	
  
	
  	
  digitalWrite(12,	
  HIGH);	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  delay(1000);	
  
	
  	
  digitalWrite(12,	
  HIGH);	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  delay(1000);	
  
	
  	
  digitalWrite(12,	
  LOW);	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  delay(1000);	
  
}
ブレーキ
プログラムを理解しよう
void	
  loop()	
  {	
  
	
  	
  digitalWrite(12,	
  LOW);	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  delay(1000);	
  
	
  	
  digitalWrite(12,	
  HIGH);	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  delay(1000);	
  
	
  	
  digitalWrite(12,	
  HIGH);	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  delay(1000);	
  
	
  	
  digitalWrite(12,	
  LOW);	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  delay(1000);	
  
}
ブレーキ
逆転
プログラムを理解しよう
void	
  loop()	
  {	
  
	
  	
  digitalWrite(12,	
  LOW);	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  delay(1000);	
  
	
  	
  digitalWrite(12,	
  HIGH);	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  delay(1000);	
  
	
  	
  digitalWrite(12,	
  HIGH);	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  delay(1000);	
  
	
  	
  digitalWrite(12,	
  LOW);	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  delay(1000);	
  
}
ブレーキ
逆転
ストップ
プログラムを理解しよう
void	
  loop()	
  {	
  
	
  	
  digitalWrite(12,	
  LOW);	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  delay(1000);	
  
	
  	
  digitalWrite(12,	
  HIGH);	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  delay(1000);	
  
	
  	
  digitalWrite(12,	
  HIGH);	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  delay(1000);	
  
	
  	
  digitalWrite(12,	
  LOW);	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  delay(1000);	
  
}
ブレーキ
逆転
ストップ
正転
プログラムを理解しよう
void	
  loop()	
  {	
  
	
  	
  digitalWrite(12,	
  LOW);	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  delay(1000);	
  
	
  	
  digitalWrite(12,	
  HIGH);	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  delay(1000);	
  
	
  	
  digitalWrite(12,	
  HIGH);	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  delay(1000);	
  
	
  	
  digitalWrite(12,	
  LOW);	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  delay(1000);	
  
}
ブレーキ

= 電気的な抵抗で止める
逆転
ストップ
= 摩擦のみで止める
正転
モーターを使ってみよう
• チャレンジ: プログラムを改造してみよう
• 2秒正転→2秒逆転
モーターを使ってみよう
void	
  loop()	
  {	
  
	
  	
  digitalWrite(12,	
  LOW);	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  delay(2000);	
  
	
  	
  digitalWrite(12,	
  HIGH);	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  delay(2000);	
  
}
正転
逆転
• チャレンジ: 2秒正転→2秒逆転
モーターを使ってみよう
void
	
  	
  
	
  	
  
	
  	
  
	
  	
  
	
  	
  
	
  	
  
	
  	
  
	
  	
  
	
  	
  
	
  	
  
	
  	
  
	
  	
  
}
切り替える際に
ブレーキを挟んだほうが
モーターの摩耗が
少なくなる
	
  	
  digitalWrite(12,	
  LOW);	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  delay(100);
	
  	
  digitalWrite(12,	
  LOW);	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  delay(100);
2つのモーターを使ってみよう
• もう1つのモーターについても線をつける
2つのモーターを使ってみよう
• これも

電池ボックスを

つなげて

接続を確認する
2つのモーターを使ってみよう
• 説明書に従ってダブルギアボックスを組み立てる
• ギア比は114.7:1(Cタイプ)となるようにする
• 細かい部品が多いので無くさないようにすること
2つのモーターを使ってみよう
• 6角ネジの位置は短いシャフトで合わせるとよい
2つのモーターを使ってみよう
• これも

電池ボックスを

つなげて

接続を確認する
2つのモーターを使ってみよう
2つのモーターを使ってみよう
• 線対称的にモーターと

モータードライバーを配置
• 電源・GNDは共有
2つのモーターを使ってみよう
• モータードライバーを

外すとこうなる
• 21から30の部分に

モータードライバ
モーターへ
13番ピン
GND
12番ピン
5V
11番ピン
10番ピン
モーターへ
void	
  setup()	
  {	
  
	
  	
  pinMode(10,	
  OUTPUT);	
  
	
  	
  pinMode(11,	
  OUTPUT);	
  
	
  	
  pinMode(12,	
  OUTPUT);	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}
2つのモーターを使ってみよう
void	
  loop()	
  {	
  
	
  	
  digitalWrite(10,	
  HIGH);	
  
	
  	
  digitalWrite(11,	
  LOW);	
  
	
  	
  digitalWrite(12,	
  HIGH);	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  delay(1000);	
  
	
  	
  digitalWrite(10,	
  LOW);	
  
	
  	
  digitalWrite(11,	
  LOW);	
  
	
  	
  digitalWrite(12,	
  LOW);	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  delay(1000);	
  
}
2つのモーターを使ってみよう
ここをクリック
2つのモーターを使ってみよう
• チャレンジ: プログラムを改造してみよう
• 2秒正転→2秒逆転
2つのモーターを使ってみよう
	
  	
  digitalWrite(10,	
  LOW);	
  
	
  	
  digitalWrite(11,	
  HIGH);	
  
	
  	
  digitalWrite(12,	
  LOW);	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  delay(2000);	
  
	
  	
  digitalWrite(10,	
  LOW);	
  
	
  	
  digitalWrite(11,	
  LOW);	
  
	
  	
  digitalWrite(12,	
  LOW);	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  delay(100);	
  
}
void	
  loop()	
  {	
  
	
  	
  digitalWrite(10,	
  HIGH);	
  
	
  	
  digitalWrite(11,	
  LOW);	
  
	
  	
  digitalWrite(12,	
  HIGH);	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  delay(2000);	
  
	
  	
  digitalWrite(10,	
  LOW);	
  
	
  	
  digitalWrite(11,	
  LOW);	
  
	
  	
  digitalWrite(12,	
  LOW);	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  delay(100);	
  
2つのモーターを使ってみよう
• 上級者向け: プログラムを改造してみよう
• 2つのモーターが異なる周期で動くようにする
• 1つのモーターは2秒正転→1秒逆転
• もう1つのモーターは1秒正転→1秒逆転
独立して動くようにしてみよう
独立して動くようにしてみよう
• 9V電池の赤をVinに

黒をGNDにつなぐ
• USBを外しても

動くようになる
車輪をつけてみよう
車輪をつけてみよう
車輪をつけてみよう
• 必要な部品は、以下のとおり
• スポーツタイヤセット
• ユニバーサルプレート: 2チームで1箱
• ボールキャスター: 2チームで1セット
車輪をつけてみよう
• まず、裏側にダブルギアボックスをつける
• 説明書と違い、以下のように支えをつけるとよい
車輪をつけてみよう
• 次に、ボールキャスターをつける
• 37mmになるように組み立てる
• 電池ボックスも両面テープで裏側につけておく
車輪をつけてみよう
• Arduino、ブレッドボード、9V電池は表面に
• 先ほどと全く同じように配線する
• 左右で回転の向きが違う場合は

モーターの接続先を逆にすればよい
2つのモーターを使ってみよう
• チャレンジ: プログラムを改造してみよう
• 2秒右折→2秒左折
• ヒント: 左右のタイヤを逆向きに回転させると

    曲がることができる
2つのモーターを使ってみよう
	
  	
  
	
  	
  
	
  	
  
	
  	
  
	
  	
  
	
  	
  
	
  	
  
	
  	
  
	
  	
  
	
  	
  
}
void
	
  	
  
	
  	
  
	
  	
  
	
  	
  
	
  	
  
	
  	
  
	
  	
  
	
  	
  
	
  	
  
	
  	
  
	
  	
  digitalWrite(12,	
  HIGH);	
  
	
  	
  digitalWrite(13,	
  LOW);
	
  	
  digitalWrite(12,	
  LOW);	
  
	
  	
  digitalWrite(13,	
  HIGH);
加速度センサーを載せてみよう
加速度センサーを載せてみよう
• 加速度センサーのVccは

3.3Vに接続する
• 3.3Vでも動作する
• GNDも忘れずに
A0ピン
A1ピン
A2ピン
3.3V
加速度センサーを載せてみよう
• アクティビティ: 自動で高いところへと向かう車を

        作ってみよう
• 加速度に応じて進行方向を変える
• ヒント: 条件分岐と車の制御を組み合わせる
加速度センサーを載せてみよう
• 上級者向け: 高いところで自動で止まるには?
• 上級者向け: 山が複数あるところで

      一番高いところを見つけるには?
• ヒント: プログラミングでいうところの

    最適化問題を物理的に再現してみました
• キーワード: 山登り法、焼きなまし法

More Related Content

What's hot

Android起動周りのノウハウ
Android起動周りのノウハウAndroid起動周りのノウハウ
Android起動周りのノウハウchancelab
 
GCを発生させないJVMとコーディングスタイル
GCを発生させないJVMとコーディングスタイルGCを発生させないJVMとコーディングスタイル
GCを発生させないJVMとコーディングスタイルKenji Kazumura
 
2016年12月21日 AITCシニア技術者勉強会 第2回「センサに反応する総天然色イルミネーションを作ってみよう!」
2016年12月21日 AITCシニア技術者勉強会 第2回「センサに反応する総天然色イルミネーションを作ってみよう!」 2016年12月21日 AITCシニア技術者勉強会 第2回「センサに反応する総天然色イルミネーションを作ってみよう!」
2016年12月21日 AITCシニア技術者勉強会 第2回「センサに反応する総天然色イルミネーションを作ってみよう!」 aitc_jp
 
Versatil Javaチューニング
Versatil JavaチューニングVersatil Javaチューニング
Versatil JavaチューニングKenji Kazumura
 
人狼知能プログラミング演習資料2015
人狼知能プログラミング演習資料2015人狼知能プログラミング演習資料2015
人狼知能プログラミング演習資料2015Kosuke Shinoda
 
HalideでつくるDomain Specific Architectureの世界
HalideでつくるDomain Specific Architectureの世界HalideでつくるDomain Specific Architectureの世界
HalideでつくるDomain Specific Architectureの世界Fixstars Corporation
 
Enjoy handwritten digits recognition AI !!
Enjoy handwritten digits recognition AI !!Enjoy handwritten digits recognition AI !!
Enjoy handwritten digits recognition AI !!KAIKenzo
 
Chainer でのプロファイリングをちょっと楽にする話
Chainer でのプロファイリングをちょっと楽にする話Chainer でのプロファイリングをちょっと楽にする話
Chainer でのプロファイリングをちょっと楽にする話NVIDIA Japan
 
HeapStats @ Seasar Conference 2015 LT
HeapStats @ Seasar Conference 2015 LTHeapStats @ Seasar Conference 2015 LT
HeapStats @ Seasar Conference 2015 LTYuji Kubota
 
Androidプログラミング初心者のためのゲームアプリ開発入門
Androidプログラミング初心者のためのゲームアプリ開発入門Androidプログラミング初心者のためのゲームアプリ開発入門
Androidプログラミング初心者のためのゲームアプリ開発入門Masahiko Mizuta
 
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法Hiroshi Yoshida
 
ARコンテンツ作成勉強会:Myoを用いたVRコンテンツ開発
ARコンテンツ作成勉強会:Myoを用いたVRコンテンツ開発ARコンテンツ作成勉強会:Myoを用いたVRコンテンツ開発
ARコンテンツ作成勉強会:Myoを用いたVRコンテンツ開発Takashi Yoshinaga
 
ピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築するピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築するTakahito Tejima
 
AOZORAYOMITE and Intent
AOZORAYOMITE and IntentAOZORAYOMITE and Intent
AOZORAYOMITE and IntentYuki Higuchi
 
EnrootとPyxisで快適コンテナ生活
EnrootとPyxisで快適コンテナ生活EnrootとPyxisで快適コンテナ生活
EnrootとPyxisで快適コンテナ生活Kuninobu SaSaki
 
HeapStats: Introduction and Technical Preview
HeapStats: Introduction and Technical PreviewHeapStats: Introduction and Technical Preview
HeapStats: Introduction and Technical PreviewYuji Kubota
 
「モデル検査」のススメ (ゲームシナリオ進行編)
「モデル検査」のススメ (ゲームシナリオ進行編)「モデル検査」のススメ (ゲームシナリオ進行編)
「モデル検査」のススメ (ゲームシナリオ進行編)Masaru Nagaku
 
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正前 typoあり)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正前 typoあり)」「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正前 typoあり)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正前 typoあり)」ManaMurakami1
 
オンライン広告入札システムとZGC ( JJUG CCC 2021 Spring )
オンライン広告入札システムとZGC ( JJUG CCC 2021 Spring )オンライン広告入札システムとZGC ( JJUG CCC 2021 Spring )
オンライン広告入札システムとZGC ( JJUG CCC 2021 Spring )Hironobu Isoda
 

What's hot (20)

Android起動周りのノウハウ
Android起動周りのノウハウAndroid起動周りのノウハウ
Android起動周りのノウハウ
 
GCを発生させないJVMとコーディングスタイル
GCを発生させないJVMとコーディングスタイルGCを発生させないJVMとコーディングスタイル
GCを発生させないJVMとコーディングスタイル
 
2016年12月21日 AITCシニア技術者勉強会 第2回「センサに反応する総天然色イルミネーションを作ってみよう!」
2016年12月21日 AITCシニア技術者勉強会 第2回「センサに反応する総天然色イルミネーションを作ってみよう!」 2016年12月21日 AITCシニア技術者勉強会 第2回「センサに反応する総天然色イルミネーションを作ってみよう!」
2016年12月21日 AITCシニア技術者勉強会 第2回「センサに反応する総天然色イルミネーションを作ってみよう!」
 
Versatil Javaチューニング
Versatil JavaチューニングVersatil Javaチューニング
Versatil Javaチューニング
 
人狼知能プログラミング演習資料2015
人狼知能プログラミング演習資料2015人狼知能プログラミング演習資料2015
人狼知能プログラミング演習資料2015
 
HalideでつくるDomain Specific Architectureの世界
HalideでつくるDomain Specific Architectureの世界HalideでつくるDomain Specific Architectureの世界
HalideでつくるDomain Specific Architectureの世界
 
Enjoy handwritten digits recognition AI !!
Enjoy handwritten digits recognition AI !!Enjoy handwritten digits recognition AI !!
Enjoy handwritten digits recognition AI !!
 
Chainer でのプロファイリングをちょっと楽にする話
Chainer でのプロファイリングをちょっと楽にする話Chainer でのプロファイリングをちょっと楽にする話
Chainer でのプロファイリングをちょっと楽にする話
 
HeapStats @ Seasar Conference 2015 LT
HeapStats @ Seasar Conference 2015 LTHeapStats @ Seasar Conference 2015 LT
HeapStats @ Seasar Conference 2015 LT
 
Androidプログラミング初心者のためのゲームアプリ開発入門
Androidプログラミング初心者のためのゲームアプリ開発入門Androidプログラミング初心者のためのゲームアプリ開発入門
Androidプログラミング初心者のためのゲームアプリ開発入門
 
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
 
ARコンテンツ作成勉強会:Myoを用いたVRコンテンツ開発
ARコンテンツ作成勉強会:Myoを用いたVRコンテンツ開発ARコンテンツ作成勉強会:Myoを用いたVRコンテンツ開発
ARコンテンツ作成勉強会:Myoを用いたVRコンテンツ開発
 
ピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築するピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築する
 
AOZORAYOMITE and Intent
AOZORAYOMITE and IntentAOZORAYOMITE and Intent
AOZORAYOMITE and Intent
 
EnrootとPyxisで快適コンテナ生活
EnrootとPyxisで快適コンテナ生活EnrootとPyxisで快適コンテナ生活
EnrootとPyxisで快適コンテナ生活
 
HeapStats: Introduction and Technical Preview
HeapStats: Introduction and Technical PreviewHeapStats: Introduction and Technical Preview
HeapStats: Introduction and Technical Preview
 
「モデル検査」のススメ (ゲームシナリオ進行編)
「モデル検査」のススメ (ゲームシナリオ進行編)「モデル検査」のススメ (ゲームシナリオ進行編)
「モデル検査」のススメ (ゲームシナリオ進行編)
 
TVM の紹介
TVM の紹介TVM の紹介
TVM の紹介
 
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正前 typoあり)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正前 typoあり)」「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正前 typoあり)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正前 typoあり)」
 
オンライン広告入札システムとZGC ( JJUG CCC 2021 Spring )
オンライン広告入札システムとZGC ( JJUG CCC 2021 Spring )オンライン広告入札システムとZGC ( JJUG CCC 2021 Spring )
オンライン広告入札システムとZGC ( JJUG CCC 2021 Spring )
 

Viewers also liked

Why don't you learn programming?
Why don't you learn programming?Why don't you learn programming?
Why don't you learn programming?Hiromu Yakura
 
Trendmicro Security Award 2012 Final Presentation
Trendmicro Security Award 2012 Final PresentationTrendmicro Security Award 2012 Final Presentation
Trendmicro Security Award 2012 Final PresentationHiromu Yakura
 
新しいライブ映像再生システムを研究してみた
新しいライブ映像再生システムを研究してみた新しいライブ映像再生システムを研究してみた
新しいライブ映像再生システムを研究してみたHiromu Yakura
 
ナウいAndroidセキュリティ
ナウいAndroidセキュリティナウいAndroidセキュリティ
ナウいAndroidセキュリティHiromu Yakura
 
GAME ON 特別イベント 「ゲームってなんでプログラミング?」
GAME ON 特別イベント 「ゲームってなんでプログラミング?」GAME ON 特別イベント 「ゲームってなんでプログラミング?」
GAME ON 特別イベント 「ゲームってなんでプログラミング?」Hiromu Yakura
 
CTF, What's in it for me?
CTF, What's in it for me?CTF, What's in it for me?
CTF, What's in it for me?Hiromu Yakura
 
SEAndroid -AndroidのアーキテクチャとSE化について-
SEAndroid -AndroidのアーキテクチャとSE化について-SEAndroid -AndroidのアーキテクチャとSE化について-
SEAndroid -AndroidのアーキテクチャとSE化について-Hiromu Yakura
 
Androidにおける強制アクセス制御
Androidにおける強制アクセス制御Androidにおける強制アクセス制御
Androidにおける強制アクセス制御Hiromu Yakura
 
セキュリティ・キャンプのススメ
セキュリティ・キャンプのススメセキュリティ・キャンプのススメ
セキュリティ・キャンプのススメHiromu Yakura
 
CTFはとんでもないものを 盗んでいきました。私の時間です…
CTFはとんでもないものを 盗んでいきました。私の時間です…CTFはとんでもないものを 盗んでいきました。私の時間です…
CTFはとんでもないものを 盗んでいきました。私の時間です…Hiromu Yakura
 

Viewers also liked (14)

検証、SEAndroid
検証、SEAndroid検証、SEAndroid
検証、SEAndroid
 
Why don't you learn programming?
Why don't you learn programming?Why don't you learn programming?
Why don't you learn programming?
 
Trendmicro Security Award 2012 Final Presentation
Trendmicro Security Award 2012 Final PresentationTrendmicro Security Award 2012 Final Presentation
Trendmicro Security Award 2012 Final Presentation
 
Arrow Judge
Arrow JudgeArrow Judge
Arrow Judge
 
新しいライブ映像再生システムを研究してみた
新しいライブ映像再生システムを研究してみた新しいライブ映像再生システムを研究してみた
新しいライブ映像再生システムを研究してみた
 
ナウいAndroidセキュリティ
ナウいAndroidセキュリティナウいAndroidセキュリティ
ナウいAndroidセキュリティ
 
GAME ON 特別イベント 「ゲームってなんでプログラミング?」
GAME ON 特別イベント 「ゲームってなんでプログラミング?」GAME ON 特別イベント 「ゲームってなんでプログラミング?」
GAME ON 特別イベント 「ゲームってなんでプログラミング?」
 
ICTのちから
ICTのちからICTのちから
ICTのちから
 
CTF, What's in it for me?
CTF, What's in it for me?CTF, What's in it for me?
CTF, What's in it for me?
 
Nyarlathotep
NyarlathotepNyarlathotep
Nyarlathotep
 
SEAndroid -AndroidのアーキテクチャとSE化について-
SEAndroid -AndroidのアーキテクチャとSE化について-SEAndroid -AndroidのアーキテクチャとSE化について-
SEAndroid -AndroidのアーキテクチャとSE化について-
 
Androidにおける強制アクセス制御
Androidにおける強制アクセス制御Androidにおける強制アクセス制御
Androidにおける強制アクセス制御
 
セキュリティ・キャンプのススメ
セキュリティ・キャンプのススメセキュリティ・キャンプのススメ
セキュリティ・キャンプのススメ
 
CTFはとんでもないものを 盗んでいきました。私の時間です…
CTFはとんでもないものを 盗んでいきました。私の時間です…CTFはとんでもないものを 盗んでいきました。私の時間です…
CTFはとんでもないものを 盗んでいきました。私の時間です…
 

Similar to Arduinoでプログラミングに触れてみよう 続編

コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行gree_tech
 
【入門】Arduino勉強会
【入門】Arduino勉強会【入門】Arduino勉強会
【入門】Arduino勉強会Masashi_Brilliant
 
2017年01月21日 AITCシニア技術者勉強会 第3回「各種センサーを使ってみよう!~温湿度と加速度~」
2017年01月21日 AITCシニア技術者勉強会 第3回「各種センサーを使ってみよう!~温湿度と加速度~」2017年01月21日 AITCシニア技術者勉強会 第3回「各種センサーを使ってみよう!~温湿度と加速度~」
2017年01月21日 AITCシニア技術者勉強会 第3回「各種センサーを使ってみよう!~温湿度と加速度~」aitc_jp
 
自作RISC-VチップでLチカをやってみた
自作RISC-VチップでLチカをやってみた自作RISC-VチップでLチカをやってみた
自作RISC-VチップでLチカをやってみたJunichi Akita
 
第12回 配信講義 計算科学技術特論B(2022)
第12回 配信講義 計算科学技術特論B(2022)第12回 配信講義 計算科学技術特論B(2022)
第12回 配信講義 計算科学技術特論B(2022)RCCSRENKEI
 
今すぐ始めるArduino
今すぐ始めるArduino今すぐ始めるArduino
今すぐ始めるArduinofuna3
 
女子美術大学メディアアート演習ⅡB 2012 Fall 第2回 2/2
 女子美術大学メディアアート演習ⅡB 2012 Fall 第2回 2/2 女子美術大学メディアアート演習ⅡB 2012 Fall 第2回 2/2
女子美術大学メディアアート演習ⅡB 2012 Fall 第2回 2/2Satoru Tokuhisa
 
ものづくりプロジェクトII 一日でわかるArduino入門
ものづくりプロジェクトII 一日でわかるArduino入門ものづくりプロジェクトII 一日でわかるArduino入門
ものづくりプロジェクトII 一日でわかるArduino入門Yoichi Yamazaki
 
Kobe.R #15 - Incanter チョットシッテル
Kobe.R #15 - Incanter チョットシッテルKobe.R #15 - Incanter チョットシッテル
Kobe.R #15 - Incanter チョットシッテルtnoda
 
Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
Cookpad 17 day Tech internship 2017 言語処理系入門 RubyをコンパイルしようCookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
Cookpad 17 day Tech internship 2017 言語処理系入門 RubyをコンパイルしようKoichi Sasada
 
Code4NaraHandson2_151118
Code4NaraHandson2_151118Code4NaraHandson2_151118
Code4NaraHandson2_151118康司 石塚
 
デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?Developers Summit
 
CMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティング
CMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティングCMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティング
CMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティングComputational Materials Science Initiative
 
coma Study Room vol.2 Arduino Workshop
coma Study Room vol.2 Arduino Workshopcoma Study Room vol.2 Arduino Workshop
coma Study Room vol.2 Arduino WorkshopEto Haruhiko
 

Similar to Arduinoでプログラミングに触れてみよう 続編 (20)

Reconf_201409
Reconf_201409Reconf_201409
Reconf_201409
 
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
 
【入門】Arduino勉強会
【入門】Arduino勉強会【入門】Arduino勉強会
【入門】Arduino勉強会
 
2017年01月21日 AITCシニア技術者勉強会 第3回「各種センサーを使ってみよう!~温湿度と加速度~」
2017年01月21日 AITCシニア技術者勉強会 第3回「各種センサーを使ってみよう!~温湿度と加速度~」2017年01月21日 AITCシニア技術者勉強会 第3回「各種センサーを使ってみよう!~温湿度と加速度~」
2017年01月21日 AITCシニア技術者勉強会 第3回「各種センサーを使ってみよう!~温湿度と加速度~」
 
自作RISC-VチップでLチカをやってみた
自作RISC-VチップでLチカをやってみた自作RISC-VチップでLチカをやってみた
自作RISC-VチップでLチカをやってみた
 
第12回 配信講義 計算科学技術特論B(2022)
第12回 配信講義 計算科学技術特論B(2022)第12回 配信講義 計算科学技術特論B(2022)
第12回 配信講義 計算科学技術特論B(2022)
 
今すぐ始めるArduino
今すぐ始めるArduino今すぐ始めるArduino
今すぐ始めるArduino
 
女子美術大学メディアアート演習ⅡB 2012 Fall 第2回 2/2
 女子美術大学メディアアート演習ⅡB 2012 Fall 第2回 2/2 女子美術大学メディアアート演習ⅡB 2012 Fall 第2回 2/2
女子美術大学メディアアート演習ⅡB 2012 Fall 第2回 2/2
 
ものづくりプロジェクトII 一日でわかるArduino入門
ものづくりプロジェクトII 一日でわかるArduino入門ものづくりプロジェクトII 一日でわかるArduino入門
ものづくりプロジェクトII 一日でわかるArduino入門
 
Kobe.R #15 - Incanter チョットシッテル
Kobe.R #15 - Incanter チョットシッテルKobe.R #15 - Incanter チョットシッテル
Kobe.R #15 - Incanter チョットシッテル
 
VerilatorとSystemC
VerilatorとSystemCVerilatorとSystemC
VerilatorとSystemC
 
Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
Cookpad 17 day Tech internship 2017 言語処理系入門 RubyをコンパイルしようCookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
 
Open modeler
Open modelerOpen modeler
Open modeler
 
Code4NaraHandson2_151118
Code4NaraHandson2_151118Code4NaraHandson2_151118
Code4NaraHandson2_151118
 
Arduino jenkins
Arduino jenkinsArduino jenkins
Arduino jenkins
 
デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
 
CMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティング
CMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティングCMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティング
CMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティング
 
Zynq+PyCoRAM(+Debian)入門
Zynq+PyCoRAM(+Debian)入門Zynq+PyCoRAM(+Debian)入門
Zynq+PyCoRAM(+Debian)入門
 
coma Study Room vol.2 Arduino Workshop
coma Study Room vol.2 Arduino Workshopcoma Study Room vol.2 Arduino Workshop
coma Study Room vol.2 Arduino Workshop
 
Pythonでゲーム作る
Pythonでゲーム作るPythonでゲーム作る
Pythonでゲーム作る
 

More from Hiromu Yakura

Human-AI communication for human-human communication / CHAI Workshop @ IJCAI ...
Human-AI communication for human-human communication / CHAI Workshop @ IJCAI ...Human-AI communication for human-human communication / CHAI Workshop @ IJCAI ...
Human-AI communication for human-human communication / CHAI Workshop @ IJCAI ...Hiromu Yakura
 
How to make good use of AI technologies? @ Tsukuba Conference 2021
How to make good use of AI technologies? @ Tsukuba Conference 2021How to make good use of AI technologies? @ Tsukuba Conference 2021
How to make good use of AI technologies? @ Tsukuba Conference 2021Hiromu Yakura
 
機械学習を"良く"使うには
機械学習を"良く"使うには機械学習を"良く"使うには
機械学習を"良く"使うにはHiromu Yakura
 
自己紹介@名状しがたいお茶会
自己紹介@名状しがたいお茶会自己紹介@名状しがたいお茶会
自己紹介@名状しがたいお茶会Hiromu Yakura
 
Python 3のWebシステムでDDDに入門してみた
Python 3のWebシステムでDDDに入門してみたPython 3のWebシステムでDDDに入門してみた
Python 3のWebシステムでDDDに入門してみたHiromu Yakura
 
Robust Audio Adversarial Example for a Physical Attack
Robust Audio Adversarial Example for a Physical AttackRobust Audio Adversarial Example for a Physical Attack
Robust Audio Adversarial Example for a Physical AttackHiromu Yakura
 
機械学習コン講評
機械学習コン講評機械学習コン講評
機械学習コン講評Hiromu Yakura
 
NPCA夏合宿 2014 講義資料
NPCA夏合宿 2014 講義資料NPCA夏合宿 2014 講義資料
NPCA夏合宿 2014 講義資料Hiromu Yakura
 
イタリアでパスタを食べた話
イタリアでパスタを食べた話イタリアでパスタを食べた話
イタリアでパスタを食べた話Hiromu Yakura
 

More from Hiromu Yakura (14)

Human-AI communication for human-human communication / CHAI Workshop @ IJCAI ...
Human-AI communication for human-human communication / CHAI Workshop @ IJCAI ...Human-AI communication for human-human communication / CHAI Workshop @ IJCAI ...
Human-AI communication for human-human communication / CHAI Workshop @ IJCAI ...
 
How to make good use of AI technologies? @ Tsukuba Conference 2021
How to make good use of AI technologies? @ Tsukuba Conference 2021How to make good use of AI technologies? @ Tsukuba Conference 2021
How to make good use of AI technologies? @ Tsukuba Conference 2021
 
機械学習を"良く"使うには
機械学習を"良く"使うには機械学習を"良く"使うには
機械学習を"良く"使うには
 
自己紹介@名状しがたいお茶会
自己紹介@名状しがたいお茶会自己紹介@名状しがたいお茶会
自己紹介@名状しがたいお茶会
 
Python 3のWebシステムでDDDに入門してみた
Python 3のWebシステムでDDDに入門してみたPython 3のWebシステムでDDDに入門してみた
Python 3のWebシステムでDDDに入門してみた
 
Robust Audio Adversarial Example for a Physical Attack
Robust Audio Adversarial Example for a Physical AttackRobust Audio Adversarial Example for a Physical Attack
Robust Audio Adversarial Example for a Physical Attack
 
機械学習コン講評
機械学習コン講評機械学習コン講評
機械学習コン講評
 
NPCA夏合宿 2014 講義資料
NPCA夏合宿 2014 講義資料NPCA夏合宿 2014 講義資料
NPCA夏合宿 2014 講義資料
 
イタリアでパスタを食べた話
イタリアでパスタを食べた話イタリアでパスタを食べた話
イタリアでパスタを食べた話
 
CTFとは
CTFとはCTFとは
CTFとは
 
ぃぬ速@LKML
ぃぬ速@LKMLぃぬ速@LKML
ぃぬ速@LKML
 
プラトン
プラトンプラトン
プラトン
 
How to lick Miku
How to lick MikuHow to lick Miku
How to lick Miku
 
ERASER
ERASERERASER
ERASER
 

Recently uploaded

SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 

Recently uploaded (9)

SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 

Arduinoでプログラミングに触れてみよう 続編