可変抵抗を使ってみました。

可変抵抗を使って、LEDの明るさを制御してみました。

f:id:tenpamf:20180704231608p:plain
可変抵抗を用いたLED明るさ制御

スケッチは以下の通りです。

void setup() {
  // put your setup code here, to run once:
  pinMode(9,OUTPUT);
  Serial.begin(9600);
}
void loop() {
  // put your main code here, to run repeatedly:
  int i;
  i = analogRead(2);
  analogWrite(9,map(i,0,255,0,1023));
  Serial.println(i); 
}

可変抵抗の値をA2で読み取っています。読み取り値は0-1023までの1024段階ですが、analogWrite関数は0-255の256段階です。
※この0-255が0V-5Vに対応します。
そこで、map関数を使って数値を変換しています。この変換された値でD9から電圧を出力します。
シリアルは、確認用です。

スイッチを押すと、LEDが点灯するようにしたよ。

f:id:tenpamf:20180704210108p:plain
スイッチ押すとLED点灯

スケッチは以下の通り。

void setup() {
  // put your setup code here, to run once:
  pinMode(9,OUTPUT);
  pinMode(2,INPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  if(digitalRead(2)==LOW){
    digitalWrite(9,HIGH);
  }else{
    digitalWrite(9,LOW);
  }
}

この回路はスイッチを押さない状態ではD2には5V(HIGH)が印加されている。
この状態を「スイッチを押していない状態」とする。
スイッチを押すと、GNDとD2が繋がるために、D2=0V(LOW)状態となる。
この状態を「スイッチを押した状態」とする。
あとは、「スイッチを押した状態」でLEDが点灯するようにすれば良い。
すなわち、D2=LOWでD9=HIGHとなるようにプログラムすればよい。

※間違っていたらごめんなさい。その場合、ぜひ教えてください!

AE-ESP-WROOM-02の配線

備忘録として、AE-ESP-WROOM-02の配線を記録しておきます。動作確認はATコマンドを認識するところまでです。

https://cdn-ak.f.st-hatena.com/images/fotolife/t/tenpamf/20180703/20180703212234.png


スケッチは以下を作成しました。

#include <doxygen.h>
#include <ESP8266.h>

#include <SoftwareSerial.h>

//SSIDとpasswordの定義付け

#define SSID "*******"
#define PASSWORD "*******"

SoftwareSerial mySerial(10, 11); // RX, TX
ESP8266 wifi(mySerial);

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(9600); //本来esp-wroom-02は115200で動作する。しかし、今回はAT+UART_DEF=9600,8,1,0,0で既に動作速度変更済。そのため、このプログラムでよい。
  while (!Serial) {
    // wait for serial port to connect. Needed for native USB port only
  }

  //Serial.begin(9600);
  Serial.println("setup begin");
  Serial.print("ファームウェアバージョン: ");
  Serial.println(wifi.getVersion().c_str()); //

  //ステーションモードかどうかを判別
  if (wifi.setOprToStationSoftAP()) {
    Serial.println("to Station ok");
  } else {
    Serial.println("to Station err");
  }

  //接続可能なアクセスポイントの一覧取得
  Serial.println(wifi.getAPList());

  if (wifi.joinAP(SSID, PASSWORD)) {
    Serial.print("Join AP success\r\n");
    Serial.print("IP: ");
    Serial.println(wifi.getLocalIP().c_str());
  } else {
    Serial.print("Join AP failure\r\n");
  }

  Serial.print("setup end\r\n");

}

void loop() { // run over and over
  if (mySerial.available()) {
    Serial.write(mySerial.read());
  }
  if (Serial.available()) {
    mySerial.write(Serial.read());
  }
}