--------------------------------------------------
https://lang-ship.com/blog/work/i2c-temperature-sensor/#toc5 でも書いてる
#include <Wire.h>
#define Addr 0x44 // I2C scanner tell this address
void readTempHumi(void);
void setup() {
Wire.begin(21, 22, 100000);
// put your setup code here, to run once:
Serial.begin(115200);
delay(300);
}
void loop() {
readTempHumi();
}
void readTempHumi(void){
unsigned int data[6];
// Start I2C Transmission
Wire.beginTransmission(Addr);
// Send measurement command
Wire.write(0x2C);
Wire.write(0x06);
// Stop I2C transmission
Wire.endTransmission();
delay(500);
// Request 6 bytes of data
Wire.requestFrom(Addr, 6);
// Read 6 bytes of data
// cTemp msb, cTemp lsb, cTemp crc, humidity msb, humidity lsb, humidity crc
if (Wire.available() == 6)
{
data[0] = Wire.read();
data[1] = Wire.read();
data[2] = Wire.read();
data[3] = Wire.read();
data[4] = Wire.read();
data[5] = Wire.read();
}
// Convert the data
float cTemp = ((((data[0] * 256.0) + data[1]) * 175) / 65535.0) - 45;
float fTemp = (cTemp * 1.8) + 32;
float humidity = ((((data[3] * 256.0) + data[4]) * 100) / 65535.0);
// Output data to serial monitor
Serial.print("Relative Humidity : ");
Serial.print(humidity);
Serial.println(" %RH");
Serial.print("Temperature in Celsius : ");
Serial.print(cTemp);
Serial.println(" C");
Serial.print("Temperature in Fahrenheit : ");
Serial.print(fTemp);
Serial.println(" F");
delay(500);
}
https://techatronic.com/esp8266-with-servo-motor-control-servo-motor-with-esp8266/
サーボモーターSG90が半分の角度しか回らないので調査
https://makers-with-myson.blog.ss-blog.jp/2017-01-14 を参考に
PWMのFREQ/DUTYをセットして成功した DUTYは1000くらいまで設定しないと
モータがうごかんかった PINMODE設定不要だったこと(行儀わるし、書くべし)
https://www.ei.tohoku.ac.jp/xkozima/lab/espTutorial0.html にFREQ目安あり
PWM 周波数が高いほど、使用可能なデューティ分解能は低くなり、その逆も同様です。
https://micropython-docs-ja.readthedocs.io/ja/v1.19.1ja/library/machine.PWM.html より
const in ledPin = 2;
void setup(){
pinMode(ledPin,OUTPUT);
analogWriteFreq(1000);
analogWriteRange(1000);
}
void loop(){
digitalWrite(4,LOW); // drv8833用、stby3.3vわすれずに
for(int dutyCycle=0;dutyCycle<1000;dutyCycle++){
analogWrite(ledPin,dutyCycle);
delay(10);
}
for(int dutyCycle=0;dutyCycle<1000;dutyCycle++){
analogWrite(ledPin,dutyCycle);
delay(10);
}
}
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
// https://cotechworks.ltt.jp/2023/06/05/post-668/ を改変
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#define WIFI_SSID "ESP8266-softAP" /* SSID */
#define WIFI_PWD "12345678" /* パスワード */
#define AIN0 2
#define AIN1 4
ESP8266WebServer server(80);
IPAddress ip( 192, 168, 0, 1 ); /* ESP8266のIPアドレス */
IPAddress subnet( 255, 255, 255, 0 ); /* サブネットマスク */
void setup() {
pinMode(AIN0,OUTPUT);
pinMode(AIN1,OUTPUT);
/* softAPモードに設定 */
WiFi.mode(WIFI_AP);
WiFi.softAPConfig(ip, ip, subnet);
WiFi.softAP(WIFI_SSID, WIFI_PWD);
server.on("/", []() {
server.send(
200,
"text/html",
"<h1>Hello! Web Server!</h1>"
"Click <a href=\"/F\">forward</a>"
"</br>"
"Click <a href=\"/B\">backward</a>");
});
server.on("/F", []() {
digitalWrite(AIN0,HIGH);
digitalWrite(AIN1,LOW);
delay(100);
digitalWrite(AIN0,HIGH);
digitalWrite(AIN1,HIGH);
server.send(
200,
"text/html",
"<h1>Hello! Web Server!</h1>"
"Click <a href=\"/F\">forward</a>"
"</br>"
"Click <a href=\"/B\">backward</a>");
});
server.on("/B", []() {
digitalWrite(AIN0,LOW);
digitalWrite(AIN1,HIGH);
delay(100);
digitalWrite(AIN0,HIGH);
digitalWrite(AIN1,HIGH);
server.send(
200,
"text/html",
"<h1>Hello! Web Server!</h1>"
"Click <a href=\"/F\">forward</a>"
"</br>"
"Click <a href=\"/B\">backward</a>");
});
server.begin();
}
void loop() {
/* クライアントからアクセスがあった時の処理 */
server.handleClient();
}
0 件のコメント:
コメントを投稿