最初に
ESP8266マイコンとは
スペック表
項目 | 内容 | 備考 |
---|---|---|
プロセッサ | ESP8266 | 32ビットRISC CPU |
MODEL | ESP-8266 D1 mini HW-350 | フラッシュメモリ4MB |
メーカー | Espressif | |
DIO | 11 | |
ADC | 1 | AD:0.0V-1.0V (10bit) |
I2C | 1 | |
SPI | 1 | |
PWM | - | ソフトウェアPWM |
Arduiono | 互換 | 追加のボードマネージャーURL [ESP8266] http://arduino.esp8266.com/stable/package_esp8266com_index.json |
USB形状 | microB | |
USBシリアル | CH340G | シリアルポート |
ポート表
本体シルク(SLK)とポートとの対応
| | | 本体SLK | 本体SLK | | |
|:-:|:-:|:-:|:-:|:-:|:-:|
| | RST | RST | TX | GPIO1 | TX |
| | ADC0 | A0 | RX | GPIO3 | RX |
| WAKE | GPIO16 | D0 | D1 | GPIO5 | SCL |
| SCLK | GPIO14 | D5 | D2 | GPIO4 | SDA |
| MISO | GPIO12 | D6 | D3 | GPIO0 | FLASH |
| MOSI | GPIO13 | D7 | D4 | GPIO2 | |
| CS | GPIO15 | D8 | G | GND |
| | 3.3V | 3V3 | 5V | |
使うまで
下準備
- 1.CH340ドライバのインストール
- Nanjing Qinheng Microelectronics Co., Ltdからダウンロード
- CH341ドライバ: https://www.wch-ic.com/downloads/CH341SER_ZIP.html
を入力
Arudiono IDEで使う
ボード上LED点灯
スケッチ
const uint8_t TARGET_PIN = LED_BUILTIN;
const uint8_t LED_ON = LOW;
const uint8_t LED_OFF = HIGH;
const unsigned long DELAY_TERM = 1000;
const unsigned long DELAY_BLINK = 100;
// setup
void setup() {
// ボード上のLEDを指定
pinMode(TARGET_PIN, OUTPUT);
}
// ループ
void loop() {
// 消灯
digitalWrite(TARGET_PIN, LED_OFF); // 消灯
delay(DELAY_TERM); // 待ち
// 点灯(ちょっと消灯)
digitalWrite(TARGET_PIN, LED_ON); // 点灯
delay(DELAY_TERM); // 待ち
digitalWrite(TARGET_PIN, LED_OFF); // 消灯
delay(DELAY_BLINK); // 待ち
// 点灯(ちょっと消灯)
digitalWrite(TARGET_PIN, LED_ON); // 点灯
delay(DELAY_TERM); // 待ち
digitalWrite(TARGET_PIN, LED_OFF); // 消灯
delay(DELAY_BLINK); // 待ち
}
LOWが点灯、HIGHが消灯。ちょっと、間違えやすい…
アナログ値入力
スケッチ
const uint8_t AD_PIN = A0;
const unsigned long SERIAL_SPEED = 115200;
const unsigned long DELAY_TERM = 1000;
const float CALC_OFFSET = 0;
const float CALC_RATE = 1;
const float CALC_RESOL = 1024;
// setup
void setup()
{
Serial.begin(SERIAL_SPEED);
pinMode(AD_PIN, INPUT);
}
// ループ
void loop()
{
int input_val = 0;
float volt = 0;
input_val = analogRead(AD_PIN);
volt = ((float)(input_val) / CALC_RESOL) * CALC_RATE + CALC_OFFSET;
Serial.printf("ADC = %d , %fV \r\n", input_val, volt);
delay(DELAY_TERM);
}
PWM制御
スケッチ
#include <Ticker.h>
const uint8_t TARGET_PIN = LED_BUILTIN;
const unsigned long DELAY_TERM = 500;
const unsigned long SERIAL_SPEED = 115200;
const uint8_t PWM_ON = HIGH;
const uint8_t PWM_OFF = LOW;
const int PWM_HZ = 50;
Ticker pwm_ticker;
uint32_t pwm_cycle_ms;
float duty_rate;
// setup
void setup() {
Serial.begin(SERIAL_SPEED);
// ボード上のLEDを指定
pinMode(TARGET_PIN, OUTPUT);
pwm_cycle_ms = 1000.0 / PWM_HZ;
duty_rate = 0;
// msec
pwm_ticker.attach_ms(pwm_cycle_ms, pwm_dest);
}
// PWM
void pwm_dest() {
unsigned int microSec;
microSec = ((float)pwm_cycle_ms * duty_rate * 1000);
digitalWrite(TARGET_PIN, PWM_ON);
delayMicroseconds(microSec);
digitalWrite(TARGET_PIN, PWM_OFF);
}
// ループ(ここでは出力せず、PWMの大きさを変えているだけ)
void loop() {
duty_rate += 0.05;
if (duty_rate > 1.0)
{
duty_rate = 0;
}
Serial.printf("cycle = %d duty_rate = %f \r\n", pwm_cycle_ms, duty_rate);
delay(DELAY_TERM);
}
最後に
スケッチコードはCC BY-SA 4.0(著作者の情報とCCライセンス継承はお願いします。商用利用・改変・再配布は問題なし)です。