プログラム集

ESP32入門のプログラム集

ESP32のプログラミング学習で使用するプログラムを掲載しています。

1.Hello World!

ファイル名:helloworld.cpp

#include <Arduino.h> void setup() { Serial.begin(115200); } void loop() { Serial.println("Hello, World!"); delay(1000); }

2.1から10まで足し算をしてみる

ファイル名:onetoten.cpp

#include <Arduino.h> int i; // iは「足す数字」 int j = 0; // jは「足される数字で、最初は0」 void setup() { Serial.begin(115200); for(i=1;i<11;i++) { // iに1から10まで順に代入しながら、{}のあいだの命令を繰り返す j=j+i; } Serial.print("The answer is "); Serial.println(j); } void loop() { }

3.500を7で割る

少数点以下の数字が出るので、float型変数のjに代入する。次にjをint型変数のkに代入する。
ファイル名:7dewaru.cpp

#include <Arduino.h> int i = 500; float j; int k; void setup () { Serial.begin(115200); j=i/7; k=j; Serial.print("j= "); Serial.print(j,4); Serial.print(" k= "); Serial.println(k); } void loop () { }

4.LEDチカチカ

ESP32と実験基板による実習(1)
ファイル名:ledswm

#include <Arduino.h> void setup() { pinMode(27,OUTPUT); } void loop() { digitalWrite(27,HIGH); delay(1000); digitalWrite(27,LOW); delay(1000); }

5.スイッチをモーメンタリにして1つのLEDが点滅する

ESP32と実験基板による実習(2)
ファイル名:ledswm.cpp

#include <Arduino.h> #define ledpin 17 #define swpin 5 int sw=0; //swを整数型で定義: void setup() { // put your setup code here, to run once: pinMode(ledpin,OUTPUT); pinMode(swpin,INPUT_PULLUP); //swepinを入力用に設定: } void loop() { // put your main code here, to run repeatedly: sw=digitalRead(swpin); //swpinの状態HIGHかLOWの読み込み: if (sw==LOW){ //swがON(SWの電位はLOW)判定SW=LOWとしない: digitalWrite(ledpin,HIGH); //LED点灯消灯: } if (sw==HIGH){digitalWrite(ledpin,LOW);} //swがOFF(SWの電位はHIGH)判定SW=HIGHとしない: }

6.スイッチをオルタネータリにして1つのLEDが点滅する

ESP32と実験基板による実習(3)
ファイル名:ledswa.cpp

#include <Arduino.h> #define ledpin 16 #define swpin 5 int sw=0; //swを整数型で定義: boolean vs=false; //vsをbooleanで定義 消灯をfalseとしている: void setup() { // put your setup code here, to run once: pinMode(ledpin,OUTPUT); pinMode(swpin,INPUT_PULLUP); //swepinを入力用に設定: } void loop() { // put your main code here, to run repeatedly: sw=digitalRead(swpin); //swpinの状態HIGHかLOWの読み込み if (sw==LOW){ //オルタネータリ動作処理: vs=!vs; //swがONされたらvsの状態を反転: if (vs==false){digitalWrite(ledpin,HIGH);} //swONが奇数回 点灯: if (vs==true){digitalWrite(ledpin,LOW);} //swONが偶数回 消灯: delay(200); //チャタリング処理: while(sw==0){sw=digitalRead(swpin);} //スイッチOFF復帰確認: } }

7.SWをONするごとに4つのLEDが順番に点滅

ESP32と実験基板による実習(4)
ファイル名:4ledsw.cpp

#include <Arduino.h> #define ledR 27 // 記号ledRは27とする #define ledG 17 // 記号ledGは17とする #define ledB 16 // 記号ledBは16とする #define ledY 15 // 記号ledYは5とする #define swpin 5 // 記号swpinは15とする int sw=0; int cnt=0; // swとcntを整数型で定義 void setup () { pinMode (ledR, OUTPUT); pinMode (ledG, OUTPUT); pinMode (ledB, OUTPUT); pinMode (ledY, OUTPUT); pinMode (swpin, INPUT_PULLUP); // swpin(15ピン)は入力ピンに設定 } void loop () { delay(100); while(sw==0){sw=digitalRead(swpin);} // SW OFF確認 sw=digitalRead(swpin); // swpinの状態HIGHかLOWの読み込み: if (sw==LOW){ cnt++; } // スイッチ回数カウント: if (cnt>=5){cnt=0;} // カウント繰り返し制限処理0→1→2→3→4→0・・ switch(cnt){ case(1): // LED赤点灯 digitalWrite(ledR,HIGH); digitalWrite(ledG,LOW); digitalWrite(ledB,LOW); digitalWrite(ledY,LOW); break; case(2): // LED緑点灯 digitalWrite(ledR,LOW); digitalWrite(ledG,HIGH); digitalWrite(ledB,LOW); digitalWrite(ledY,LOW); break; case(3): // LED青点灯 digitalWrite(ledR,LOW); digitalWrite(ledG,LOW); digitalWrite(ledB,HIGH); digitalWrite(ledY,LOW); break; case(4): // LED黄点灯 digitalWrite(ledR,LOW); digitalWrite(ledG,LOW); digitalWrite(ledB,LOW); digitalWrite(ledY,HIGH); break; default: // 消灯 digitalWrite(ledR,LOW); digitalWrite(ledG,LOW); digitalWrite(ledB,LOW); digitalWrite(ledY,LOW); break; } }

8.バッテリーチェッカー

ESP32と実験基板による実習(5)
ファイル名:batterychecker.cpp

#include <Arduino.h> long val = 0; float v1; void setup() { Serial.begin(115200); pinMode(39,ANALOG); pinMode(16,OUTPUT); pinMode(27,OUTPUT); analogSetAttenuation(ADC_11db); } void loop() { val = analogRead(39); v1 = val*3300/4095; Serial.print("Read Value = "); Serial.println(val); Serial.print("V = "); Serial.print(v1); Serial.println(" mV"); Serial.println(""); if(v1>=1400 && v1<1700){ digitalWrite(16,HIGH); digitalWrite(27, LOW); }else{ digitalWrite(16,LOW); digitalWrite(27, HIGH); } delay(500); }

9.マイクロサーボ動作確認

ESP32と実験基板による実習(6)
ファイル名:servo.cpp

#include <Arduino.h> #include <ESP32Servo.h> #define SERVO_PIN 13 Servo myServo; void setup() { myServo.attach(SERVO_PIN); } void loop() { myServo.write(0); delay(1000); myServo.write(90); delay(1000); myServo.write(180); delay(1000); myServo.write(90); delay(1000); }

10.超音波センサー動作確認

ESP32と実験基板による実習(7)
ファイル名:HCSR04.cpp

#include <Arduino.h> #define Trig 14 #define Echo 12 float Distance = 0.00; int Search () { float Duration = 0.0; float CM = 0.0; digitalWrite (Trig, LOW); delayMicroseconds (2); digitalWrite (Trig, HIGH); delayMicroseconds (10); digitalWrite (Trig, LOW); Duration = pulseIn (Echo, HIGH); CM = (Duration / 58.8); return CM; } void setup () { Serial.begin(115200); pinMode (Trig, OUTPUT); pinMode (Echo, INPUT); } void loop () { delay (1000); Distance = Search (); Serial.print(F("\r\nDistance Cm: ")); Serial.println(Distance); }