Processing × スクーミー ⑨~磁力の変化を検知~【Python】

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

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

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

左上:磁気センサー

スクーミーIDEのコード

int originMagValue = 0;

void setup() {
  Serial.begin(9600);
  pinMode(A5, INPUT);
  originMagValue = analogRead(A5);
}

void loop() {
  int analogValue = analogRead(A5);

  byte origin_highByte = (originMagValue >> 8) & 0xFF;
  byte origin_lowByte = originMagValue & 0xFF;
  byte analog_highByte = (analogValue >> 8) & 0xFF;
  byte analog_lowByte = analogValue & 0xFF;

  Serial.write(origin_highByte);
  Serial.write(origin_lowByte);
  Serial.write(analog_highByte);
  Serial.write(analog_lowByte);
}

ProcessingIDEのコード

add_library('serial')
add_library('minim')

myPort = None
available_serialport = 2
arduinoPort = Serial.list()[available_serialport]
sensingValue = 0
originValue = 0
magValue = 0
red = 0
blue = 255
img_file = "musashi_science.png"
sound_file = "sound.mp3"

def setup():
    global myPort, img, sound, sensingValue
    size(900, 1000)
    myPort = Serial(this, arduinoPort, 9600)
    myPort.buffer(1024)
    img = loadImage(img_file)
    minim = Minim(this)
    sound = minim.loadFile(sound_file)
    fill(0)

def draw():
    background(255)
    image(img, 550, 420, 350, 600)
    progress = map(magValue%400, 0, 400, 0, 1000)
    delay(50)
    fill((red + magValue), 0, (blue - magValue))
    rect(350, 1000, 200, -progress)
    text(originValue, 50, 20)
    text(sensingValue, 50, 30)
    text(magValue, 50, 40)

def serialEvent(myPort):
    global originValue, sensingValue, magValue
    if myPort.available() >= 4:
        origin_highByte = myPort.read()
        origin_lowByte = myPort.read()
        analog_highByte = myPort.read()
        analog_lowByte = myPort.read()
        
        originValue = (origin_highByte << 8) | origin_lowByte
        sensingValue = (analog_highByte << 8) | analog_lowByte
        magValue = abs(originValue - sensingValue)*10
        
        if magValue >= 200:
            if not sound.isPlaying():
                sound.play(0)
        else:
            if sound.isPlaying():
                sound.pause()         

使用音源について

フリー音源サイト等で、お好みのアラート音をダウンロードしてください。

※音源や画像の設定方法はこちらをご確認ください。

キャロット
キャロット

このページのHelloNoは、050020 です!

コメントを残す

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