演習①

使用したセンサの名称: Joystick Module

設定した閾値: Joystickのx軸またはy軸が100以下900以上のとき、または押されている時

コード:

				
					int JoyStick_X = 0; // x
int JoyStick_Y = 1; // y
int JoyStick_Z = 3; // push
  
void setup() {
  pinMode(JoyStick_Z, INPUT); // JoyStickのPinをInputとして指定
  pinMode(13, OUTPUT); // LEDライトのPinをOutputとして指定
  Serial.begin(9600); // 9600 bps
}
 
void loop() {
  int x,y,z;
  x=analogRead(JoyStick_X); // JoyStickのX座標を取得 (0~1024)
  y=analogRead(JoyStick_Y); // JoyStickのY座標を取得 (0~1024)
  z=digitalRead(JoyStick_Z); // JoyStickのZ座標を取得 (0 or 1)
  Serial.print(x ,DEC); // DEBUG用にJoyStickの座標をコンソールに出力
  Serial.print(",");
  Serial.print(y ,DEC);
  Serial.print(",");
  Serial.println(z ,DEC);
 
  if (x >= 900 || x <= 100 || y >= 900 || y <= 100 || z == 1) { // 閾値を越えたとき
    digitalWrite(13, HIGH); // LED点灯
  } else { // そうでないとき
    digitalWrite(13, LOW); // LED消灯 
  }
  delay(100);
}

				
			

演習②

使用したセンサの名称: Joystick Module

サンプルプログラムを実行すると何が起こるのか: Joystickの座標がコンソールに連続的に出力される

選んだセンサを使用したコンテンツの概要: 「バウンスボールV2」
壁や床に当たるとバウンスする「バウンスボール」を、Joystickを弾いた強さと方向によって画面内のボールにそれに対応する初速度を与えて操作し、障害物を乗り越えながらゴールを目指す。

選んだセンサはそのコンテンツ内でどのように使われるか:
Processingに座標データを転送して、X軸、Y軸でキャラクターを操作する。

演習EX

何ができる装置であるのか: Joystickの操作に応じて、画面上の黒円を自由に動かすことができます。

なんのセンサを使用したか: Joystick Module

結線がわかりやすい写真:

工夫した一押しポイント:

  • 今後を見越したスケーラブルかつ単純明快なコード設計
  • デフォルト値を考慮したスムーズな座標変遷システムの設計

Processingのコード全体:
				
					import processing.serial.*;
Serial myPort;
 
float []data = new float [3];
  
void setup() {
  myPort = new Serial(this, Serial.list()[4], 9600); // ARDUINO検知
  size(500, 500);
}

float x = 0, y= 0;

void draw(){
  background(255,255,255);
  fill(255, 0,0);
  stroke(153,0,0);
  strokeWeight(3);
  ellipse(x,y, 50, 50);
}
 
//送られてきたデータを処理する関数
void serialEvent(Serial p) {  
  String inString = myPort.readStringUntil('\n'); // ARDUINOのセンサ出力を取得
  
  if (inString != null) { // センサ出力があるならば
    inString = trim(inString); // 不要な空白等を削除
    data = float(split(inString, ',')); // 出力の値をカンマで区切って小分けで収納
    println(data);// DEBUG用でデータをコンソールに出力
    x += (data[0]-523) / 10; // デフォルト値からのx軸のずれ分の1/10だけをx軸に加算
    y -= (data[1]-514) / 10; // デフォルト値からのy軸のずれ分の1/10だけをy軸から減算
  }
}