ESP32でArduino
Suns & Moon Laboratory
Lチカ
Arduino1.8.5 + esp8266 ver2.4.1
esp32_blinky.ino
void setup() {
pinMode(23,OUTPUT);
}
void loop() {
digitalWrite(23,HIGH);
digitalWrite(23,LOW);
}
Hello
Arduino1.8.5 + esp8266 ver2.4.1
esp32_hello.ino
void setup() {
Serial.begin(115200);
while(!Serial);
Serial.printf("Hello! ESP32.\r\n");
}
void loop() {
Serial.printf(".");
delay(1000);
}
加速度センサー
LIS3DH
Arduino1.8.5 + esp8266 ver2.4.1
SparkFun LIS3DH Breakout 1.0.0
秋月電子 LIS3DH \600 http://akizukidenshi.com/catalog/g/gK-06791/
ライブラはSparkFun
ライブラリマネージャからSparkFun LIS3DH Breakoutをインストール
MSBFIRST無いってエラーでるので、Arduino\libraries\SparkFun_LIS3DH_Breakout\src\SparkFunLIS3DH.cppを書き換え
includeの後ろに、下記記述追加。
#define MSBFIRST 1
↓
githubから落としたver1.0.1に置き換え。
https://github.com/sparkfun/SparkFun_LIS3DH_Arduino_Library
それはMSBFIRSTのエラー出なかった。
基板はA,Bをショート、Cはオープンにして5ピンをVCCにショート(SparkFunのボードと同じ構成にした)。
当初SCL,SDAをDefaultとは違う、別ポートにしていたら動かなかった。(ピン指定してもダメだった。SDOが常に同じ値で、シリアルモニタの表示値は0)
ソースはサンプルをそのまま
https://github.com/sparkfun/SparkFun_LIS3DH_Arduino_Library/blob/master/examples/MinimalistExample/MinimalistExample.ino
はまり
タイマー割り込み入らない
Arduino1.8.5 + esp8266 ver2.4.1 + Sparkfun LIS3DH ver1.0.1
なぜかこれ追加でタイマー割り込みかからない
myIMU.settings.accelSampleRate = 100;
myIMU.begin();
Wire.setClock(400000); //must after myIMU.begin();
↓
いろいろいじっていたら動く組み合わせもあるので、どっかでなにかが邪魔してる。多分自分のせい。
↓
初期化順序を
タイマー -> myIMU -> Wireにしたら動いた
↓
と思ったらやっぱダメ
良い時とダメな時がある。
SPIとGPIOの初期化タイミング
SPIを初期化すると、デフォルトのGPIOポートが初期化されちゃうので、SPI初期化後にGPIO初期化する必要が有る。
UPnPで不具合?
検証したのではなくやってみたレベルなんですが、アクセスポイントのUPnPを「使用する」にしているとTCP通信が失敗した。
使用しないように設定したらTCP通信の失敗が無くなった。ような気がする。
うーん。
APはWR8600NのRTモードで、WAN未接続、ESP32はAPへ2.4G接続。IPアドレスは固定(DHCPは生かしてあるが使用しない)
ウェイト
ets_delay_us(x)
【ESP32】マルチタスク中でμs単位でdelayをかける
参考
ESP32-WROOM-32
Arduino core for the ESP32 リファレンス
Arduino – ESP32 のマルチタスク ( Dual Core ) を試す
xSemaphoreGiveFromISR
https://www.renesas.com/cn/ja/products/gadget-renesas/reference/gr-rose/rtos-semaphore.html
2022-05-15 15:20:31 32400