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

プログラミングに触れてみよう
2015/11/01 Hiromu Yakura
自己紹介
• 矢倉 大夢 (やくら ひろむ)
• 筑波大学 情報学群 情報科学類 1年
• 情報処理推進機構 未踏クリエイター
自己紹介
• 国内大会
• 日本OSS奨励賞 2012
• SuperComputing Contest 2012 優勝
• 情報オリンピック 2013/2014 優秀賞(代表候補)
自己紹介
• 国内大会
• 高校生科学技術チャレンジ

 2012: 文部科学大臣賞・富士通賞

 2013: 科学技術政策担当大臣賞・富士通賞
• U-20 プログラミングコンテスト 経済産業大臣賞
自己紹介
• 国際大会
• アジア太平洋情報オリンピック 2012 銅メダル
• Intel ISEF 2014 Fondazione Bruno Kessler Award
• CODEGATE Junior CTF 2014 7th
• DEFCON CTF 2014 13th
自己紹介
プログラマ
プログラミングの力
• プログラミングを学ぶということ
• プログラミング言語を学ぶことではない
• プログラミングという概念を学ぶ
プログラミングの力
• プログラミングを学ぶということ
• 世界中のコンピュータを制御する能力を得る
• 最近はスマートフォンや家電にも届くように
プログラミングの力
• プログラミングを学ぶということ
• 日本語が通じるのは、1億3000万人程度
• Javaが使えるのは、30億のデバイス
プログラミングの力
• プログラミングを学ぶということ
• プログラミングは世界共通
• 世界中の誰もが参加できるOSS開発
• Linux Kernelは世界中から6000人以上が参加
プログラミングの力
• プログラミングを学ぶということ
• プログラミングは様々な分野で必要とされている
• プログラミングができなくても

プログラミングで何ができるかを知ることが重要
プログラミングの力
• 物理学
• CERNのLHCは1秒に300GBのデータを観測する
• 1時間で64GBのiPhone 2万台近くのデータ量
• 36ヶ国のコンピュータで分散して自動分析し

1000分の1のサイズで必要なデータを抜き出す
http://www.ibtimes.co.uk/cerns-large-hadron-collider-re-starts-after-two-year-shutdown-1491826
プログラミングの力
• 地学
• 国立天文台は国内11位のスパコンを所有
• すばる望遠鏡の観測データの分析
• 宇宙現象のシミュレーション
http://www.nao.ac.jp/gallery/weekly/2014/20140422-aterui.html
プログラミングの力
• 化学
• 化学反応のシミュレーションがポピュラーに
• 「京」でも様々な反応シミュレーションが
• タミフルの設計にも使われた
http://www.nao.ac.jp/gallery/weekly/2014/20140422-aterui.html
プログラミングの力
• 生物学
• バイオインフォマティクス
• たくさんの遺伝子解読ができるのは

コンピュータとアルゴリズムのおかげ
• 細かい遺伝子の切れ端が

うまく繋がるようにパズルを解く
http://www.bio-itworld.com/2014/12/22/nanopore-sequencing-here-stay.html
プログラミングの力
• プログラミングを学ぶということ
• プログラミングという概念を学ぶ
• 制御する楽しさをより実感してもらうために

電子回路と組み合わせたプログラミングをします
Arduino
• マイクロコントローラ
• コンピュータの機能が

ひとつの基盤に
• 3000円くらいで買える
Breadboard
• はんだ付けせずに

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

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

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

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

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

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

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

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

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

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

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

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

プログラミングする用の

ソフトウェア
LEDを光らせてみよう
ここをクリック
LEDを光らせてみよう
• 動作が確認できたら

Arduinoとブレッドボードの接続を外す
• 大きな電流は流れていないが安全のため
プログラミングの基本概念
• コンピューターに命令を与えること
• コンピューターは人間の扱う言語を理解できない
• 人間の扱う言語は一意的ではない
プログラミングの基本概念
• コンピューターが理解できるように

プログラミング言語を使う
• 人間はコンピューターにさせたい内容を

プログラミング言語に翻訳して伝える
• コンピューターはプログラミング言語を

0と1で表されるデータに翻訳して動かす
LEDを光らせるプログラム
void	
  setup()	
  {	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
}
LEDを光らせるプログラム
void	
  setup()	
  {	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
}
2つのグループに分けられる
LEDを光らせるプログラム
void	
  setup()	
  {	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
}
LEDを光らせるプログラム
void	
  setup()	
  {	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
}
最初の1回だけ

実行される
LEDを光らせるプログラム
void	
  setup()	
  {	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
}
最初の1回だけ

実行される
繰り返し

実行される
LEDを光らせるプログラム
pinMode(13,	
  OUTPUT);	
  
digitalWrite(13,	
  HIGH);	
  
digitalWrite(13,	
  HIGH);	
  
digitalWrite(13,	
  HIGH);	
  
digitalWrite(13,	
  HIGH);	
  
digitalWrite(13,	
  HIGH);	
  
digitalWrite(13,	
  HIGH);	
  
digitalWrite(13,	
  HIGH);	
  
digitalWrite(13,	
  HIGH);	
  
…
← 最初の1回だけ

 実行される
電源が切れるまで

永遠に

実行される
LEDを光らせるプログラム
void	
  setup()	
  {	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
}
最初の1回だけ

実行される
繰り返し

実行される
LEDを光らせるプログラム
void	
  setup()	
  {	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
}
← 13番ピンを

  OUTPUTに使用する
LEDを光らせるプログラム
void	
  setup()	
  {	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
}
← 13番ピンを

  OUTPUTに使用する
=
+として

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

  HIGHに設定する
LEDを光らせるプログラム
void	
  setup()	
  {	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
}
← 13番ピンを

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

  LEDは光らない
LEDを光らせてみよう
ここをクリック
• 関数 = よく使う処理をまとめたもの
• 例: x  =  1  ~  3 について x3  +  x2  +  x を計算させたい
• 人間「13  +  12  +  1 は?」 コンピューター「3」

人間「23  +  22  +  2 は?」 コンピューター「12」

人間「33  +  32  +  3 は?」 コンピューター「18」

 
プログラミングの基本概念
• 関数 = よく使う処理をまとめたもの
• 例: x  =  1  ~  3 について x3  +  x2  +  x を計算させたい
• 人間「13  +  12  +  1 は?」 コンピューター「3」

人間「23  +  22  +  2 は?」 コンピューター「12」

人間「33  +  32  +  3 は?」 コンピューター「18」

 
プログラミングの基本概念
プログラミングの基本概念
• 関数 = よく使う処理をまとめたもの
• 例: x  =  1  ~  3 について x3  +  x2  +  x を計算させたい
• 人間「13  +  12  +  1 は?」 コンピューター「3」

人間「23  +  22  +  2 は?」 コンピューター「12」

人間「33  +  32  +  3 は?」 コンピューター「18」

 
プログラミングの基本概念
• 関数 = よく使う処理をまとめたもの
• 例: x  =  1  ~  3 について x3  +  x2  +  x を計算させたい
• 人間「f(x)  =  x3  +  x2  +  x とします」 

人間「f(1) は?」 コンピューター「3」

人間「f(2) は?」 コンピューター「12」

人間「f(3) は?」 コンピューター「18」
プログラミングの基本概念
• 関数 = よく使う処理をまとめたもの
• 例: x  =  1  ~  3 について x3  +  x2  +  x を計算させたい
• 人間「f(x)  =  x3  +  x2  +  x とします」 

人間「f(1) は?」 コンピューター「3」

人間「f(2) は?」 コンピューター「12」

人間「f(3) は?」 コンピューター「18」
プログラミングの基本概念
• 関数 = よく使う処理をまとめたもの
• pinMode()やdigitalWrite()も関数
• digitalWrite()を使うたびに

処理をすべて書くのはしんどい
void	
  digitalWrite(uint8_t	
  pin,	
  uint8_t	
  val)	
  
{	
  
	
   uint8_t	
  timer	
  =	
  digitalPinToTimer(pin);	
  
	
   uint8_t	
  bit	
  =	
  digitalPinToBitMask(pin);	
  
	
   uint8_t	
  port	
  =	
  digitalPinToPort(pin);	
  
	
   volatile	
  uint8_t	
  *out;	
  
	
  	
  
	
   if	
  (port	
  ==	
  NOT_A_PIN)	
  return;	
  
	
  	
  
	
   //	
  If	
  the	
  pin	
  that	
  support	
  PWM	
  output,	
  we	
  need	
  to	
  turn	
  it	
  off	
  
	
   //	
  before	
  doing	
  a	
  digital	
  write.	
  
	
   if	
  (timer	
  !=	
  NOT_ON_TIMER)	
  turnOffPWM(timer);	
  
	
  	
  
	
   out	
  =	
  portOutputRegister(port);	
  
	
  	
  
	
   uint8_t	
  oldSREG	
  =	
  SREG;	
  
	
   cli();	
  
	
  	
  
	
   if	
  (val	
  ==	
  LOW)	
  {	
  
	
   	
   *out	
  &=	
  ~bit;	
  
	
   }	
  else	
  {	
  
	
   	
   *out	
  |=	
  bit;	
  
	
   }	
  
	
  	
  
	
   SREG	
  =	
  oldSREG;	
  
}	
  
プログラミングの基本概念
• 関数 = よく使う処理をまとめたもの
• pinMode()やdigitalWrite()も関数
• digitalWrite()を使うたびに

処理をすべて書くのはしんどい
• 13番ポートから

2番ポートに

+を付け替える
LEDを光らせてみよう
LEDを光らせてみよう
void	
  setup()	
  {	
  
	
  	
  pinMode(2,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  digitalWrite(2,	
  HIGH);	
  
}
← 13を2に変更する
← 13を2に変更する
LEDを光らせてみよう
ここをクリック
LEDを光らせてみよう
• +を13番ポートに

戻しておく
LEDを点滅させる
• プログラミングでLEDを点滅させる
• 点滅 = 「一定時間点けて、一定時間消す」を

    繰り返す
• delay(1000) ← 1000ミリ秒(=1秒)間

       そのままの状態で待つ
LEDを点滅させる
• クイズ: 次の3つの命令を使って

    LEDを点滅させるにはどうすればいい?
• digitalWrite(13,	
  HIGH);

 13番ピンをHIGHに設定 = LEDを光らせる
• digitalWrite(13,	
  LOW);

 13番ピンをLOWに設定 = LEDを消す
• delay(1000);

 1000ミリ秒(=1秒)間そのままの状態で待つ
LEDを点滅させる
void	
  setup()	
  {	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  digitalWrite(13,	
  LOW);

	
  	
  delay(1000);	
  
}
①
LEDを点滅させる
void	
  setup()	
  {	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  delay(1000);	
  
	
  	
  digitalWrite(13,	
  LOW);

	
  }
②
LEDを点滅させる
void	
  setup()	
  {	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  delay(1000);	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  delay(1000);	
  
	
  	
  digitalWrite(13,	
  LOW);

	
  }
③
LEDを点滅させる
delay(1000);	
  
digitalWrite(13,	
  HIGH);	
  
delay(1000);	
  
digitalWrite(13,	
  LOW);
③
digitalWrite(13,	
  HIGH);	
  
digitalWrite(13,	
  LOW);	
  
delay(1000);
①
digitalWrite(13,	
  HIGH);	
  
delay(1000);	
  
digitalWrite(13,	
  LOW);
②
繰り返し部分だけ抜き出すと以下のとおり
LEDを点滅させる
delay(1000);	
  
digitalWrite(13,	
  HIGH);	
  
delay(1000);	
  
digitalWrite(13,	
  LOW);
③
digitalWrite
digitalWrite
delay
①
digitalWrite
delay
digitalWrite
②
繰り返し部分だけ抜き出すと以下のとおり
LEDを点滅させるプログラム
void	
  setup()	
  {	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  delay(1000);	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  delay(1000);	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
}
LEDを点滅させるプログラム
pinMode(13,	
  OUTPUT);	
  
delay(1000);	
  
digitalWrite(13,	
  HIGH);	
  
delay(1000);	
  
digitalWrite(13,	
  LOW);	
  
delay(1000);	
  
digitalWrite(13,	
  HIGH);	
  
delay(1000);	
  
digitalWrite(13,	
  LOW);	
  
delay(1000);	
  
…
← 最初の1回だけ

 実行される
電源が切れるまで

永遠に

実行される
LEDを点滅させるプログラム
pinMode(13,	
  OUTPUT);	
  
delay(1000);	
  
digitalWrite(13,	
  HIGH);	
  
delay(1000);	
  
digitalWrite(13,	
  LOW);	
  
delay(1000);	
  
digitalWrite(13,	
  HIGH);	
  
delay(1000);	
  
digitalWrite(13,	
  LOW);	
  
delay(1000);	
  
…
  最初はそのまま

← 待っても何もない
LEDを点滅させるプログラム
pinMode(13,	
  OUTPUT);	
  
delay(1000);	
  
digitalWrite(13,	
  HIGH);	
  
delay(1000);	
  
digitalWrite(13,	
  LOW);	
  
delay(1000);	
  
digitalWrite(13,	
  HIGH);	
  
delay(1000);	
  
digitalWrite(13,	
  LOW);	
  
delay(1000);	
  
…
  最初はそのまま

← 待っても何もない
この4行の繰り返しと

考えても

ほとんど変わらない
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);	
  
}
一定時間点けて

一定時間消す
LEDを点滅させるプログラム
void	
  setup()	
  {	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  delay(1000);	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  delay(1000);	
  
}
一定時間点けて

一定時間消す
※資料と同じように

 色がついているチェック
LEDを点滅させてみよう
ここをクリック
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を点滅させてみよう
• チャレンジ:

(0.5秒点灯 / 1秒消灯) x 2 → 1秒点灯 / 0.5秒消灯
void	
  loop()	
  {	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  delay(500);	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  delay(1000);	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  delay(500);	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  delay(1000);	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  delay(1000);	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  delay(500);	
  
}
ボタンを使ってみよう
• 縦はつながっている
• 横は押すとつながる
ボタンを使ってみよう
回路を組み替えてみよう
回路を組み替えてみよう
211816
回路を組み替えてみよう
211816
回路を組み替えてみよう
回路を組み替えてみよう
LEDを光らせるプログラム
void	
  setup()	
  {	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
}
ボタンを使ってみよう
ここをクリック
ボタンの状態を読み取ってみよう
• ここまでは回路に出力だけしてきた
• pinMode(13,	
  OUTPUT); ← 13番ピンを出力設定
• ここからは回路から信号を読み取ってみる
• pinMode(1,	
  INPUT); <- 1番ピンを入力設定
回路を組み替えてみよう
回路を組み替えてみよう
回路を組み替えてみよう
21
回路を組み替えてみよう
ボタンを外し、ジャンパをつけかえる
21
回路を組み替えてみよう
回路を組み替えてみよう
21 23 26 30
回路を組み替えてみよう
回路を組み替えてみよう
1
5V GND
GND 13
回路を理解しよう
• 5Vのポートから

電流が流れる
• ボタンが

押されていない時
• 2番ポートに

電流は伝わらない
回路を理解しよう
• 5Vのポートから

電流が流れる
• ボタンが

押されていない時
• 2番ポートに

電流は伝わらない
回路を理解しよう
• 5Vのポートから

電流が流れる
• ボタンが

押されていない時
• 2番ポートに

電流は伝わらない
回路を理解しよう
• 5Vのポートから

電流が流れる
• ボタンが

押されていない時
• 1番ポートに

電流は伝わらない
回路を理解しよう
• 5Vのポートから

電流が流れる
• ボタンが

押されていない時
• 1番ポートに

電流は伝わらない
回路を理解しよう
• 5Vのポートから

電流が流れる
• ボタンが

押されていない時
• 1番ポートに

電流は伝わらない
回路を理解しよう
• 5Vのポートから

電流が流れる
• ボタンが

押されている時
• 2番ポートに

電流は伝わらない
回路を理解しよう
• 5Vのポートから

電流が流れる
• ボタンが

押されている時
• 2番ポートに

電流が伝わる
回路を理解しよう
• 5Vのポートから

電流が流れる
• ボタンが

押されている時
• 2番ポートに

電流が伝わる
回路を理解しよう
• 5Vのポートから

電流が流れる
• ボタンが

押されている時
• 抵抗を通って

GNDにつながる
回路を理解しよう
• 5Vのポートから

電流が流れる
• ボタンが

押されている時
• 抵抗を通って

GNDにつながる
回路を理解しよう
• 5Vのポートから

電流が流れる
• ボタンが

押されている時
• 抵抗を通って

GNDにつながる
回路を理解しよう
• 5Vのポートから

電流が流れる
• ボタンが

押されている時
• 抵抗を通って

GNDにつながる
回路を理解しよう
• 5Vのポートから

電流が流れる
• ボタンが

押されている時
• 抵抗を通って

GNDにつながる
回路を理解しよう
• 5Vのポートから

電流が流れる
• ボタンが

押されている時
• 抵抗を通って

GNDにつながる
回路を理解しよう
• 5Vのポートから

電流が流れる
• ボタンが

押されている時
• 2番ポートに

電流が伝わる
回路を理解しよう
• 5Vのポートから

電流が流れる
• ボタンが

押されている時
• 2番ポートに

電流が伝わる
回路を理解しよう
• 5Vのポートから

電流が流れる
• ボタンが

押されている時
• 1番ポートに

電流が伝わる
回路を理解しよう
• 5Vのポートから

電流が流れる
• ボタンが

押されている時
• 1番ポートに

電流が伝わる
回路を理解しよう
• 5Vのポートから

電流が流れる
• ボタンが

押されている時
• 1番ポートに

電流が伝わる
回路を理解しよう
回路を理解しよう
• ボタンを押すと

1番ポートに5Vが流れる
回路を理解しよう
13番ポートから出力するとLEDが光る
回路を理解しよう
13番ポートから出力するとLEDが光る
ボタンを押すと2番ポートに入力される
ボタンを押した時にLEDを光らせる
void	
  setup()	
  {	
  
	
  	
  pinMode(1,	
  INPUT);	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  if	
  (digitalRead(1)	
  ==	
  HIGH)	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  }	
  else	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  }	
  
}
プログラミングの基本概念
• 条件分岐 = 状況に応じて実行内容を変える
if	
  (条件)	
  {	
  
	
  	
  処理1;	
  
}	
  else	
  { 	
  
	
  	
  処理2;	
  
}
プログラミングの基本概念
• 条件分岐 = 状況に応じて実行内容を変える
if	
  (
	
  	
  
}	
  else	
  {
	
  	
  
}
条件にあてはまるとき
 ・処理1は実行される

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

 ・処理2は実行される
	
  	
  else	
  { 	
  
	
  	
  処理2;	
  
}
ボタンを押した時にLEDを光らせる
void	
  setup()	
  {	
  
	
  	
  pinMode(1,	
  INPUT);	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  if	
  (digitalRead(1)	
  ==	
  HIGH)	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  }	
  else	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  }	
  
}
ボタンを押した時にLEDを光らせる
if	
  (digitalRead(1)	
  ==	
  HIGH)	
  {	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
}	
  else	
  {	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
}
ボタンを押した時にLEDを光らせる
if	
  (
	
  	
  
}	
  else	
  {	
  
	
  	
  
}
digitalRead(1)	
  ==	
  HIGH
• digitalRead(1): 1番ポートに電流がきているか
• digitalRead(1)	
  ==	
  HIGH

 1番ポートに電流がきているときにあてはまる
ボタンを押した時にLEDを光らせる
if	
  (
	
  	
  
}	
  else	
  {	
  
	
  	
  
}
if	
  (digitalRead(1)	
  ==	
  HIGH)	
  {	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
}
• 1番ポートに電流がきているとき	
  
• digitalWrite(13,	
  HIGH);が実行される
ボタンを押した時にLEDを光らせる
if	
  (
	
  	
  
}	
  else	
  {	
  
	
  	
  
}
	
  	
  else	
  {	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
}
• 1番ポートに電流がきていないとき	
  
• digitalWrite(13,	
  HIGH);が実行される
ボタンを押した時にLEDを光らせる
void	
  setup()	
  {	
  
	
  	
  pinMode(1,	
  INPUT);	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  if	
  (digitalRead(1)	
  ==	
  HIGH)	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  }	
  else	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  }	
  
}
ボタンを押した時にLEDを光らせる
void	
  setup()	
  {	
  
	
  	
  pinMode(1,	
  INPUT);	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  if	
  (digitalRead(1)	
  ==	
  HIGH)	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  }	
  else	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  }	
  
}
← 1番ポートを入力に使用
← 13番ポートを出力に使用
ボタンを押した時にLEDを光らせる
void	
  setup()	
  {	
  
	
  	
  pinMode(1,	
  INPUT);	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  if	
  (digitalRead(1)	
  ==	
  HIGH)	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  }	
  else	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  }	
  
}
← ボタンが押されたら

  LEDを点灯
← 1番ポートを入力に使用
← 13番ポートを出力に使用
ボタンを押した時にLEDを光らせる
void	
  setup()	
  {	
  
	
  	
  pinMode(1,	
  INPUT);	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}	
  
void	
  loop()	
  {	
  
	
  	
  if	
  (digitalRead(1)	
  ==	
  HIGH)	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  }	
  else	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  }	
  
}
← ボタンが押されたら

  LEDを点灯
← ボタンが押されたら

  LEDを消灯
← 1番ポートを入力に使用
← 13番ポートを出力に使用
ボタンを押した時にLEDを光らせる
ここをクリック
ボタンを押した時にLEDを消す
void	
  loop()	
  {	
  
	
  	
  if	
  (digitalRead(1)	
  ==	
  HIGH)	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  }	
  else	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  }	
  
}
クイズ: 逆に押した時にLEDを消すには?
ボタンを押した時にLEDを消す
void	
  loop()	
  {	
  
	
  	
  if	
  (digitalRead(1)	
  ==	
  HIGH)	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  }	
  else	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  }	
  
}
クイズ: 逆に押した時にLEDを消すには?
ボタンを押した時にLEDを消す
ここをクリック
ボタンを押した時にLEDを消す
• 同じ回路でもプログラミングによって

動きを変えることができる
• 電子工作のみで、押した時に消そうとすると

回路をかなり変えないといけない
ボタンを押した時にLEDを消す
void	
  setup()	
  {	
  
	
  	
  pinMode(5,	
  INPUT);	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}
クイズ: プログラム側のポートだけを

    1番から5番に変えるとどうなる?
void	
  loop()	
  {	
  
	
  	
  if	
  (digitalRead(5)	
  ==	
  HIGH)	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  }	
  else	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  }	
  
}
ボタンを押した時にLEDを消す
void
	
  	
  
	
  	
  
}
void
	
  	
  if	
  (
	
  	
  	
  	
  
	
  	
  }	
  else	
  {	
  
	
  	
  	
  	
  
	
  	
  }
}
	
  	
  pinMode(5,	
  INPUT);
	
  	
  if	
  (digitalRead(5)	
  ==	
  HIGH)	
  {
クイズ: プログラム側のポートだけを

    1番から5番に変えるとどうなる?
まとめ
• プログラミングとは、プログラミング言語を使って

コンピューターに命令を与えること
• 基本は命令を順番に っていくが

条件分岐や繰り返しを組み合わせ高度な制御をする
• プログラミングができなくても

プログラミングとはどういうものか

プログラミングで何ができるのかを知るのが大切
おまけ
ボタンでON/OFFを切り替えてみる
• ボタンを押した時の挙動を変える
• ONの状態で押された時 → LEDをOFFにする
• OFFの状態で押された時 → LEDをONにする
• いまどういう状態かを知る必要がある
プログラミングの基本概念
• 変数 = プログラムの状態を記録する仕組み
プログラミングの基本概念
• 変数 = プログラムの状態を記録する仕組み
int	
  a;	
  
a	
  =	
  2;	
  
if	
  (a	
  ==	
  2)	
  {	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
}	
  else	
  {	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
}
プログラミングの基本概念
• 変数 = プログラムの状態を記録する仕組み
int	
  a;	
  
a	
  =	
  2;	
  
if	
  (a	
  ==	
  2)	
  {	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
}	
  else	
  {	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
}
← aという名前で変数を用意する
プログラミングの基本概念
• 変数 = プログラムの状態を記録する仕組み
int	
  a;	
  
a	
  =	
  2;	
  
if	
  (a	
  ==	
  2)	
  {	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
}	
  else	
  {	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
}
← aという変数は2を意味することとする
(aに2を代入する)
プログラミングの基本概念
• 変数 = プログラムの状態を記録する仕組み
int	
  a;	
  
a	
  =	
  2;	
  
if	
  (a	
  ==	
  2)	
  {	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
}	
  else	
  {	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
}
← aという変数は2を意味することとする
← 「aが2と等しいか」
という条件分岐
int	
  a;	
  
a	
  =	
  2;	
  
if	
  (a	
  ==	
  2)	
  {	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
}	
  
 	
  
 
プログラミングの基本概念
• 変数 = プログラムの状態を記録する仕組み
int
a	
  =	
  2;	
  
if
	
  	
  
}	
  
	
  	
  
}
← aという変数は2を意味することとする
← 「aが2と等しいか」
という条件分岐
プログラミングの基本概念
• 変数 = プログラムの状態を記録する仕組み
int	
  a;	
  
a	
  =	
  2;	
  
if	
  (a	
  ==	
  2)	
  {	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
}	
  else	
  {	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
}
int	
  a;	
  
a	
  =	
  2;	
  
a	
  =	
  1;	
  
if	
  (a	
  ==	
  2)	
  {	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
}	
  else	
  {	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
}
プログラミングの基本概念
• 変数 = プログラムの状態を記録する仕組み
int
a	
  =	
  2;	
  
a	
  =	
  1;	
  
if
	
  	
  
}	
  
	
  	
  
}
プログラミングの基本概念
• 変数 = プログラムの状態を記録する仕組み
a	
  =	
  1;
int	
  a;	
  
a	
  =	
  2;	
  
a	
  =	
  1;	
  
if	
  (a	
  ==	
  2)	
  {	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
}	
  else	
  {	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
}
プログラミングの基本概念
• 変数 = プログラムの状態を記録する仕組み
← aという名前で変数を用意する
int	
  a;	
  
a	
  =	
  2;	
  
a	
  =	
  1;	
  
if	
  (a	
  ==	
  2)	
  {	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
}	
  else	
  {	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
}
プログラミングの基本概念
• 変数 = プログラムの状態を記録する仕組み
← aという変数は2を意味することとする
(aに2を代入する)
int	
  a;	
  
a	
  =	
  2;	
  
a	
  =	
  1;	
  
if	
  (a	
  ==	
  2)	
  {	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
}	
  else	
  {	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
}
プログラミングの基本概念
• 変数 = プログラムの状態を記録する仕組み
← aという変数は1を意味することとする
(aに1を代入する)
int	
  a;	
  
a	
  =	
  2;	
  
a	
  =	
  1;	
  
if	
  (a	
  ==	
  2)	
  {	
  
	
  	
  digitalWrite(13,	
  HIGH);	
  
}	
  else	
  {	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
}
プログラミングの基本概念
• 変数 = プログラムの状態を記録する仕組み
← aという変数は1を意味することとする
← 「aが2と等しいか」
という条件分岐
int	
  a;	
  
a	
  =	
  2;	
  
a	
  =	
  1;	
  
	
  	
  
	
  	
  
	
  	
  else	
  {	
  
	
  	
  digitalWrite(13,	
  LOW);	
  
}
int
a	
  =	
  2;	
  
a	
  =	
  1;	
  
if
	
  	
  
}	
  
	
  	
  
}
プログラミングの基本概念
• 変数 = プログラムの状態を記録する仕組み
← aという変数は1を意味することとする
← 「aが2と等しいか」
という条件分岐
int
a	
  =	
  2;	
  
a	
  =	
  1;	
  
if
	
  	
  
}	
  
	
  	
  
}
	
  	
  
a	
  =	
  2;	
  
a	
  =	
  1;	
  
	
  	
  
	
  	
  
	
  	
  
	
  	
  
	
  
プログラミングの基本概念
• 変数 = プログラムの状態を記録する仕組み
← aという変数は1を意味することとする
変数が指し示す値は

いつでも変えられる
ボタンでON/OFFを切り替えてみる
• ボタンを押した時の挙動を変える
• ONの状態で押された時 → LEDをOFFにする
• OFFの状態で押された時 → LEDをONにする
• いまどういう状態かを保存する変数を使う
ボタンでON/OFFを切り替えてみる
• 変数 int	
  state; を使用する
• ONの状態 → state	
  =	
  1; とする
• OFFの状態 → state	
  =	
  0; とする
ボタンでON/OFFを切り替えてみる
• 変数 int	
  state; を使用する
• state	
  ==	
  1	
  でボタンが押された時

→

  	
  
• state	
  ==	
  0	
  でボタンが押された時

→

  	
  
ボタンでON/OFFを切り替えてみる
• 変数 int	
  state; を使用する
• state	
  ==	
  1	
  でボタンが押された時

→ LEDをOFFにする

  	
  
• state	
  ==	
  0	
  でボタンが押された時

→ LEDをONにする

  	
  
ボタンでON/OFFを切り替えてみる
• 変数 int	
  state; を使用する
• state	
  ==	
  1	
  でボタンが押された時

→ LEDをOFFにする

  state	
  =	
  0; にする
• state	
  ==	
  0	
  でボタンが押された時

→ LEDをONにする

  state	
  =	
  1; にする
ボタンでON/OFFを切り替えてみる
• 変数 int	
  state; を使用する
if	
  (digitalRead(1)	
  ==	
  HIGH)	
  {	
  
	
  	
  if	
  (state	
  ==	
  1)	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  	
  	
  state	
  =	
  0;	
  
	
  	
  }	
  else	
  {	
  
	
  	
  	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  	
  	
  state	
  =	
  1;	
  
	
  	
  }	
  
}
ボタンでON/OFFを切り替えてみる
int	
  state;	
  
void	
  setup()	
  {	
  
	
  	
  state	
  =	
  0;	
  
	
  	
  pinMode(1,	
  INPUT);	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}
void	
  loop()	
  {	
  
	
  	
  if	
  (digitalRead(1)	
  ==	
  HIGH)	
  {	
  
	
  	
  	
  	
  if	
  (state	
  ==	
  1)	
  {	
  
	
  	
  	
  	
  	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  	
  	
  	
  	
  state	
  =	
  0;	
  
	
  	
  	
  	
  }	
  else	
  {	
  
	
  	
  	
  	
  	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  	
  	
  	
  	
  state	
  =	
  1;	
  
	
  	
  	
  	
  }	
  
	
  	
  }	
  
}
ボタンでON/OFFを切り替えてみる
ここをクリック
ボタンでON/OFFを切り替えてみる
• ボタンを押した時に切り替わらない時がある
• 長押しするとチカチカしたり光らなかったり
• 正解のソースコードを掲載するので

原因の究明は参加者への課題とします
ボタンでON/OFFを切り替えてみる
int	
  state;	
  
int	
  pressed;	
  
void	
  setup()	
  {	
  
	
  	
  state	
  =	
  0;	
  
	
  	
  pressed	
  =	
  0;	
  
	
  	
  pinMode(1,	
  INPUT);	
  
	
  	
  pinMode(13,	
  OUTPUT);	
  
}
void	
  loop()	
  {	
  
	
  	
  if	
  (digitalRead(1)	
  ==	
  HIGH)	
  {	
  
	
  	
  	
  	
  if	
  (pressed	
  ==	
  0)	
  {	
  
	
  	
  	
  	
  	
  	
  if	
  (state	
  ==	
  1)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  digitalWrite(13,	
  LOW);	
  
	
  	
  	
  	
  	
  	
  	
  	
  state	
  =	
  0;	
  
	
  	
  	
  	
  	
  	
  }	
  else	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  digitalWrite(13,	
  HIGH);	
  
	
  	
  	
  	
  	
  	
  	
  	
  state	
  =	
  1;	
  
	
  	
  	
  	
  	
  	
  }	
  
	
  	
  	
  	
  }	
  
	
  	
  	
  	
  pressed	
  =	
  1;	
  
	
  	
  }	
  else	
  {	
  
	
  	
  	
  	
  pressed	
  =	
  0;	
  
	
  	
  }	
  
}

More Related Content

What's hot

Android起動周りのノウハウ
Android起動周りのノウハウAndroid起動周りのノウハウ
Android起動周りのノウハウ
chancelab
 
ピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築するピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築する
Takahito Tejima
 
OpenCVをAndroidで動かしてみた
OpenCVをAndroidで動かしてみたOpenCVをAndroidで動かしてみた
OpenCVをAndroidで動かしてみた
徹 上野山
 

What's hot (20)

GCを発生させないJVMとコーディングスタイル
GCを発生させないJVMとコーディングスタイルGCを発生させないJVMとコーディングスタイル
GCを発生させないJVMとコーディングスタイル
 
Android起動周りのノウハウ
Android起動周りのノウハウAndroid起動周りのノウハウ
Android起動周りのノウハウ
 
Enjoy handwritten digits recognition AI !!
Enjoy handwritten digits recognition AI !!Enjoy handwritten digits recognition AI !!
Enjoy handwritten digits recognition AI !!
 
人狼知能プログラミング演習資料2015
人狼知能プログラミング演習資料2015人狼知能プログラミング演習資料2015
人狼知能プログラミング演習資料2015
 
HalideでつくるDomain Specific Architectureの世界
HalideでつくるDomain Specific Architectureの世界HalideでつくるDomain Specific Architectureの世界
HalideでつくるDomain Specific Architectureの世界
 
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コンテンツ開発
 
Chainer でのプロファイリングをちょっと楽にする話
Chainer でのプロファイリングをちょっと楽にする話Chainer でのプロファイリングをちょっと楽にする話
Chainer でのプロファイリングをちょっと楽にする話
 
ピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築するピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築する
 
「モデル検査」のススメ (ゲームシナリオ進行編)
「モデル検査」のススメ (ゲームシナリオ進行編)「モデル検査」のススメ (ゲームシナリオ進行編)
「モデル検査」のススメ (ゲームシナリオ進行編)
 
EnrootとPyxisで快適コンテナ生活
EnrootとPyxisで快適コンテナ生活EnrootとPyxisで快適コンテナ生活
EnrootとPyxisで快適コンテナ生活
 
OpenCVをAndroidで動かしてみた
OpenCVをAndroidで動かしてみたOpenCVをAndroidで動かしてみた
OpenCVをAndroidで動かしてみた
 
AOZORAYOMITE and Intent
AOZORAYOMITE and IntentAOZORAYOMITE and Intent
AOZORAYOMITE and Intent
 
ゲームとモデル検査ワークショップ#1
ゲームとモデル検査ワークショップ#1ゲームとモデル検査ワークショップ#1
ゲームとモデル検査ワークショップ#1
 
【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説
【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説
【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説
 
I2CでRaspberry Piから 複数の周辺機器を制御する
I2CでRaspberry Piから複数の周辺機器を制御するI2CでRaspberry Piから複数の周辺機器を制御する
I2CでRaspberry Piから 複数の周辺機器を制御する
 
Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門
 
オンライン広告入札システムとZGC ( JJUG CCC 2021 Spring )
オンライン広告入札システムとZGC ( JJUG CCC 2021 Spring )オンライン広告入札システムとZGC ( JJUG CCC 2021 Spring )
オンライン広告入札システムとZGC ( JJUG CCC 2021 Spring )
 
Aiwolf seminar 2019_ja
Aiwolf seminar 2019_jaAiwolf seminar 2019_ja
Aiwolf seminar 2019_ja
 

Viewers also liked

Androidにおける強制アクセス制御
Androidにおける強制アクセス制御Androidにおける強制アクセス制御
Androidにおける強制アクセス制御
Hiromu Yakura
 
CTFはとんでもないものを 盗んでいきました。私の時間です…
CTFはとんでもないものを 盗んでいきました。私の時間です…CTFはとんでもないものを 盗んでいきました。私の時間です…
CTFはとんでもないものを 盗んでいきました。私の時間です…
Hiromu Yakura
 

Viewers also liked (14)

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

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

今すぐ始めるArduino
今すぐ始めるArduino今すぐ始めるArduino
今すぐ始めるArduino
funa3
 
女子美術大学メディアアート演習ⅡB 2012 Fall 第2回 2/2
 女子美術大学メディアアート演習ⅡB 2012 Fall 第2回 2/2 女子美術大学メディアアート演習ⅡB 2012 Fall 第2回 2/2
女子美術大学メディアアート演習ⅡB 2012 Fall 第2回 2/2
Satoru Tokuhisa
 
ATN No.2 大阪から来たJavaPuzzlers
ATN No.2 大阪から来たJavaPuzzlersATN No.2 大阪から来たJavaPuzzlers
ATN No.2 大阪から来たJavaPuzzlers
AdvancedTechNight
 
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは
Takuya Akiba
 
怪しいWindowsプログラミング
怪しいWindowsプログラミング怪しいWindowsプログラミング
怪しいWindowsプログラミング
nagoya313
 

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

【入門】Arduino勉強会
【入門】Arduino勉強会【入門】Arduino勉強会
【入門】Arduino勉強会
 
今すぐ始める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
 
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
 
動的計画法の並列化
動的計画法の並列化動的計画法の並列化
動的計画法の並列化
 
自作RISC-VチップでLチカをやってみた
自作RISC-VチップでLチカをやってみた自作RISC-VチップでLチカをやってみた
自作RISC-VチップでLチカをやってみた
 
自然言語処理に適した ニューラルネットのフレームワーク - - - DyNet - - -
自然言語処理に適した ニューラルネットのフレームワーク - - - DyNet - - -自然言語処理に適した ニューラルネットのフレームワーク - - - DyNet - - -
自然言語処理に適した ニューラルネットのフレームワーク - - - DyNet - - -
 
【17-A-L】ママセキュリティエンジニア奮闘記 ~ 子供と一緒にラズパイで遊んでみた♪ ~
【17-A-L】ママセキュリティエンジニア奮闘記 ~ 子供と一緒にラズパイで遊んでみた♪ ~【17-A-L】ママセキュリティエンジニア奮闘記 ~ 子供と一緒にラズパイで遊んでみた♪ ~
【17-A-L】ママセキュリティエンジニア奮闘記 ~ 子供と一緒にラズパイで遊んでみた♪ ~
 
ATN No.2 大阪から来たJavaPuzzlers
ATN No.2 大阪から来たJavaPuzzlersATN No.2 大阪から来たJavaPuzzlers
ATN No.2 大阪から来たJavaPuzzlers
 
UnityとBlenderハンズオン第1章
UnityとBlenderハンズオン第1章UnityとBlenderハンズオン第1章
UnityとBlenderハンズオン第1章
 
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは
 
Pythonでゲーム作る
Pythonでゲーム作るPythonでゲーム作る
Pythonでゲーム作る
 
アイデアワークショップ for SmartTech Award 2013
アイデアワークショップ for SmartTech Award 2013アイデアワークショップ for SmartTech Award 2013
アイデアワークショップ for SmartTech Award 2013
 
Cuda
CudaCuda
Cuda
 
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
 
デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
 
12.06.16 日本橋勉強会資料 公開用
12.06.16 日本橋勉強会資料 公開用12.06.16 日本橋勉強会資料 公開用
12.06.16 日本橋勉強会資料 公開用
 
怪しいWindowsプログラミング
怪しいWindowsプログラミング怪しいWindowsプログラミング
怪しいWindowsプログラミング
 
CUDAを利用したPIV解析の高速化
CUDAを利用したPIV解析の高速化CUDAを利用したPIV解析の高速化
CUDAを利用したPIV解析の高速化
 
HoloLens 2Dでもここまでできる
HoloLens 2DでもここまでできるHoloLens 2Dでもここまでできる
HoloLens 2Dでもここまでできる
 

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
 

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

Recently uploaded (12)

新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 

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