使用したセンサの名称: 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軸でキャラクターを操作する。
何ができる装置であるのか: Joystickの操作に応じて、画面上の黒円を自由に動かすことができます。
なんのセンサを使用したか: Joystick Module
結線がわかりやすい写真:
工夫した一押しポイント:
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軸から減算
}
}