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

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

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.