- Pines 2 y 3 del NXT (Rojo y negro) (tierra) --> Arduino GND
- Pin 4 del NXT (alimentacion) (verde) --> Arduino 5V
- Pin 5 del NXT (Amarillo) (SCL) --> Arduino A5
- Pin 6 del NXT (Azul) (SDA) --> Arduino A4
La primera prueba consiste simplemente en solicitar datos (Tipo de sensor, versión e identificador) desde el robot a Arduino, y todo ha ido sin problemas. Voy a poner a continuación el código de ambas partes.
CÓDIGO ESCRITO EN LEJOS PARA EL MINDSTORM
import lejos.nxt.*;
import lejos.nxt.I2CPort;
import lejos.nxt.I2CSensor;
public class ArduCom {
public static void main(String[] args) throws Exception{
byte[] bufOut =new byte[10];
byte [] readData = new byte[10];
String Tipo = "";
String ID ="";
String Ver="";
for (int i=0;i<readData.length;i++){
readData[i] = 0;
bufOut[i] = 5;
}
I2CSensor Arduino = new I2CSensor(SensorPort.S1);
Arduino.setAddress(1);
Thread.sleep(500);
Ver = Arduino.getVersion();
System.out.println("Ver: "+Ver);
Thread.sleep(100);
Tipo = Arduino.getSensorType();
System.out.println("Tipo: "+Tipo);
Thread.sleep(100);
ID = Arduino.getProductID();
System.out.println("ID: "+ID);
Thread.sleep(10000);
}
}
CÓDIGO PARA ARDUINO
#include <Wire.h> //Para gestionar las comunicaciones
//Definiciones y variables globales
uint8_t SensorVersion[9] = " V0.1 ";
uint8_t SensorName[9] = "Arduino ";
uint8_t SensorType[9] = "Casero ";
byte rec;
void setup(){
Serial.begin(9600);
Wire.begin(1); //Nos unimos como esclavos con dir. 1
Wire.onRequest(requestEvent); //Rutinas para cuando llegue algo
Wire.onReceive(receiveEvent);
}
void loop(){
}
void receiveEvent(int len){ //Devuelve el nº de bytes recibidos
while (0 < Wire.available() ) {
rec = Wire.receive();
} //While
}
void requestEvent(){
if (rec == 0x00){ //Version del sensor
Wire.send(SensorVersion, 8);
} else if (rec == 0x08){ //Nombre del sensor
Wire.send(SensorName, 8);
} else if (rec == 0x10){ //Tipo del sensor
Wire.send(SensorType, 8);
} else {
Wire.send("Error de com");
}
}
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.