200 lines
4.2 KiB
C++
200 lines
4.2 KiB
C++
#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("");
|
|
}
|