~磁力の変化で画面のアクションが変わる~
スクーミーボードの磁力値が変化すると画面のゲージが上下して、大きくなるほどゲージ色が赤になり、一定以上になると音がなります!
目次
右上:磁気センサー
int sensors[2];
int inByte;
void setup(){
Serial.begin(9600);
pinMode(A1, INPUT);
sensors[0] = analogRead(A1);
sensors[1] = 0;
inByte = 0;
establishContact();
}
void loop(){
if (Serial.available() > 0) {
inByte = Serial.read();
sensors[1] = analogRead(A1);
Serial.print(sensors[0]);
Serial.print(",");
Serial.println(sensors[1]);
}
}
void establishContact() {
while (Serial.available() <= 0) {
Serial.println("通信中");
delay(300);
}
}
import processing.serial.*;
import ddf.minim.*;
Minim minim;
AudioPlayer alert;
Serial myPort;
PImage img;
float origin_value;
float mag_value;
float analog_value;
int red = 0;
int blue = 255;
void setup() {
size(900, 1000);
myPort = new Serial(this, Serial.list()[0], 9600); //ご自身のPC環境によってはSerial.list()[0]の数字を変える必要があります
myPort.bufferUntil('\n');
img = loadImage("musashi_science.png"); //ご自身の画像ファイル名を記載してください
minim = new Minim( this );
alert = minim.loadFile( "alert.mp3" ); //ご自身の音源ファイル名を記載してください
fill(0);
}
void draw() {
background(255);
image(img, 550, 420, 350, 600);
if (mag_value > 200) {
alert.play(0);
}
float progress = map(mag_value%400, 0, 400, 0, 1000);
delay(50);
fill((red + mag_value), 0, (blue - mag_value));
rect(350, 1000, 200, -progress);
text(origin_value, 50, 20);
text(analog_value, 50, 30);
text(mag_value, 50, 40);
}
void serialEvent(Serial myPort) {
String myString = myPort.readStringUntil('\n');
myString = trim(myString);
int sensors[] = int(split(myString, ','));
if (sensors.length > 1) {
origin_value = sensors[0];
analog_value = sensors[1];
mag_value = abs(origin_value - sensors[1])*10;
}
myPort.write("A");
}
void stop() {
alert.close();
minim.stop();
super.stop();
}
フリー音源サイト等で、お好みのアラート音をダウンロードしてください。
※音源や画像の設定方法はこちらをご確認ください。
キャロット
このページのHelloNoは、050010 です!