Integrare Arduino con Unity

30
Integrare Arduino con Unity Codemotion Tech Meetup 2015 Roma

Transcript of Integrare Arduino con Unity

Integrare Arduino con Unity

Codemotion Tech Meetup 2015 Roma

int pulsePin = 0;int blinkPin = 13;

volatile int BPM;volatile int Signal;volatile int IBI = 600;volatile boolean Pulse = false;volatile boolean QS = false;

void setup(){ Serial.begin(9600); pinMode(blinkPin, OUTPUT);

interruptSetup();}

void loop(){ if (QS == true) { Serial.println(BPM); QS = false; }

delay(20);}

using UnityEngine; using System.Collections; using System.Threading; using System.IO.Ports; using UnityEngine.UI;

public class DetectPulseRate : MonoBehaviour { public static SerialPort serialPort; public static string streamRead; public static int BPM;

public GameObject heartImg; public GameObject heartText;

void Start() {

OpenConnection(); }

public void OpenConnection() {

serialPort = new SerialPort("/dev/tty.usbmodem1421", 9600, Parity.None, 8, StopBits.One);

if(serialPort != null) {

if(serialPort.IsOpen) {

serialPort.Close(); Debug.Log ("Chiudo la porta, perché è già aperta"); } else { serialPort.Open(); serialPort.ReadTimeout = 100; Debug.Log("Porta aperta!"); } }

else {

if(serialPort.IsOpen) Debug.Log("La porta è già aperta"); }

}

void FixedUpdate() { if(serialPort.IsOpen && serialPort.BytesToRead > 0) { streamRead = serialPort.ReadLine(); BPM = int.Parse(streamRead);

heartImg.transform.localScale = new Vector3(0, 0, 1); }

Vector3 heartScale = new Vector3(BPM / 100.0f, BPM / 100.0f, 1);

heartText.GetComponent<Text>().text = "BPM " + BPM; heartImg.transform.localScale = Vector3.Lerp(heartImg.transform.localScale, heartScale, 0.1f);

serialPort.BaseStream.Flush(); }

void OnApplicationQuit() { // Chiudo la porta quando esco

if (serialPort != null) serialPort.Close(); } }

Demo

Grazie!Riferimenti:

• Mail: [email protected]

• Github: https://github.com/dreamquest

Materiale utilizzato:

• Pulse Sensor: http://pulsesensor.com/

• Github: https://github.com/WorldFamousElectronics