Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // hardware port definitions
- #include "SSBasicUtilities.h"
- #include "ASSP.h"
- #include "names.h"
- #define LED_RED 3
- #define LED_YELLOW 5
- #define LED_PINK 6
- #define LED_WHITE 9
- #define LED_GREEN 10
- #define LED_BLUE 11
- #define EMU A1
- #define SWITCH1 A4
- #define SWITCH2 A5
- #define POTENTIOMETER A0
- #define PORT1 1
- #define PORT2 2
- #define PORT3 3
- #define PORT4 4
- void setup()
- {
- // initialize the digital pins as outputs.
- pinMode(LED_RED, OUTPUT);
- pinMode(LED_YELLOW, OUTPUT);
- pinMode(LED_PINK, OUTPUT);
- pinMode(LED_WHITE, OUTPUT);
- pinMode(LED_GREEN, OUTPUT);
- pinMode(LED_BLUE, OUTPUT);
- // Open hardware serial communications and wait for port to open:
- Serial.begin(57600);
- Serial.println("Program Running.");
- // now setup the switches
- pinMode(SWITCH1, INPUT_PULLUP);
- pinMode(SWITCH2, INPUT_PULLUP);
- // now setup the POTENTIOMETER
- pinMode(POTENTIOMETER, INPUT);
- //puts the Nano into testing mode for any port
- SerialShield.setEmuMode(6);
- task2();
- }
- //Function to turn the LEDs on and off (boolean low and high)
- void setLeds(boolean state) {
- Serial.print("Set LEDS to ");
- Serial.println(state);
- digitalWrite(LED_PINK, state);
- digitalWrite(LED_WHITE, state);
- digitalWrite(LED_GREEN, state);
- digitalWrite(LED_BLUE, state);
- }
- //Function to make the LEDs blink on and off with a 200ms delay
- void blinkLeds() {
- delay(200); //slow things down by waiting 0.5s
- setLeds(HIGH);
- delay(200); //slow things down
- setLeds(LOW);
- }
- //Function to make the LEDs cycle from bottom to top of the Arduino with a 200ms delay (by pressing switch 2)
- void cycleLeds() {
- int sw2 = digitalRead(SWITCH2);
- if (sw2 == LOW) {
- setLeds(LOW);
- digitalWrite(LED_BLUE, HIGH);
- delay(200);
- digitalWrite(LED_BLUE, LOW);
- digitalWrite(LED_GREEN, HIGH);
- delay(200);
- digitalWrite(LED_GREEN, LOW);
- digitalWrite(LED_WHITE, HIGH);
- delay(200);
- digitalWrite(LED_WHITE, LOW);
- digitalWrite(LED_PINK, HIGH);
- delay(200);
- digitalWrite(LED_PINK, LOW);
- delay(200);;
- digitalWrite(LED_PINK, HIGH);
- delay(200);
- digitalWrite(LED_WHITE, HIGH);
- digitalWrite(LED_PINK, LOW);
- delay(200);
- digitalWrite(LED_GREEN, HIGH);
- digitalWrite(LED_WHITE, LOW);
- delay(200);
- digitalWrite(LED_BLUE, HIGH);
- digitalWrite(LED_GREEN, LOW);
- delay(200);
- }
- }
- //Function to print the current value of the potentiometer
- void valuePrint()
- {
- int value = analogRead(POTENTIOMETER);
- Serial.println("The potentiometer value is : ");
- Serial.print(value);
- }
- //Function to control the LEDs with the potentiometer
- void manualControl()
- {
- int v = analogRead(POTENTIOMETER);
- if (v < 256)
- {
- digitalWrite(LED_PINK, HIGH);
- digitalWrite(LED_WHITE, LOW);
- digitalWrite(LED_GREEN, LOW);
- digitalWrite(LED_BLUE, LOW);
- }
- else if (v > 768)
- {
- digitalWrite(LED_PINK, LOW);
- digitalWrite(LED_WHITE, LOW);
- digitalWrite(LED_GREEN, LOW);
- digitalWrite(LED_BLUE, HIGH);
- }
- else if ((v > 256) && (v < 512))
- {
- digitalWrite(LED_PINK, LOW);
- digitalWrite(LED_WHITE, HIGH);
- digitalWrite(LED_GREEN, LOW);
- digitalWrite(LED_BLUE, LOW);
- }
- else
- {
- digitalWrite(LED_PINK, LOW);
- digitalWrite(LED_WHITE, LOW);
- digitalWrite(LED_GREEN, HIGH);
- digitalWrite(LED_BLUE, LOW);
- }
- }
- //Function to make LEDs cycle with a 200ms delay (without pressing switch 2)
- void cycleLedsWS2() {
- setLeds(LOW);
- digitalWrite(LED_BLUE, HIGH);
- delay(200);
- digitalWrite(LED_BLUE, LOW);
- digitalWrite(LED_GREEN, HIGH);
- delay(200);
- digitalWrite(LED_GREEN, LOW);
- digitalWrite(LED_WHITE, HIGH);
- delay(200);
- digitalWrite(LED_WHITE, LOW);
- digitalWrite(LED_PINK, HIGH);
- delay(200);
- digitalWrite(LED_PINK, LOW);
- delay(200);;
- digitalWrite(LED_PINK, HIGH);
- delay(200);
- digitalWrite(LED_WHITE, HIGH);
- digitalWrite(LED_PINK, LOW);
- delay(200);
- digitalWrite(LED_GREEN, HIGH);
- digitalWrite(LED_WHITE, LOW);
- delay(200);
- digitalWrite(LED_BLUE, HIGH);
- digitalWrite(LED_GREEN, LOW);
- delay(200);
- digitalWrite(LED_BLUE, LOW);
- delay(200);
- }
- //Function to control LEDs using commands in the serial monitor
- void processMessageContent (char message[]) {
- if (strcmp(message, "cycle leds") == 0) {
- cycleLedsWS2();
- }
- if (strcmp(message, "blue on") == 0) {
- digitalWrite(LED_BLUE, HIGH);
- }
- if (strcmp(message, "green on") == 0) {
- digitalWrite(LED_GREEN, HIGH);
- }
- if (strcmp(message, "white on") == 0) {
- digitalWrite(LED_WHITE, HIGH);
- }
- if (strcmp(message, "pink on") == 0) {
- digitalWrite(LED_PINK, HIGH);
- }
- if (strcmp(message, "blue off") == 0) {
- digitalWrite(LED_BLUE, LOW);
- }
- if (strcmp(message, "green off") == 0) {
- digitalWrite(LED_GREEN, LOW);
- }
- if (strcmp(message, "white off") == 0) {
- digitalWrite(LED_WHITE, LOW);
- }
- if (strcmp(message, "pink off") == 0) {
- digitalWrite(LED_PINK, LOW);
- }
- if (strcmp(message, "blink leds") == 0) {
- blinkLeds();
- }
- }
- //Function to control which port is active using the potentiometer, and send and recieve messages using the ASSP
- void emuControl()
- {
- int v = analogRead(POTENTIOMETER);
- if (v < 256)
- {
- digitalWrite(LED_PINK, HIGH);
- digitalWrite(LED_WHITE, LOW);
- digitalWrite(LED_GREEN, LOW);
- digitalWrite(LED_BLUE, LOW);
- if (checkSerial()) {
- Serial.print("Send message: ");
- Serial.println(serialBuffer);
- SerialShield.setMessageContent(serialBuffer); // set up a message to send
- SerialShield.setMessageSender("xyz89");
- SerialShield.setMessageDestination("abc12");
- SerialShield.sendASSPMessage(1);
- }
- while (SerialShield.fetchASSPMessage()) {
- Serial.print("Received message: ");
- Serial.println(SerialShield.getMessageContent());
- processMessageContent(SerialShield.getMessageContent());
- Serial.print("Message destination: ");
- Serial.println(SerialShield.getMessageDestination());
- Serial.print("Message sender: ");
- Serial.println(SerialShield.getMessageSender());
- Serial.print("The message was recieved on port ");
- Serial.println(SerialShield.getMessagePort());
- }
- }
- else if (v > 768)
- {
- digitalWrite(LED_PINK, LOW);
- digitalWrite(LED_WHITE, LOW);
- digitalWrite(LED_GREEN, LOW);
- digitalWrite(LED_BLUE, HIGH);
- if (checkSerial()) {
- Serial.print("Send message: ");
- Serial.println(serialBuffer);
- SerialShield.setMessageContent(serialBuffer); // set up a message to send
- SerialShield.setMessageSender("xyz89");
- SerialShield.setMessageDestination("abc12");
- SerialShield.sendASSPMessage(4);
- }
- while (SerialShield.fetchASSPMessage()) {
- Serial.print("Received message: ");
- Serial.println(SerialShield.getMessageContent());
- processMessageContent(SerialShield.getMessageContent());
- Serial.print("Message destination: ");
- Serial.println(SerialShield.getMessageDestination());
- Serial.print("Message sender: ");
- Serial.println(SerialShield.getMessageSender());
- Serial.print("The message was recieved on port ");
- Serial.println(SerialShield.getMessagePort());
- }
- }
- else if ((v > 256) && (v < 512))
- {
- digitalWrite(LED_PINK, LOW);
- digitalWrite(LED_WHITE, HIGH);
- digitalWrite(LED_GREEN, LOW);
- digitalWrite(LED_BLUE, LOW);
- if (checkSerial()) {
- Serial.print("Send message: ");
- Serial.println(serialBuffer);
- SerialShield.setMessageContent(serialBuffer); // set up a message to send
- SerialShield.setMessageSender("xyz89");
- SerialShield.setMessageDestination("abc12");
- SerialShield.sendASSPMessage(2);
- }
- while (SerialShield.fetchASSPMessage()) {
- Serial.print("Received message: ");
- Serial.println(SerialShield.getMessageContent());
- processMessageContent(SerialShield.getMessageContent());
- Serial.print("Message destination: ");
- Serial.println(SerialShield.getMessageDestination());
- Serial.print("Message sender: ");
- Serial.println(SerialShield.getMessageSender());
- Serial.print("The message was recieved on port ");
- Serial.println(SerialShield.getMessagePort());
- }
- }
- else
- {
- digitalWrite(LED_PINK, LOW);
- digitalWrite(LED_WHITE, LOW);
- digitalWrite(LED_GREEN, HIGH);
- digitalWrite(LED_BLUE, LOW);
- if (checkSerial()) {
- Serial.print("Send message: ");
- Serial.println(serialBuffer);
- SerialShield.setMessageContent(serialBuffer); // set up a message to send
- SerialShield.setMessageSender("xyz89");
- SerialShield.setMessageDestination("abc12");
- SerialShield.sendASSPMessage(3);
- }
- while (SerialShield.fetchASSPMessage()) {
- Serial.print("Received message: ");
- Serial.println(SerialShield.getMessageContent());
- processMessageContent(SerialShield.getMessageContent());
- Serial.print("Message destination: ");
- Serial.println(SerialShield.getMessageDestination());
- Serial.print("Message sender: ");
- Serial.println(SerialShield.getMessageSender());
- Serial.print("The message was recieved on port ");
- Serial.println(SerialShield.getMessagePort());
- }
- }
- }
- boolean isDeviceOnPort(const char name[], int port) {
- SerialShield.setMessageContent("ping");
- SerialShield.setMessageSender("SENDER");
- SerialShield.setMessageDestination(name);
- do
- ;
- while (!SerialShield.sendASSPMessage(port));
- for (int i = 0; i < 50; i++) {
- if (SerialShield.fetchASSPMessage()) {
- return true;
- }
- }
- return false;
- }
- void task1() {
- Serial.println("Device PORT1");
- for (int i = 0; i < 29; i++) {
- bool idp = isDeviceOnPort(names[i], 4);
- Serial.print("is device ");
- Serial.print(names[i]);
- Serial.print(" on port ");
- Serial.print(4);
- Serial.print(" ");
- Serial.println(idp);
- if (idp == true) {
- Serial.print(names[i]);
- Serial.println(" YES");
- }
- else {
- Serial.print(names[i]);
- Serial.println(" NO");
- }
- }
- }
- unsigned long getTimeToDevice(const char name[],int port) {
- unsigned long currentMillis = millis();
- SerialShield.setMessageContent("message123");
- SerialShield.setMessageSender("SENDER");
- SerialShield.setMessageDestination(name);
- SerialShield.sendASSPMessage(port);
- unsigned long a = millis();
- return a-currentMillis;
- }
- void task2() {
- Serial.println("Device Port4Time");
- for (int i = 0; i < 29; i++) {
- bool idp = isDeviceOnPort(names[i], 4);
- Serial.print("is device ");
- Serial.print(names[i]);
- Serial.print(" on port ");
- Serial.print(4);
- Serial.print(" ");
- Serial.println(idp);
- if (idp == true) {
- Serial.print(names[i]);
- Serial.print(" ");
- Serial.println(getTimeToDevice(names[i], 4));
- }
- else {
- Serial.print(names[i]);
- Serial.println(" --(not connected)");
- }
- }
- }
- void loop() // run over and over
- {
- }
- //TESTCODE
- /*digitalWrite(LED_GREEN, HIGH);
- // check the state of a switch
- emuControl();
- int sw1 = digitalRead(SWITCH1);
- if (sw1 == LOW){
- Serial.println("Switch 1 pressed");
- setLeds(HIGH);
- }
- else{
- setLeds(LOW);
- }
- cycleLeds();
- blinkLeds();
- cycleLEDS ();
- manualControl();
- delay(100);*/
- /*if (checkSerial ()) {
- Serial.print("Send message: ");
- Serial.println(serialBuffer);
- SerialShield.setMessageContent(serialBuffer);
- SerialShield.sendASSPMessage(portControl);
- }
- while (SerialShield.fetchASSPMessage(portControl)) {
- Serial.print("Recieved message: ");
- Serial.println(SerialShield.getMessageContent());
- processMessageContent(SerialShield.getMessageContent());
- }*/
- /*int sw2 = digitalRead(SWITCH2);
- if (sw2 == LOW) {
- SerialShield.setMessageContent("?");
- SerialShield.sendASSPMessage(3);
- }
- delay(500); //slow things down by waiting 0.5s
- digitalWrite(LED_GREEN, LOW);
- Serial.println("loop again!");
- delay(500); //slow things down*/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement