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.
0 Comentarios