commit ddb24de04ab1c880210a3203119657bc24bcc97f Author: NilsGrunwald Date: Tue Dec 14 18:34:54 2021 +0100 initial checkin diff --git a/UARTBridge3dDrucker.ino b/UARTBridge3dDrucker.ino new file mode 100644 index 0000000..19a2af6 --- /dev/null +++ b/UARTBridge3dDrucker.ino @@ -0,0 +1,178 @@ +/* + Blink + + Turns an LED on for one second, then off for one second, repeatedly. + + Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO + it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set to + the correct LED pin independent of which board is used. + If you want to know what pin the on-board LED is connected to on your Arduino + model, check the Technical Specs of your board at: + https://www.arduino.cc/en/Main/Products + + modified 8 May 2014 + by Scott Fitzgerald + modified 2 Sep 2016 + by Arturo Guadalupi + modified 8 Sep 2016 + by Colby Newman + + This example code is in the public domain. + + http://www.arduino.cc/en/Tutorial/Blink +*/ + +#define RELAY1 2 +#define RELAY2 3 +#define RELAY3 4 +#define RELAY4 5 +unsigned int relay[4] = { RELAY1, RELAY2, RELAY3, RELAY4 }; + +#define BUTTON1 6 +#define BUTTON2 7 +#define BUTTON3 8 +#define BUTTON4 9 +unsigned int button[4] = { BUTTON1, BUTTON2, BUTTON3, BUTTON4 }; + +#define OPTO1 10 + + +boolean relayState[4]; +boolean buttonState[4]; +boolean buttonLastState[4]; +boolean buttonPressed[4]; +boolean optoState; + + + +String inString; + +// the setup function runs once when you press reset or power the board +void setup() { + // initialize digital pin LED_BUILTIN as an output. + pinMode(LED_BUILTIN, OUTPUT); + + pinMode(RELAY1, OUTPUT); + pinMode(RELAY2, OUTPUT); + pinMode(RELAY3, OUTPUT); + pinMode(RELAY4, OUTPUT); + + pinMode(OPTO1, OUTPUT); + + pinMode(BUTTON1, INPUT_PULLUP); + pinMode(BUTTON2, INPUT_PULLUP); + pinMode(BUTTON3, INPUT_PULLUP); + pinMode(BUTTON4, INPUT_PULLUP); + + digitalWrite(RELAY1, HIGH); + digitalWrite(RELAY2, HIGH); + digitalWrite(RELAY3, HIGH); + digitalWrite(RELAY4, HIGH); + + digitalWrite(OPTO1, LOW); + + Serial.begin(9600); + while (!Serial) { + ; // wait for serial port to connect. Needed for native USB port only + } + + + optoState = false; + for (int i=0;i<4;i++){ + buttonState[i] = digitalRead(button[i]); + buttonLastState[i] = buttonState[i]; + + relayState[i] = false; + } +} + +// the loop function runs over and over again forever +void loop() { + + + for (int i=0;i<4;i++){ + + //generate the button states... + //Button i press + buttonState[i] = digitalRead(button[i]); + if ((buttonState[i] != buttonLastState[i]) && (buttonState[i] == LOW)){ + buttonPressed[i] = true; + } else { + buttonPressed[i] = false; + } + buttonLastState[i] = buttonState[i]; + + //invert relay if button i is pressed: + + if (buttonPressed[i]){ + if (relayState[i] == false){ + Serial.print("Command executed: RELAY");Serial.print(i+1);Serial.println("=ON"); + digitalWrite(relay[i], LOW); + relayState[i] = true; + } else { + Serial.print("Command executed: RELAY");Serial.print(i+1);Serial.println("=OFF"); + digitalWrite(relay[i], HIGH); + relayState[i] = false; + } + delay(250); + } + } + + + + + //check for new command... + if (Serial.available() > 0) { + // get incoming byte: + inString = Serial.readString(); + Serial.print("Command executed: "); + Serial.print(inString); + + if (inString.indexOf("LED=ON") >= 0){ + digitalWrite(LED_BUILTIN, HIGH); + } else + if (inString.indexOf("LED=OFF") >= 0){ + digitalWrite(LED_BUILTIN, LOW); + } else + if (inString.indexOf("RELAY1=ON") >= 0){ + digitalWrite(RELAY1, LOW); + relayState[0] = true; + } else + if (inString.indexOf("RELAY1=OFF") >= 0){ + digitalWrite(RELAY1, HIGH); + relayState[0] = false; + } else + if (inString.indexOf("RELAY2=ON") >= 0){ + digitalWrite(RELAY2, LOW); + relayState[1] = true; + } else + if (inString.indexOf("RELAY2=OFF") >= 0){ + digitalWrite(RELAY2, HIGH); + relayState[1] = false; + } else + if (inString.indexOf("RELAY3=ON") >= 0){ + digitalWrite(RELAY3, LOW); + relayState[2] = true; + } else + if (inString.indexOf("RELAY3=OFF") >= 0){ + digitalWrite(RELAY3, HIGH); + relayState[2] = false; + } else + if (inString.indexOf("RELAY4=ON") >= 0){ + digitalWrite(RELAY4, LOW); + relayState[3] = true; + } else + if (inString.indexOf("RELAY4=OFF") >= 0){ + digitalWrite(RELAY4, HIGH); + relayState[3] = false; + } else + if (inString.indexOf("OPTO1=ON") >= 0){ + digitalWrite(OPTO1, HIGH); + optoState = true; + } else + if (inString.indexOf("OPTO1=OFF") >= 0){ + digitalWrite(OPTO1, LOW); + optoState = false; + } + } +}