Skip to content

A PLAY EXPERIENCE MAKER'S WORK LOG FOR FUTURE SELF©2001 – 2023 Kyle Li 李肅綱 All Rights Reserved.

Fire Ball Jutsu

Posted on September 22, 2019October 22, 2025 by admin

This is a game controller that enables the player to blow fire into the virtual world. It started out as a study of an electronic sensor and the findings were satisfying. The response time between the player action and sensing speed is quick enough for me to turn it into a meaningful and embodied play experience.

I purchased two wind sensors from ModernDevice.com many years ago, finally inspired to do something with them.

Wind Sensor Rev. C:
https://moderndevice.com/product/wind-sensor/

The first thing that came to me is Sasuke’s Great Fire Ball Jutsu (
Gougakyu No Jyutsu 豪火球の術).

The setup is pretty straight forward with Arduino, all I needed to do to read the RV pin with the analogRead. The sensor is capable of picking up very subtle changes in air movement around it. It works really well with detecting breath as well. I hooked it up to a flamethrower in Unity3D. I linked the serial data to the startSize and startSpeed properties of the particleSystem. Fireball is coming!

I made a stand for it on Tinkercad, so I can mount it on to my Arduino box. I also made a tube-like windshield to go around the sensor. By doing so, I was able to eliminate air coming from other directions and boost the strength of the reading by up to 20.

/*

 Hardware Setup: 
 Wind Sensor Signals    Arduino
 GND                    GND
 +V                     5V
 RV                     A1

 Vibration
 Signal                 A3

 LED
 PIN                    6

*/

#define analogPinForRV 1  // change to pins you the analog pins are using
#define analogPinForPR 3
#define LEDPIN 6

const float zeroWindAdjustment = .2;  // negative numbers yield smaller wind speeds and vice versa.

int ANALOG1, ANALOG2; 

void setup() {
  // put your setup code here, to run once:
  // initialize serial communication at 9600 bits per second:
  Serial.begin(115200);
  Serial.println("start");

  pinMode(LEDPIN, OUTPUT);
  digitalWrite(LEDPIN, HIGH);
}

// the loop routine runs over and over again forever:
void loop() {

  ANALOG1 = analogRead(analogPinForRV);
  ANALOG2 = analogRead(analogPinForPR);

  // print out the value you read:
  Serial.print(ANALOG1);
  Serial.print('|');
  Serial.println(ANALOG2);
  delay(10);  // delay in between reads for stability
}

Posted in Experiements, games

Post navigation

Serial Communication Between Processing and Arduino
MEAS (Piezo) Sensor

Recent Posts

  • BMP – Rearrange Colormap
  • Reset Allow USB Debugging? Notification
  • 8-bit Notes
  • AT29C256 90PI
  • Super-Toys Last All Summer Long

Archives

Proudly powered by WordPress | Theme: MiniZen by Martin Stehle.