top of page

 いたずら 

 LED03

//初期設定
void setup(){
  pinMode(13,OUTPUT);//内臓LED出力
}
//繰り返し
void loop(){
  digitalWrite(13,HIGH);//LED灯
  delay(1000);//1000ms待
  digitalWrite(13,LOW);//LED消
  delay(1000);//1000ms待
}

 ⑨いたずら(*これが大切だと思います)。

 これでも動きます。LED_BUILTINと13は同等なのです。​1000を変更すると点滅の時間が変わります。

 スケッチ例はたくさん有りますので練習には事欠きません。いろいろなことをやってみましょう。下のリンクも参考にしてください。

​ スケッチはコピーして貼り付けても動きません,空白があるのでじゃまをしています。

​ 同じようにタイプしてください。プログラムの練習になります。

 注釈をなくして,これでも動きます。

 LED04

void setup(){
  pinMode(13,OUTPUT);
  }
void loop(){
  digitalWrite(13,HIGH);delay(1000);
  digitalWrite(13,LOW);delay(1000);
  }

 注釈がなくても意味が分かるようになってきませんか?

更に,これでも動きます。

 LED05

void setup(){pinMode(13,OUTPUT);}
void loop(){digitalWrite(13,HIGH);delay(1000);
            digitalWrite(13,LOW);delay(1000);}

 行をくずすともっと短くなりますが,意味が分からなくなってしまいます。これがプログラムとしては限界です。

 行をくずすともっと短くなりますが,意味が分からなくなってしまいます。これがプログラムとしては限界です。

 LED05

void setup(){
pinMode(2,OUTPUT);
}
void loop(){
digitalWrite(2,HIGH);delay(1000);
digitalWrite(2,LOW);delay(1000);
}

​ 見にくいのですが,コピペできます。IDEに移してから,半角スペースやTAB,注釈を入れると見やすくなります。

 もっといたずら 

もっといた図rz
基盤.jpg

 上のスケッチは出力にデジタル2番ピンにしました。

 D2とGNDにLEDをつなげてブリンクします。

 スケッチ各部 

スケッチ各部

 Arduinoのスケッチは4つの部分に分けることができます。各部分に名前を付けました。

 宣言部分まだ使っていません。

 インクルードファイルや決まりごとスケッチ全体で使う変数などを記述します。

 初期設定部分

 初めに設定することを記述します。

 繰り返し部分

 本体に当たる部分で繰り返し行う事柄を記述します。

 関数・補助部分まだ使っていません。

 何回も使うような関数や補助的な文を書きます。

 2つ以上のプログラムを合成する場合には,各部のスケッチを順序良く各場所に入れてやれば動くようになります。

バリエーション

 Arduino Nano 

Arduino nano

 電池で駆動するためにはUNOでは消費電流が多いので付属品の少ないNanoがいいのではないかと考えました。

​ Lチカしてみると点灯時28.5mA消灯時25.9mAです。PWR_DOWNでスリープにすると16.5mAになります。

​ ある程度UNOでスケッチやハードを開発してNanoに替えると効率がいいと思います。

​2017年4月9日

 ドライバ 

アンカー 3

 ブートローダー

 ドライバをインストールしたら,ボードをNanoに替え,ポートを選択します。ツール,ProcessorでATmega328P (Old Bootloader)に変更します。後はUNOと変わらずにスケッチを書くことができます。全ての入出力が同じように使えます。pinの配列が違うのでシールドはそのままでは使えません。

 使用例 

アンカー 3

 スマートカーに使ってみました。ブレッドボードに乗せると小回りが利いてちょっとした改造が簡単にできます。

 ICSP 

 USBが使えなくなってしまった場合はICSPを使ってプログラムを書き込むことができます。ICSPが働くのは/RESET端子がLOWの場合(リセットボタンを押しているとき)です。ICSP(in-circuit serial programming)はISP(In-System Programming)と同じだそうです。

 ​ESP 

 Arduino ESP8266 

​ Arduinoでwifiを使おうとしましたが,技適がないので日本では使えない様です。容量が多いのとスピードが速いのでそちらの方で活用しましょう。マイクロUSBコネクタでの接続なのでケーブル回りが軽くなります。

​ 使ってはいけないけど売買はしてもよいそうです。2021/6/4加筆

​2017年4月23日

 Arduino UNO互換のEPS8266ボードを入手しました。例によって手こずっています。

 ドライバをインストールが必要になります。

 SBはCH341で認識してくれます。

 ボードは少し複雑になります。

https://github.com/esp8266/Arduino

Stableボードマネージャを
 ArduinoIDEでファイルの中の環境設定の下の方にある「追加のボードマネージャのURL」の右の欄に

http://arduino.esp8266.com/stable/package_esp8266com_index.json

を貼り付けます。

 「ツール」タグの「ボード」の中の「ボードマネージャ」をクリックして窓を開け,一番下のesp8266の欄をクリックします。インストールをクリックすると開始されます。時間がかかります。

 終わったらボードを選択します。

 今のところプログラムをマイコンに送れません。

warning: espcomm_sync failed
error: espcomm_open failed
error: espcomm_upload_mem failed
error: espcomm_upload_mem failed

​コンパイラー後このようなメッセージが出て,エラーになってしまいます。リセット回路を変更すると書き込み可能なモードになるとインターネットで検索できました。GPIO0を押したままリセットすると書き込みができるということです。難しそうな回路図が載っていました。Switchサイエンスさんの所のリセット回路があるのですが作れません。時間があればなんとかできるかもしれませんが苦しいです。

 GPIO0を押しながらということは0Vか5Vにするということなのだろうと考えて10kΩでプルアップしました。

WeMos_D1

 プルアップしてリセットしても書き込むことはできませんでした。GNDに接続してリセットして,直ぐに離すとなんとなく反応はありましたが書き込めませんでした。

​ GNDに接続したままリセットして書き込むまで待つと大きな変化がありました。書き込むことができたようでLチカが始まりました。IDEのメッセージは赤で表示しているので心配ではありました。

WeMos_D1 Reset変更

 GNDとGPIO0を直接接続して押した状態を保つようにしました。これで書き込みができました。書き込み後はGPIO0はGNDと切り離しておきましょう。

 それにしても,このボードはメモリが1Mもあるのでびっくりしてしまいます。その割にはただのLチカで222kも使ってしまうのはなぜでしょう?

 wifiが使えないのは残念です,なんとかならないものでしょうか。

Lチカ for ESP8266

void setup() {//設定部
  pinMode(2, OUTPUT);//LEDの接続はGPIO2
}

void loop() {//繰り返し部
  digitalWrite(2, LOW);//LEDオフ
  delay(1000);//1秒待ち
  digitalWrite(2, HIGH);//LEDオン
  delay(1000);//1秒待ち
}

1

2

3

4

5

6

7

8

9

 Lチカの例文です。電波を出すプログラムは有りません。

 Arduino ESP32 

ESP32

​ Arduinoでwifiを使おうとしています。技適がありますので,日本でも使えます。技適がないものもありますので,注意しましょう。マイクロUSBコネクタでの接続なのでケーブル回りが軽くなります。

  32 bit

 80-240M

  ROM4M

  RAM520K

技適マークです

日本国内で使用する,電波を扱う製品やディバイスは,このマークがないと法律違反になります。

​2020年11月21日

 Arduino UNO互換のESP32ボードを入手しました。例によって手こずっています

 ArduinoでESP32を使うを検索すると「GIT」に詳しく

丁寧に説明があります。手順に従って準備します。

 USBはCH340Cで制御しているようなのでドライバーは必要に応じて用意します。

ESP-32設定

ボード: "ESP32 Dev Module"
Upload Speed: "115200"に変更

(または 256000)

設定項目

Flash Mode: "QIO"
Flash Size: "4MB (32Mb)"
Partition Scheme: "初期値"
Flash Frequency: "80MHz"
PSRAM: “Disabled”
Upload Speed: "256000"
Core Debug Level: なし
シリアルポート: 自分のUSB(COM)ポート
書込み装置: なし

 

内臓LEDは pin2 です

 

シリアル通信を使う場合はUpload Speed: "115200"としないと文字化けします。

アンカー 4

内臓LED(D2)でLチカをしてみました。

アンカー 4

LEDが明るすぎて見えにくいのですが手前のあかいLEDが点滅しています。

Lチカ for ESP32

void setup() {
 pinMode(2, OUTPUT);
}
void loop() {
     delay(1000);
   digitalWrite(2, LOW);
     delay(1000);
   digitalWrite(22, HIGH);
  } 

 

1

2

3

4

5

6

7

8

9

D13でLチカをしてみました。

Lチカ for ESP32

void setup() {
pinMode(13, OUTPUT);
}
void loop() {
   digitalWrite(13, HIGH); 
   digitalWrite(13, LOW); 
   delay(1000); 

1

2

3

4

5

6

7

​ ここで使ったLEDは100円ショップで購入したクリスマス用の電飾の一部です。110円でLED10個と電池ケース単3電池2本分,更にスライドスイッチとコードが付いています。

​ ここで使ったLEDは100円ショップで購入したクリスマス用の電飾の一部です。110円でLED10個と電池ケース単3電池2本分,更にスライドスイッチとコードが付いています。

 LEDをD13とGNDにつないでLチカとシリアル通信をやってみました。

 シリアル通信 

アンカー 4

Lチカ for ESP32

1

2

3

4

5

6

7

8

9

10

11

void setup() {
Serial.begin(115200);
pinMode(13, OUTPUT);
}
void loop() {
  Serial.println("Hello!ESP32");
    digitalWrite(13, HIGH);
      delay(1000);
    digitalWrite(13, LOW);
      delay(1000); 
}

 シリアル通信を使う場合はUpload Speed: "115200"としないと文字化けします。

 WIFI通信

ファイル☞スケッチ例☞Wifi☞SimpleWifiServerを開きます。

 シリアルモニタを開いて速度を115200bpsにします。

Host: 192.168.10.128のようにローカルIPアドレスが表示されます。これをを開いて速度を115200bpsにします。

IP address: 

192.168.10.128
 

 HostのローカルIPアドレスが表示されます。

 

ウインドウズマーク  ☞Windowsシステムツール

☞コントロールパネル☞ネットワークとインターネット

☞インターネットオプション☞接続☞LANの設定

☞プロキシサーバー

​☞詳細設定

   次で始まるアドレスにはプロキシを使用しない(N)​

 

 

​☞

IP address: 
192.168.10.128を入力します。

 

 

 

 

 

 

​   セミコロン(;)を使用してエントリーを分けてください。

 


 

 

​☞OKを押します。

☞はい,OKを繰り返します。設定が終了しました。

​ 接例ウインドウを閉じましょう。

 

 HostのローカルIPアドレスをブラウザのウエッブ アドレスに張り付けると

Click here to turn the LED on pin 5 on.
Click here to turn the LED on pin 5 off.

とブラウザに表示されます。

☑LANにプロキシサーバーを使用する(これらの設定はダイアルアップまたは

  VPN接続には適用されません)

​ アドレス(E):           ポート(T):      詳細設定

詳細設定

OK

キャンセル

1992.168.10.128

 pin 5にLEDの+極をつなぎ-極を100から500Ωの抵抗を付けて

GNDにつなぎます。

​消

​ブラウザの上の行のhereをクリックするとLEDが点灯します。

ブラウザの下の行のhereをクリックするとLEDが消灯します。

WIFI

#include <WiFi.h>

const char* ssid     = "yourssid";
const char* password = "yourpasswd";

WiFiServer server(80);

void setup()
{
    Serial.begin(115200);
    pinMode(5, OUTPUT);      // set the LED pin mode
    delay(10);

    // We start by connecting to a WiFi network
    Serial.println();
    Serial.println();
    Serial.print("Connecting to ");
    Serial.println(ssid);

    WiFi.begin(ssid, password);

    while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
    }

    Serial.println("");
    Serial.println("WiFi connected.");
    Serial.println("IP address: ");
    Serial.println(WiFi.localIP());
    
    server.begin();

}

int value = 0;

void loop(){
WiFiClient client = server.available();   // listen for incoming clients

  if (client) {                             // if you get a client,
    Serial.println("New Client.");           // print a message out the serial port
    String currentLine = "";                // make a String to hold incoming data from the client
    while (client.connected()) {            // loop while the client's connected
      if (client.available()) {             // if there's bytes to read from the client,
        char c = client.read();             // read a byte, then
        Serial.write(c);                    // print it out the serial monitor
        if (c == '\n') {                    // if the byte is a newline character

          // if the current line is blank, you got two newline characters in a row.
          // that's the end of the client HTTP request, so send a response:
          if (currentLine.length() == 0) {
            // HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK)
            // and a content-type so the client knows what's coming, then a blank line:
            client.println("HTTP/1.1 200 OK");
            client.println("Content-type:text/html");
            client.println();

            // the content of the HTTP response follows the header:
            client.print("Click <a href=\"/H\">here</a> to turn the LED on pin 5 on.<br>");
            client.print("Click <a href=\"/L\">here</a> to turn the LED on pin 5 off.<br>");

            // The HTTP response ends with another blank line:
            client.println();
            // break out of the while loop:
            break;
          } else {    // if you got a newline, then clear currentLine:
            currentLine = "";
          }
        } else if (c != '\r') {  // if you got anything else but a carriage return character,
          currentLine += c;      // add it to the end of the currentLine
        }

        // Check to see if the client request was "GET /H" or "GET /L":
        if (currentLine.endsWith("GET /H")) {
          digitalWrite(5, HIGH);               // GET /H turns the LED on
        }
        if (currentLine.endsWith("GET /L")) {
          digitalWrite(5, LOW);                // GET /L turns the LED off
        }
      }
    }
    // close the connection:
    client.stop();
    Serial.println("Client Disconnected.");
  }
}

参照 Arduino,ESP32のsketch例ファイル☞スケッチ例☞Wifi☞SimpleWifiServer

bottom of page