実現したいこと
M5 Stackにて、ADCアダプタを用いて電圧を取得している。
この電圧の取得タイミングを割り込み処理をして10㎜/sec間隔で取得したい。
発生している問題・分からないこと
現在、割り込みをするコード内に電圧を取得するコードを書いても
うまく測定できない。シリアルモニターで見ると65535と16ビットの最大値を出力してしまっている。
Loop内に電圧を測定するコードを書けば正常に取得できるが、取得タイミングを指定したい為
割り込み内で電圧取得したいができない。
該当のソースコード
Arduino
1#include <M5Stack.h> 2#include <Wire.h> 3#include "ADS1100.h" 4 5ADS1100 ads; 6 7float value1 = 0; // アナログ値1を格納 8uint16_t voltage1 = 0; // 電圧値CH1を格納 9int voltage2 = 0; 10const int CH1_PIN = 35; // アナログピン35格納 11const float MAX_VOLTAGE = 3.3; // 3.3Vを電源とした場合 12const float ANALOG_MAX = 4095; // ESP32の場合 13unsigned long StartTime = 1; // 14unsigned long currTime = 0; 15unsigned long prevTime = 0; 16unsigned long EndTime = 1; 17 18char selectedItem = 0; 19int t1 = 0; 20int t2 = 0; 21int T1 = 5; 22int T2 = 40; 23int selectedNum = 0; 24int sta = 0; 25float slope = 0; 26 27hw_timer_t * timer = NULL; 28volatile uint32_t counter = 0; 29volatile uint32_t current_time = 0; 30 31void onTimer() { 32 33 34 ads.begin(); 35 voltage1 = ads.Measure_Differential() ; 36 voltage2 = voltage1 / 2.471; 37 38 39 StartTime = millis(); 40 Serial.println(voltage2); 41 Serial.println(StartTime); 42} 43 44 45 46 47 48void setup() 49{ 50 51 ads.begin(); 52 ads.getAddr_ADS1100(ADS1100_DEFAULT_ADDRESS); // 0x48, 1001 000 (ADDR = GND) 53 ads.setGain(GAIN_ONE); // 1x gain(default) 54 ads.setMode(MODE_CONTIN); // Continuous conversion mode (default) 55 ads.setRate(RATE_8); // 8SPS (default) 56 ads.setOSMode(OSMODE_SINGLE); // Set to start a single-conversion 57 58 M5.begin(); 59 Serial.begin(115200); 60 61 // タイマ作成 62 timer = timerBegin(0, 80, true); 63 64 // タイマ割り込みサービス・ルーチン onTimer を登録 65 timerAttachInterrupt(timer, &onTimer, true); 66 67 // 割り込みタイミング(ms)の設定 68 timerAlarmWrite(timer, 10000, true); 69 70 // タイマ有効化 71 timerAlarmEnable(timer); 72 73 74 75 76} 77 78 79 80void loop() 81{ 82 M5.update(); 83 M5.Lcd.setCursor(10, 10); // 文字表示の左上位置を設定 84 M5.Lcd.setTextColor(RED); // 文字色設定(背景は透明) 85 M5.Lcd.setTextSize(2); // 文字の大きさを設定(1~7) 86 M5.Lcd.print("mesurement"); 87}
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
特に得られなかった。
補足
特になし
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。