Lab_interaccio/2014/BROOMX/gate_room_eth/gate_room_eth.ino

200 lines
4.2 KiB
Arduino
Raw Normal View History

2025-02-25 21:29:42 +01:00
#include <SPI.h>
#include <Ethernet.h> // version IDE 0022
#include <Z_OSC.h>
#define debug 1
#define OLED1 2
#define OLED2 3
#define OLED3 4
#define OLED4 5
#define OLED5 6
#define OLED6 7
#define OLED7 8
byte myMac[] = {
0x90, 0xA2, 0xDA, 0x0D, 0x71, 0x12 };
//byte myIp[] = {
// 192, 168, 1, 41 };
byte myIp[] = {
200, 100, 50, 7 };
int serverPort = 9000;
byte destIp[] = {200, 100, 50, 2}; // TO SET ADDRESS IP COMPUTER
int destPort = 9997; // TO SET SENDING PORT
Z_OSCServer server;
Z_OSCMessage *rcvMes;
Z_OSCClient client;
Z_OSCMessage message;
void setup(){
pinMode(OLED1, OUTPUT);
pinMode(OLED2, OUTPUT);
pinMode(OLED3, OUTPUT);
pinMode(OLED4, OUTPUT);
pinMode(OLED5, OUTPUT);
pinMode(OLED6, OUTPUT);
pinMode(OLED7, OUTPUT);
digitalWrite(OLED1,LOW); //disable device
digitalWrite(OLED2,LOW); //disable device
digitalWrite(OLED3,LOW); //disable device
digitalWrite(OLED4,LOW); //disable device
digitalWrite(OLED5,LOW); //disable device
digitalWrite(OLED6,LOW); //disable device
digitalWrite(OLED7,LOW); //disable device
Serial.begin(115200);
Ethernet.begin(myMac ,myIp);
//Ethernet.begin(myMac); //DHCP
server.sockOpen(serverPort);
Serial.println("Welcome, OLED controller Ready!");
}
void loop(){
if(server.available()){
rcvMes=server.getMessage();
//logMessage();
cmdProcess();
}
}
void cmdProcess()
{
uint32_t intValue;
if( !strcmp( rcvMes->getZ_OSCAddress() , "/left" ) )
{
intValue = rcvMes->getInteger32(0);
Serial.print("OLED left: ");
Serial.println(intValue);
if(intValue)
digitalWrite(OLED1, HIGH);
else
digitalWrite(OLED1, LOW);
}
else if( !strcmp( rcvMes->getZ_OSCAddress() , "/right" ) )
{
intValue = rcvMes->getInteger32(0);
Serial.print("OLED right: ");
Serial.println(intValue);
if(intValue)
digitalWrite(OLED2, HIGH);
else
digitalWrite(OLED2, LOW);
}
else if( !strcmp( rcvMes->getZ_OSCAddress() , "/led1" ) )
{
intValue = rcvMes->getInteger32(0);
Serial.print("OLED 1: ");
Serial.println(intValue);
if(intValue)
digitalWrite(OLED3, HIGH);
else
digitalWrite(OLED3, LOW);
}
else if( !strcmp( rcvMes->getZ_OSCAddress() , "/led2" ) )
{
intValue = rcvMes->getInteger32(0);
Serial.print("OLED 2: ");
Serial.println(intValue);
if(intValue)
digitalWrite(OLED4, HIGH);
else
digitalWrite(OLED4, LOW);
}
else if( !strcmp( rcvMes->getZ_OSCAddress() , "/led3" ) )
{
intValue = rcvMes->getInteger32(0);
Serial.print("OLED 3: ");
Serial.println(intValue);
if(intValue)
digitalWrite(OLED5, HIGH);
else
digitalWrite(OLED5, LOW);
}
else if( !strcmp( rcvMes->getZ_OSCAddress() , "/led4" ) )
{
intValue = rcvMes->getInteger32(0);
Serial.print("OLED 4: ");
Serial.println(intValue);
if(intValue)
digitalWrite(OLED6, HIGH);
else
digitalWrite(OLED6, LOW);
}
}
void logMessage(){
uint16_t i;
byte *ip=rcvMes->getIpAddress();
long int intValue;
float floatValue;
char *stringValue;
Serial.print(ip[0],DEC);
Serial.print(".");
Serial.print(ip[1],DEC);
Serial.print(".");
Serial.print(ip[2],DEC);
Serial.print(".");
Serial.print(ip[3],DEC);
Serial.print(":");
Serial.print(rcvMes->getPortNumber());
Serial.print(" ");
Serial.print(rcvMes->getZ_OSCAddress());
Serial.print(" ");
Serial.print(rcvMes->getTypeTags());
Serial.print("--");
for(i=0 ; i<rcvMes->getArgsNum(); i++){
switch( rcvMes->getTypeTag(i) ){
case 'i':
intValue = rcvMes->getInteger32(i);
Serial.print(intValue);
Serial.print(" ");
break;
case 'f':
floatValue = rcvMes->getFloat(i);
Serial.print(floatValue);
Serial.print(" ");
break;
case 's':
stringValue = rcvMes->getString(i);
Serial.print(stringValue);
Serial.print(" ");
break;
}
}
Serial.println("");
}