SSブログ

ソース部分作成1 (1-7.ソース:定義とsetup関数) [ロボット制作(tankun-mk1)]

おはようございます[わーい(嬉しい顔)]
今日からロボット作成のソース部分を紹介していきます。

まずは、定義部分とsetup関数から[右斜め上]

最初に定義部分

// サーボのインクルード
#include 

// 前方の超音波センサー
#define PIN_SENSOR_FRONT_ECHO      2
#define PIN_SENSOR_FRONT_TRIG      3

// スタート・ストップスイッチ
#define PIN_SW_START        4
#define PIN_SW_STOP         5

// モータ
#define PIN_MTR_LEFT_GO     7
#define PIN_MTR_LEFT_BACK   6
#define PIN_MTR_RIGHT_GO    9
#define PIN_MTR_RIGHT_BACK  8

// 前方のサーボ
#define PIN_SERVO_FRONT      10

// ----------------------------------------
// 制御コード
// ----------------------------------------
#define MTR_SET_MODE_GO     0
#define MTR_SET_MODE_STOP   1
#define MTR_SET_MODE_LEFT   2
#define MTR_SET_MODE_RIGHT  3
#define MTR_SET_MODE_BACK   4

// ----------------------------------------
// サーボ制御
// ----------------------------------------
#define SERVO_UNGLE_FRONT  90
#define SERVO_UNGLE_RIGHT  25
#define SERVO_UNGLE_LEFT  155

#define SERVO_UNGLE_DELAY_TIME 1500

// センサー
#define SENSOR_FRONT_ERROR_DST 14
#define SENSOR_SIDE_ERROR_DST 20

// =======================================
// グローバル変数定義
// =======================================
// ----------------------------------------------
// サーボ
// ----------------------------------------------
Servo servo_front;
// ----------------------------------------------
// スイッチ
// ----------------------------------------------
int sw_start,sw_stop;


[define部分]
PIN_XX:Arduinoデジタルピン接続番号の定義です。
MTR_XX:モータの進む、止まる、旋回の定義です。
     ここの使い方は追々、説明します。
SERVO_XX:サーボモータの回転角度と回転待ち時間です。
SENSOR_XX:進行方向に障害物があるかのチェック距離(cm)です。

[グローバル変数]
seup関数,loop関数など複数の関数で使用する定義を
ここに書くことで全関数で使用可能になります。
servo_front:サーボモータの定義です。setup関数で初期化を行い、
      loop関数で横に向けたりと回転させます。
sw_start,stop:スタート、ストップボタンの定義です。

setup関数はこんな感じです。
void setup() {
  // ----------------------------------------------
  // シリアル設定
  // ----------------------------------------------
  Serial.begin(9600);
  Serial.println("Hello!");

  // ----------------------------------------------
  // ピン設定
  // ----------------------------------------------

  // スイッチ
  pinMode( PIN_SW_START, INPUT );
  pinMode( PIN_SW_STOP, INPUT );
  // モーター
  pinMode( PIN_MTR_RIGHT_GO, OUTPUT );
  pinMode( PIN_MTR_RIGHT_BACK, OUTPUT );
  pinMode( PIN_MTR_LEFT_GO, OUTPUT );
  pinMode( PIN_MTR_LEFT_BACK, OUTPUT );
  
  // 前方の超音波センサー
  pinMode( PIN_SENSOR_FRONT_TRIG, OUTPUT);
  pinMode( PIN_SENSOR_FRONT_ECHO, INPUT);

  // 前方のサーボセンサー
  servo_front.attach(PIN_SERVO_FRONT);
  exec_sensor_servo_ungle(SERVO_UNGLE_FRONT);

  // スイッチをOFF(LOW)に初期化
  sw_start=LOW;
  sw_stop=LOW;
}

void exec_sensor_servo_ungle(int ungle) {
  servo_front.write(ungle);
  delay(SERVO_UNGLE_DELAY_TIME);

  return;
}


[シリアル定義]
いつものシリアル設定です。

[ピン設定]
pinMode関数はArduinoに接続するピンの初期化です。
defineで定義した各変数を使用して初期化します。

[前方のサーボセンサー]
attachで使用するピンを定義し、
exec_sensor_servo_ungle関数は自前定義で、
この関数でサーボを回転させます。
今回は正面の90℃に設定します。

[exec_sensor_servo_ungle関数]
引数で受けた角度でサーボモータを回転させる関数です。
servo_front.writeが回転で、引数で受けた角度を設定します。
回転中に次の処理を行うと動作が不安定になる可能性があるので
delay関数で少し時間待ちを与えて回転が終わるまで待ちます。

今回はこんな感じです。

次回は本処理のloop関数を解説していきまーす。

nice!(2)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 2

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。