From 128a4d2ded4f366180c1b54e46c7db694facb4a1 Mon Sep 17 00:00:00 2001 From: mattmcw Date: Sat, 25 Nov 2023 20:05:52 -0500 Subject: [PATCH] Update mcopy_JKMM100_work to have McopySerial library --- app/data/cfg.json | 2 +- app/package-lock.json | 2 +- app/package.json | 2 +- data/cfg.json | 2 +- ino/mcopy_JKMM100_work/McopySerial.cpp | 74 +++++++++++++++ ino/mcopy_JKMM100_work/McopySerial.h | 89 +++++++++++++++++++ ino/mcopy_JKMM100_work/mcopy_JKMM100_work.ino | 5 +- package-lock.json | 4 +- package.json | 2 +- processing/mcopy/cfg.json | 2 +- scripts/ino.sh | 1 + 11 files changed, 175 insertions(+), 10 deletions(-) create mode 100644 ino/mcopy_JKMM100_work/McopySerial.cpp create mode 100644 ino/mcopy_JKMM100_work/McopySerial.h diff --git a/app/data/cfg.json b/app/data/cfg.json index c71ab83..aa9a025 100644 --- a/app/data/cfg.json +++ b/app/data/cfg.json @@ -1,5 +1,5 @@ { - "version": "1.8.74", + "version": "1.8.75", "ext_port": 1111, "profiles": { "mcopy": { diff --git a/app/package-lock.json b/app/package-lock.json index 56ce5d5..8bb25ba 100644 --- a/app/package-lock.json +++ b/app/package-lock.json @@ -1,6 +1,6 @@ { "name": "mcopy-app", - "version": "1.8.74", + "version": "1.8.75", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/app/package.json b/app/package.json index 9a35b19..ad4cee2 100644 --- a/app/package.json +++ b/app/package.json @@ -1,6 +1,6 @@ { "name": "mcopy-app", - "version": "1.8.74", + "version": "1.8.75", "description": "GUI for the mcopy small gauge film optical printer platform", "main": "main.js", "scripts": { diff --git a/data/cfg.json b/data/cfg.json index ec3fe4e..5106bb7 100644 --- a/data/cfg.json +++ b/data/cfg.json @@ -1,5 +1,5 @@ { - "version": "1.8.74", + "version": "1.8.75", "ext_port": 1111, "profiles": { "mcopy": { diff --git a/ino/mcopy_JKMM100_work/McopySerial.cpp b/ino/mcopy_JKMM100_work/McopySerial.cpp new file mode 100644 index 0000000..a9658fc --- /dev/null +++ b/ino/mcopy_JKMM100_work/McopySerial.cpp @@ -0,0 +1,74 @@ +/// mcopy Serial Library + +#include "McopySerial.h" + +McopySerial::McopySerial () {} + +void McopySerial::begin (char identity) { + id = identity; + Serial.begin(baud); + Serial.flush(); + Serial.setTimeout(serialDelay); +} + +char McopySerial::loop () { + if (Serial.available()) { + cmdChar = (char) Serial.read(); + _internal(); + } else { + cmdChar = 'z'; + } + return cmdChar; +} + +void McopySerial::_internal () { + if (cmdChar == DEBUG) { + debug(!debugOn); + } else if (cmdChar == CONNECT) { + _connect(); + } else if (cmdChar == MCOPY_IDENTIFIER) { + _identify(); + } +} + +void McopySerial::_connect () { + connected = true; + Serial.println(CONNECT); + log("connect()"); +} + +void McopySerial::_identify () { + identified = true; + Serial.println(id); + log("identify()"); +} + +void McopySerial::debug (bool state) { + debugOn = state; + log("debug()"); +} + +void McopySerial::confirm (char cmd) { + Serial.println(cmd); +} + +void McopySerial::log (String message) { + if (debugOn) { + Serial.println(message); + } +} + +String McopySerial::getString () { + while (Serial.available() == 0) { + //Wait for value string + } + return Serial.readString(); +} + +void McopySerial::sendString (String str) { + Serial.println(str); +} + +void McopySerial::print (String message) { + Serial.println(message); +} \ No newline at end of file diff --git a/ino/mcopy_JKMM100_work/McopySerial.h b/ino/mcopy_JKMM100_work/McopySerial.h new file mode 100644 index 0000000..8b9a80c --- /dev/null +++ b/ino/mcopy_JKMM100_work/McopySerial.h @@ -0,0 +1,89 @@ +#ifndef MCOPY_SERIAL +#define MCOPY_SERIAL + +#include + +class McopySerial { + + private: + + const uint16_t serialDelay = 5; + const uint16_t baud = 57600; + + volatile bool debugOn = false; + volatile char cmdChar = 'z'; + volatile char id; + + void _internal (); + void _connect (); + void _identify (); + + public: + + volatile bool connected = false; + volatile bool identified = false; + + /* CMD FLAGS */ + const char BLACK = 'b'; + const char CAMERA = 'c'; + const char CAMERA_BACKWARD = 'f'; + const char CAMERA_CAPPER_IDENTIFIER = '8'; + const char CAMERA_CAPPER_PROJECTOR_IDENTIFIER = '9'; + const char CAMERA_CAPPER_PROJECTORS_IDENTIFIER = '0'; + const char CAMERA_EXPOSURE = 'G'; + const char CAMERA_FORWARD = 'e'; + const char CAMERA_IDENTIFIER = 'k'; + const char CAMERA_PROJECTORS_IDENTIFIER = '5'; + const char CAMERA_SECOND = '3'; + const char CAMERA_SECOND_BACKWARD = '2'; + const char CAMERA_SECOND_FORWARD = '1'; + const char CAMERA_SECOND_IDENTIFIER = 'y'; + const char CAMERA_TIMED = 'n'; + const char CAMERAS = '4'; + const char CAMERAS_IDENTIFIER = 'a'; + const char CAMERAS_PROJECTOR_IDENTIFIER = '6'; + const char CAMERAS_PROJECTORS_IDENTIFIER = '7'; + const char CAPPER_IDENTIFIER = 'C'; + const char CAPPER_OFF = 'B'; + const char CAPPER_ON = 'A'; + const char CONNECT = 'i'; + const char DEBUG = 'd'; + const char ERROR = 'E'; + const char HOME = 'I'; + const char LIGHT = 'l'; + const char LIGHT_IDENTIFIER = 'o'; + const char MCOPY_IDENTIFIER = 'm'; + const char OFFSET = 'O'; + const char PROJECTOR = 'p'; + const char PROJECTOR_BACKWARD = 'h'; + const char PROJECTOR_CAMERA_IDENTIFIER = 's'; + const char PROJECTOR_CAMERA_LIGHT_IDENTIFIER = 'r'; + const char PROJECTOR_FORWARD = 'g'; + const char PROJECTOR_IDENTIFIER = 'j'; + const char PROJECTOR_LIGHT_IDENTIFIER = 'q'; + const char PROJECTOR_SECOND = 'w'; + const char PROJECTOR_SECOND_BACKWARD = 'v'; + const char PROJECTOR_SECOND_FORWARD = 'u'; + const char PROJECTOR_SECOND_IDENTIFIER = 't'; + const char PROJECTORS = 'x'; + const char PROJECTORS_IDENTIFIER = 'd'; + const char STATE = 'H'; + const char TAKEUP_BACKWARD = 'F'; + const char TAKEUP_FORWARD = 'D'; + /* END CMD FLAGS */ + + McopySerial(); + + void begin(char identity); + char loop(); + void confirm(char cmd); + String getString(); + void print(String message); + void sendString(String str); + + void debug (bool state); + void log (String message); + +}; + +#endif diff --git a/ino/mcopy_JKMM100_work/mcopy_JKMM100_work.ino b/ino/mcopy_JKMM100_work/mcopy_JKMM100_work.ino index a252145..9dc2812 100644 --- a/ino/mcopy_JKMM100_work/mcopy_JKMM100_work.ino +++ b/ino/mcopy_JKMM100_work/mcopy_JKMM100_work.ino @@ -51,6 +51,7 @@ const int PROJECTOR_FRAME = 600; const int PROJECTOR_MICROSWITCH_CLOSED = 0; const int PROJECTOR_MICROSWITCH_OPENED = 1; const int PROJECTOR_HALF_TIME = 450; +const int PROJECTOR_STOP_DELAY = 15; //PROJECTOR VARIABLES boolean proj_dir = true; @@ -135,11 +136,11 @@ void proj_stop () { if (digitalRead(PROJECTOR_MICROSWITCH) == PROJECTOR_MICROSWITCH_CLOSED) { if (proj_dir) { digitalWrite(PROJECTOR_BWD, HIGH); - delay(15); + delay(PROJECTOR_STOP_DELAY); digitalWrite(PROJECTOR_BWD, LOW); } else { digitalWrite(PROJECTOR_FWD, HIGH); - delay(15); + delay(PROJECTOR_STOP_DELAY); digitalWrite(PROJECTOR_FWD, LOW); } } diff --git a/package-lock.json b/package-lock.json index 70bfd0f..c5492c3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "mcopy", - "version": "1.8.74", + "version": "1.8.75", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "mcopy", - "version": "1.8.74", + "version": "1.8.75", "license": "MIT", "dependencies": { "arduino": "file:app/lib/arduino", diff --git a/package.json b/package.json index 96862f4..86529b7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mcopy", - "version": "1.8.74", + "version": "1.8.75", "description": "Small gauge film optical printer platform", "main": "build.js", "directories": { diff --git a/processing/mcopy/cfg.json b/processing/mcopy/cfg.json index c71ab83..aa9a025 100644 --- a/processing/mcopy/cfg.json +++ b/processing/mcopy/cfg.json @@ -1,5 +1,5 @@ { - "version": "1.8.74", + "version": "1.8.75", "ext_port": 1111, "profiles": { "mcopy": { diff --git a/scripts/ino.sh b/scripts/ino.sh index 1d1b0e7..6407858 100644 --- a/scripts/ino.sh +++ b/scripts/ino.sh @@ -21,6 +21,7 @@ SKETCHES=( mcopy_cam_canon_ble_nano mcopy_cam_relay mcopy_JKMM100 + mcopy_JKMM100_work components/mcopy_light mcopy_projector_firmware )