Bienvenidos nuevamente a otra bitacora del conocimiento, donde aprenderemos algo nuevo (que ya está en videotutorial en nuestro canal Escuela de Juegos).


Comunmente se suele enviar datos de Arduino a cualquier motor o intérprete, pero ¿qué tal si deseamos hacer la inversa?… en éste caso enviaremos un dato desde Unity, hacia Arduino. Lo que desees hacer específicamente va a depender de tu juego o proyecto, yo en mi caso para ejemplificar haré que al disparar en mi videojuego, se encienda una luz de led en mi Arduino. Así que vamos allá.


const int ledPin = 9;      // the pin that the LED is attached to


void setup() {

  // initialize the serial communication:

  Serial.begin(9600);

  // initialize the ledPin as an output:

  pinMode(ledPin, OUTPUT);

}


void loop() {

  byte brightness;


  // check if data has been sent from the computer:

  if (Serial.available()) {

    // read the most recent byte (which will be from 0 to 255):

    brightness = Serial.readString().toInt();

    // set the brightness of the LED:

    analogWrite(ledPin, brightness);

  }

}


El código de Arduino es bastante simple.


Efectuamos una conexión a nuestro led en el puerto digital número 9.


Luego creamos la variable brightness para poder «decodificar» si nuestro led va a tener brillo completo o si va a no tener (estar apagado). Ésto lo vamos a hacer con la lectura y post-transformación de int a byte, por lo tanto haremos una conversión del valor.


Por último enviamos ese dato al led. 


Todo genial hasta aquí, ahora necesitamos configurar todo en Unity.


using System.IO.Ports;


Preparamos la librería correspondiente para la comunicación serial.


SerialPort puerto = new SerialPort(«COM4», 9600);

 puerto.ReadTimeout = 40;

puerto.Open();

 

Declaramos el puerto, configuramos y abrimos. Ahora vamos a enviar el dato que deseamos, pero ésto debes hacerlo en la parte que tu desees en tu juego, así que no hay un lugar general.

 

if(puerto.IsOpen)

{

    puerto.WriteLine(«255»);

}

 

Como se observa, si la conexión está correcta, vamos a enviar por el puerto el string «255», el cual es la máxima intensidad de luz recordemos. Ésto va a ser interpretado por el Arduino, que lo transformará al dato pertinente para luego enviarlo al led como intensidad.