この記事を読むのに必要な時間:およそ 0.5 分
ダウンロード
(2022年6月20日最終更新)
本書で利用するプログラムのサンプルファイルをダウンロードできます。
データは,圧縮ファイル形式でダウンロードできます。圧縮ファイルをダウンロードしていただき,適宜解凍してご利用ください。
なお,2022年6月20日以前にダウンロードされたものには,内容に誤りがあります。お手数ですが,再度ダウンロードし直してください。
- ダウンロード
- サンプルファイル(2022年6月20日更新)
Chapter 5で使用するフルカラーLEDについて
Chapter 5で使用するフルカラーLEDは、ソケットがジャンパーワイヤーのメスでないと入らない形状となっており、そのままではArduinoに接続することができませんでした。Arduinoに接続するには、オス-メスのジャンパーワイヤー(https://www.switch-science.com/catalog/2294/)を利用していただき,フルカラーLEDのソケットにメス側を,Arduinoにオス側を接続してください。
P.106-108 シリアル通信について
リスト6のスケッチを実行しても,シリアルモニタに正しく数字が表示されない場合がございます。
その場合は,シリアルモニタの通信速度を「115200bps」に変更してお試しください。
シリアルモニタの通信速度を設定する方法は下記の通りです。
- (1) p108を参考にシリアルモニタを表示する。
- (2) シリアルモニタ右下の「○○bps」をクリックする。
- (3) 表示される通信速度の一覧から「115200bps」を選択する。
お詫びと訂正(正誤表)
本書の以下の部分に誤りがありました。ここに訂正するとともに,ご迷惑をおかけしたことを深くお詫び申し上げます。
図をクリックすると大きく表示できます。
P.121 「光をゆっくり変化させよう」1行目
誤 |
1色だけでなく、色が変わっていく |
正 |
色が変わっていく |
※「1色だけでなく、」が不要です。
P.121 リスト5
誤 |
void loop(){
for(int i=0; i < 255; i++) {
pixels.setPixelColor(0, pixels.Color(i, i, i));
}
pixels.show();
delay(10);
}
}
|
正 |
void loop(){
for(int i=0; i < 255; i++) {
for (int j=0; j < 16; j++) {
pixels.setPixelColor(j, pixels.Color(i, i, i));
}
pixels.show();
delay(10);
}
}
|
P.129 リスト7
誤 |
#include <Adafruit_NeoPixel.h>
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(10, 6, NEO_GRB + NEO_KHZ800);
void setup() {
pinMode(13, INPUT);
pixels.begin();
}
int color(int index) {
switch (index) {
case 0:
return pixels.Color(255, 0, 0);
case 1:
return pixels.Color(0, 255, 0);
case 2:
return pixels.Color(0, 0, 255);
case 3:
return pixels.Color(255, 255, 255);
case 4:
return pixels.Color(255, 255, 0);
case 5:
return pixels.Color(255, 0, 255);
case 6:
return pixels.Color(0, 255, 255);
}
}
void loop() {
if (digitalRead(13)) {
for(int i = 0; i < 10; i++){
for (int j = 0; j < 10; j++) {
pixels.setPixelColor(j, color((j + i) % 7));
}
pixels.show();
delay(200);
}
}
}
|
正 |
#include <Adafruit_NeoPixel.h>
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(10, 6, NEO_GRB + NEO_KHZ800);
void setup() {
pinMode(13, INPUT);
pixels.begin();
Serial.begin(9600);
}
uint32_t color(int index) {
switch (index) {
case 0:
return pixels.Color(255, 0, 0);
case 1:
return pixels.Color(0, 255, 0);
case 2:
return pixels.Color(0, 0, 255);
case 3:
return pixels.Color(255, 255, 255);
case 4:
return pixels.Color(255, 255, 0);
case 5:
return pixels.Color(255, 0, 255);
case 6:
return pixels.Color(0, 255, 255);
}
}
void loop() {
if (digitalRead(13)) {
for(int i = 0; i < 10; i++){
for (int j = 0; j < 10; j++) {
pixels.setPixelColor(j, color((j + i) % 7));
if(j==0)
Serial.println((j + i) % 7);
}
pixels.show();
delay(200);
}
}
}
|
P.105 9~10行目
誤 |
逆に暗ければLEDランプを暗くするので
|
---|
正 |
逆に暗ければLEDランプを明るくするので
|
---|
P.83 リスト8
誤 |
#define LED 7
#define SWITCH 13
boolean LEDOn = false;
boolean switchOn = false;
void setup() {
pinMode(LED, OUTPUT);
pinMode(SWITCH, INPUT);
}
void loop() {
if (digitalRead(SWITCH) && !switchOn) {
if (LEDOn) {
LEDOn = false;
digitalWrite(LED, LOW);
} else {
LEDOn = true;
digitalWrite(LED, HIGH);
}
}
switchOn = digitalRead(SWITCH);
}
|
正 |
#define LED 7
#define SWITCH 13
boolean LEDOn = false;
boolean switchOn = false;
void setup() {
pinMode(LED, OUTPUT);
pinMode(SWITCH, INPUT);
}
void loop() {
if (digitalRead(SWITCH) && !switchOn) {
if (LEDOn) {
LEDOn = false;
digitalWrite(LED, LOW);
} else {
LEDOn = true;
digitalWrite(LED, HIGH);
}
}
switchOn = digitalRead(SWITCH);
delay(100);
}
|
P.105 8行目
誤 |
返す値は小さくなります
|
正 |
返す値は大きくなります
|
P. 161 2段落目1行目
P.66-67
回路図内の「スイッチ」の記号が「トランジスタ」の記号になっていました。
正しいスイッチの記号は,下記の図を参照ください。
誤 |
|
正 |
|
8章で用いられている写真について
図1などのバギーの写真には「STP08」ではないスピーカーが用いられていますが,こちらは誤りになります。本書の内容は「STP08」の利用を前提に書かれておりますので,「STP08」をご利用ください。
P.208 MEMO
誤 |
・ミニブレッドボード
http://akizukidenshi.com/catalog/g/gP-05155/
|
正 |
・ミニブレッドボード
http://akizukidenshi.com/catalog/g/gP-13257/
|
P.216 表2
誤 |
|
正 |
|
P.218 1行目
誤 |
1つ目が左方向に
|
正 |
1つ目が左端から右方向に
|
P.224~225,235 表3,5,6および図35~37,44について
図のブレッドボードの形状が誤っていました。ここで使用しているブレッドボードには両端の+・-のラインがなく、代わりにプロトタイピングボードの5VとGNDのソケットにジャンパーワイヤー等を差し込みます。詳しくは、下記の図と表を参考にしてください。
P.224 表3
誤 |
|
正 |
|
P.224 図35
図に誤りがありました。正しくは以下の通りです。
P.224 図36
図に誤りがありました。正しくは以下の通りです。
P.225 表5
誤 |
|
正 |
|
P.225 図37
図に誤りがありました。正しくは以下の通りです。
P.235 表6
誤 |
|
正 |
|
P.235 図44
図に誤りがありました。正しくは以下の通りです。
P.249 2段落目 1行目
P.73 表4
誤 |
|
正 |
|
P.121 2行目
誤 |
一からスケッチを書いてみます。
|
正 |
「sample」スケッチのvoid loop()以下を変えて、一からスケッチを書いてみます。
|
P.175 リスト1 29行目
コード内のクオーテーションマーク("")の一部が全角になっていました。正しくは半角です。
誤 |
Serial.println(espat.get("gihyo.jp”, “/”, 80));
|
正 |
Serial.println(espat.get("gihyo.jp", "/", 80));
|
P.190 表3
誤 |
Arduino<2>ピン
|
正 |
Arduinoの<2>ピン
|
P.192 リスト2
コード内のクオーテーションマーク("")の一部が全角になっていました。正しくは半角です。また,コード内に不要なテキストが混じっていたため削除し,一部インデントが抜けていた箇所を修正いたしました(インデントは抜けていてもスケッチの実行には影響ございません)。
誤 |
#include <ArduinoESPAT.h>
#define TEMPPIN A0
ESPAT espat(“SSID”, “PASS”);
void setup() {
pinMode(7, INPUT);
delay(1000);
Serial.begin(9600);
if (espat.begin()) {
Serial.println(“Initialize OK”);
} else {
Serial.println(“Initialize Failed”);
}
if (espat.tryConnectAP()) {
Serial.println(“Connected”);
} else {
Serial.println(“Connect Failed”);
}
Serial.println(espat.clientIP());
}
void loop() {
if (digitalRead(7) == LOW) {
return;
}
espat.get(“maker.ifttt.com”, “/trigger/button_pressed/with/key/IFTTTKEY”, 80);
delay(1000);
}
|
正 |
#include <ArduinoESPAT.h>
ESPAT espat("SSID", "PASS");
void setup() {
pinMode(7, INPUT);
delay(1000);
Serial.begin(9600);
if (espat.begin()) {
Serial.println("Initialize OK");
} else {
Serial.println("Initialize Failed");
}
if (espat.tryConnectAP()) {
Serial.println("Connected");
} else {
Serial.println("Connect Failed");
}
Serial.println(espat.clientIP());
}
void loop() {
if (digitalRead(7) == LOW) {
return;
}
espat.get("maker.ifttt.com", "/trigger/button_pressed/with/key/IFTTTKEY", 80);
delay(1000);
}
|
P.195 表4
誤 |
Arduino<2>ピン
|
正 |
Arduinoの<2>ピン
|
P.197 リスト3
コード内のクオーテーションマーク("")の一部が全角になっていました。正しくは半角です。また,一部の変数名に誤りがありました。
誤 |
#include <ArduinoESPAT.h>
#define TEMPPIN A0
ESPAT espat(“SSID”, “PASS”);
void getResp(char c){
Serial.print(c);
}
void setup(){
pinMode(TEMPPIN, INPUT);
Serial.begin(115200);
if(espat.begin()){
Serial.println(“Initialize OK”);
}else{
Serial.println(“Initialize Failed”);
}
if(espat.tryConnectAP()){
Serial.println(“Connected”);
}else{
Serial.println(“Connect Failed”);
}
Serial.println(espat.clientIP());
}
void loop() {
int data = analogRead(0);
int v = map(data, 0, 1023, 0, 5000);
int temp = map(v, 300, 1600, -30, 100);
espat.get(“maker.ifttt.com”, “/trigger/button_pressed/with/key/IFTTTKEY? value1=” + String(temperature), 80);
Serial.println("Send to IFTTT. " + String(temp));
delay(3600000UL);
}
|
正 |
#include <ArduinoESPAT.h>
#define TEMPPIN A0
ESPAT espat("SSID", "PASS");
void getResp(char c){
Serial.print(c);
}
void setup(){
pinMode(TEMPPIN, INPUT);
Serial.begin(115200);
if(espat.begin()){
Serial.println("Initialize OK");
}else{
Serial.println("Initialize Failed");
}
if(espat.tryConnectAP()){
Serial.println("Connected");
}else{
Serial.println("Connect Failed");
}
Serial.println(espat.clientIP());
}
void loop() {
int data = analogRead(0);
int v = map(data, 0, 1023, 0, 5000);
int temp = map(v, 300, 1600, -30, 100);
espat.get("maker.ifttt.com", "/trigger/button_pressed/with/key/IFTTTKEY? value1=" + String(temp), 80);
Serial.println("Send to IFTTT. " + String(temp));
delay(3600000UL);
}
|
部品接続の解説に用いる図において,抵抗のカラーコードに誤りが複数ありました。誤りがあった図と,正しいカラーコードは以下の通りです。
P.54 MEMO,P.72 図16,P.73 図18,P.92 図9,P.190 図39,P.250 図17
330Ωの抵抗のカラーコードに誤りがありました。
P.70 2段落目 2行目
下記の内容は誤っており,不要な一文になります。
P.246 図12
1kΩの抵抗のカラーコードに誤りがありました。
P.70 表2
誤 |
|
正 |
|
P.72 図17
図中の抵抗値に誤りがありました。
P.149 2段落目 5行目
誤 |
10秒間電気を流しています。
|
正 |
60秒間電気を流しています。
|
P.156 リスト3
誤 |
#include
IRrecv irrecv(11);
void setup () {
Serial.begin(115200);
irrecv.enableIRIn();
pinMode(10, OUTPUT);
}
void loop () {
decode_results results;
if (irrecv.decode(&results)) {
digitalWrite(10, HIGH);
delay(10000);
digitalWrite(10, LOW);
irrecv.resume();
}
}
|
正 |
#include
IRrecv irrecv(11);
void setup () {
Serial.begin(115200);
irrecv.enableIRIn();
pinMode(13, OUTPUT);
}
void loop () {
decode_results results;
if (irrecv.decode(&results)) {
digitalWrite(13, HIGH);
delay(10000);
digitalWrite(13, LOW);
irrecv.resume();
}
}
|
P.156 3行目,6行目
P136 5行目
誤 |
短い時間(1秒間)
|
正 |
短い時間(0.5秒間)
|
P.99 リード文1行目
誤 |
アナログ出力に次いでアナログ入力も行います。。
|
正 |
アナログ出力に次いでアナログ入力も行います。
|
P.102 表5
誤 |
|
正 |
|
P.83 本文6行目
P.102 表4
誤 |
|
正 |
|
P.143 MEMO「電子部品を購入する」
電子部品購入先の一覧から下記の情報が抜けていました。
- 赤外線センサー[SPS-440-1]
秋月電子通商:http://akizukidenshi.com/catalog/g/gI-00614/
P.204 表1
誤 |
MOSFET[K2232]
|
正 |
MOSFET[2SK2232]
|
P.219 MEMO「LCDモジュールに表示できる文字の一覧」
P.80 リスト7
誤 |
void loop() {
if (digitalRead(SWITCH)) {
if (LEDOn) {
LEDOn = false;
digitalWrite(LED, LOW);
} else {
LEDOn = true;
digitalWrite(LED, HIGH);
}
}
}
|
正 |
#define LED 7
#define SWITCH 13
boolean LEDOn = false;
void setup(){
pinMode(LED, OUTPUT);
pinMode(SWITCH, INPUT);
}
void loop() {
if (digitalRead(SWITCH)) {
if (LEDOn) {
LEDOn = false;
digitalWrite(LED, LOW);
} else {
LEDOn = true;
digitalWrite(LED, HIGH);
}
}
}
|
P.236 リスト
誤 |
if (sound > 300) {
analogWrite(6, 255);
delay(2000);
analogWrite(6, 0);
}
}
}
|
正 |
if (sound > 300) {
analogWrite(6, 255);
delay(2000);
analogWrite(6, 0);
}
}
|