質問編集履歴

1

プログラムを修正しました。

2022/06/12 00:44

投稿

raspypy
raspypy

スコア247

test CHANGED
@@ -1 +1 @@
1
- Arduino MCP23017 リードした値がたまに変
1
+ Arduino 入力の値がたまに変
test CHANGED
@@ -1,16 +1,8 @@
1
1
  ## やろうとしていること
2
2
 
3
3
  ArduinoとMCP23017の組み合わせで使用しています。
4
- MCP23017のGPA[2:0]を入力として使用しています。
5
- GPA[2]=0
6
- GPA[1]=0
7
- GPA[0]=0
8
- この状態(テスターで電圧確認済)で、ArduinoからReadすると、
9
- GPA[2]=1
10
- GPA[1]=1
11
- GPA[0]=1
12
4
  という値が返ってきてしまうことが稀にあります。
13
- 現象が稀にしか発生しないことと、発生したときに、GPA[2:0]の電圧を確認しても"0"であることから、
5
+ 現象が稀にしか発生しないことと、発生したときに、電圧を確認しても"0"であることから、
14
6
  なぜ、このような値が返ってきてしまうのかが分からず困っております。
15
7
 
16
8
  Arduino - MCP23017との間は、短いケーブルでI2C通信しています。
@@ -20,47 +12,3 @@
20
12
  Adafuruitが提供しているMCP23017ライブラリを使用しています。
21
13
  https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library
22
14
 
23
-
24
- ## プログラム
25
- ```C++
26
- void send2LoRa() {
27
- GPA0 = mcp.digitalRead(0);
28
- GPA1 = mcp.digitalRead(1);
29
- GPA2 = mcp.digitalRead(2);
30
-
31
- Serial.printf("GPIOA[0]: %d\r\n", GPA0);
32
- Serial.printf("GPIOA[1]: %d\r\n", GPA1);
33
- Serial.printf("GPIOA[2]: %d\r\n", GPA2);
34
-
35
- bme280.begin(); // BME280の初期化
36
- bme280.get_sensor_data(&data);
37
- //Serial.printf("temp: %.1f, humid: %.1f, press: %.1f\r\n", data.temperature, data.humidity, data.pressure / 100);
38
- Serial.printf("temp[deg C]: %.1f\r\n", data.temperature);
39
- Serial.printf("humid[percent]: %.1f\r\n", data.humidity);
40
- Serial.printf("press[hPa]: %.1f\r\n", data.pressure / 100);
41
-
42
- Serial.printf("enter deep sleep\n");
43
- delay(10);
44
- esp_deep_sleep(1000000LL * S_PERIOD); // S_PERIOD秒Deep Sleepする
45
- }
46
-
47
- void setup() {
48
- Wire.begin(SDA, SCL);
49
-
50
- //I2C Address = 0x20
51
- mcp.begin_I2C(0x20);
52
- //GPIO A
53
- mcp.pinMode(0, INPUT);
54
- mcp.pinMode(1, INPUT);
55
- mcp.pinMode(2, INPUT);
56
- mcp.pinMode(3, INPUT);
57
- mcp.pinMode(4, INPUT);
58
- mcp.pinMode(5, INPUT);
59
- mcp.pinMode(6, INPUT);
60
- mcp.pinMode(7, INPUT);
61
- }
62
-
63
- void loop() {
64
- send2LoRa();
65
- }
66
- ```