スクーミーアートモーションプログラム⑨~磁力の変化を検知~

~磁力の変化で画面のアクションが変わる~

スクーミーボードの磁力値が変化すると画面のゲージが上下して、大きくなるほどゲージ色が赤になり、一定以上になると音がなります!

使用するセンサーと取付位置

右上:磁気センサー

スクーミーIDEのコード

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);
  }
}

アートモーションIDEのコード

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 です!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です