Qumcum Lab. が実行中に繰り返し実行される処理です。Arduino の loop()です。
◀ この記事の前に: 初期化 / setup()
▶ この記事の次に: タイマ割り込み
処 理
メインループの処理は以下のとおりです。
- 即時: ループが回るごとに実行
・モニタとの送受信: Arduino IDE のモニタと通信、デバッグ用です。
・BLEの受信: スマートフォンからの受信を確認してリモコン制御します。 - 125msec. ごとに実行: タイマ割り込み(定時)と連携
・loop counter: 各定時制御用のフラグ処理
・モーションシーケンサ: サーボモータのシーケンス処理 - 1sec. ごとに実行: タイマ割り込み(定時)と連携
( 現在未使用 )
コード
コードは以下のとおりです。
loop()
Qumcum Lab. が実行中に繰り返し実行される処理です
//=====================================================================
// Loop
//=====================================================================
//---------------------------------------------------------------------
// Main loop
//---------------------------------------------------------------------
void loop(){
String szBuf;
int lenBuf;
char buf[150];
int command;
//-----------------------------------------------------
// arduino monitor input process
//-----------------------------------------------------
while(Serial.available()) {
procMonitorRcv();
//-----------------------------------------------------
// Timer interval 125ms で1回ループ
//-----------------------------------------------------
if (bInterval == true){
bInterval = false;
//--------------------------------------------
loopCounter(); // loop counter
//--------------------------------------------
// 1sに1回実行する
//--------------------------------------------
if(event1s == true){
event1s = false; // initialize parameter
}
//--------------------------------------------
// MSsに1回実行する
//--------------------------------------------
if( gEventMS == true){
gEventMS = false; // initialize parameter
procMS(); // Servomotor sequence control
}
}
//**** Received BLE data ****
loopBleRcv();
}
// End of loop
//==============================================================================
loopCounter()
各定時制御用のフラグ処理です。
//---------------------------------------------------------------------
// Counter
//---------------------------------------------------------------------
void loopCounter(){
iLoop1s += 1;
//--------------------
// 1s period
//--------------------
if (iLoop1s >= 8){ // 125ms x 8 = 1s
iLoop1s = 0;
iSendCounter += 1;
if (iSendCounter >= SEND_INTERVAL){
iSendCounter = 0;
event1s = true;
}
}
gLoopMS += 1;
//--------------------
// SV period
//--------------------
if ( gLoopMS >= 4 ){ // 125ms x 8 = 1s
gLoopMS = 0;
gEventMS = true;
}
}
参考情報
参考になる情報は以下のとおりです。
このホームページ内
- 複数のMCUをつなぐ: このロボットには複数の MCUが搭載されています。その MCU間の接続の概要です。
他のWebサイト
- SN74LVC1G3157 SPDT アナログスイッチ Datasheet