From 1ebf27ec37079a0e59c530eedbd0a5451884f8c0 Mon Sep 17 00:00:00 2001 From: James Wood Date: Tue, 15 Sep 2020 21:05:05 +1000 Subject: [PATCH] plop --- .gitignore | 6 ++ .vscode/extensions.json | 7 ++ HID-Gamepad-USB.ino | 43 --------- README.md | 6 ++ boards/HoodLoader2atmega16u2.json | 40 ++++++++ lib/EasyTransfer/EasyTransfer.cpp | 87 +++++++++++++++++ lib/EasyTransfer/EasyTransfer.h | 63 +++++++++++++ lib/EasyTransfer/I2C_Wiring.png | Bin 0 -> 44906 bytes lib/EasyTransfer/README.txt | 61 ++++++++++++ lib/EasyTransfer/UARTS_Wiring.png | Bin 0 -> 44889 bytes .../EasyTransfer_2Way_wPot_Example.pde | 84 +++++++++++++++++ .../EasyTransfer_2Way_wServo_Example.pde | 89 ++++++++++++++++++ .../EasyTransfer_RX_Example.pde | 40 ++++++++ .../EasyTransfer_TX_Example.pde | 43 +++++++++ lib/EasyTransfer/keywords.txt | 22 +++++ platformio.ini | 17 ++++ src | 1 + 17 files changed, 566 insertions(+), 43 deletions(-) create mode 100644 .gitignore create mode 100644 .vscode/extensions.json delete mode 100644 HID-Gamepad-USB.ino create mode 100644 boards/HoodLoader2atmega16u2.json create mode 100644 lib/EasyTransfer/EasyTransfer.cpp create mode 100644 lib/EasyTransfer/EasyTransfer.h create mode 100644 lib/EasyTransfer/I2C_Wiring.png create mode 100644 lib/EasyTransfer/README.txt create mode 100644 lib/EasyTransfer/UARTS_Wiring.png create mode 100644 lib/EasyTransfer/examples/EasyTransfer_2Way_wPot_Example/EasyTransfer_2Way_wPot_Example.pde create mode 100644 lib/EasyTransfer/examples/EasyTransfer_2Way_wServo_Example/EasyTransfer_2Way_wServo_Example.pde create mode 100644 lib/EasyTransfer/examples/EasyTransfer_RX_Example/EasyTransfer_RX_Example.pde create mode 100644 lib/EasyTransfer/examples/EasyTransfer_TX_Example/EasyTransfer_TX_Example.pde create mode 100644 lib/EasyTransfer/keywords.txt create mode 100644 platformio.ini create mode 160000 src diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..cb94ba1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +.DS_Store +.pio +.vscode/.browse.c_cpp.db* +.vscode/c_cpp_properties.json +.vscode/launch.json +.vscode/ipch diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..0f0d740 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,7 @@ +{ + // See http://go.microsoft.com/fwlink/?LinkId=827846 + // for the documentation about the extensions.json format + "recommendations": [ + "platformio.platformio-ide" + ] +} diff --git a/HID-Gamepad-USB.ino b/HID-Gamepad-USB.ino deleted file mode 100644 index 9a58597..0000000 --- a/HID-Gamepad-USB.ino +++ /dev/null @@ -1,43 +0,0 @@ -#include "HID-Project.h" -#include -EasyTransfer ET; -int numberOfButtons = 32; - -struct RECEIVE_DATA_STRUCTURE{ - //THIS MUST BE EXACTLY THE SAME ON THE OTHER ARDUINO - int16_t joyx; - int16_t joyy; - int8_t joyz; - int16_t joyxr; - int16_t joyyr; - int8_t joyzr; - uint32_t buttonState; -}; - -RECEIVE_DATA_STRUCTURE controllerState; - -void setup() { - Gamepad.begin(); - Serial1.begin(2000000); - ET.begin(details(controllerState), &Serial1); - Gamepad.releaseAll(); -} - -void loop() { - if(ET.receiveData()){ - Gamepad.xAxis(controllerState.joyx); - Gamepad.yAxis(controllerState.joyy); - Gamepad.zAxis(controllerState.joyz); - Gamepad.rxAxis(controllerState.joyxr); - Gamepad.ryAxis(controllerState.joyyr); - Gamepad.rzAxis(controllerState.joyzr); - for (int i=0; iwrite(0x06); + _stream->write(0x85); + _stream->write(size); + for(int i = 0; iwrite(*(address+i)); + } + _stream->write(CS); + +} + +boolean EasyTransfer::receiveData(){ + + //start off by looking for the header bytes. If they were already found in a previous call, skip it. + if(rx_len == 0){ + //this size check may be redundant due to the size check below, but for now I'll leave it the way it is. + if(_stream->available() >= 3){ + //this will block until a 0x06 is found or buffer size becomes less then 3. + while(_stream->read() != 0x06) { + //This will trash any preamble junk in the serial buffer + //but we need to make sure there is enough in the buffer to process while we trash the rest + //if the buffer becomes too empty, we will escape and try again on the next call + if(_stream->available() < 3) + return false; + } + if (_stream->read() == 0x85){ + rx_len = _stream->read(); + //make sure the binary structs on both Arduinos are the same size. + if(rx_len != size){ + rx_len = 0; + return false; + } + } + } + } + + //we get here if we already found the header bytes, the struct size matched what we know, and now we are byte aligned. + if(rx_len != 0){ + while(_stream->available() && rx_array_inx <= rx_len){ + rx_buffer[rx_array_inx++] = _stream->read(); + } + + if(rx_len == (rx_array_inx-1)){ + //seem to have got whole message + //last uint8_t is CS + calc_CS = rx_len; + for (int i = 0; i +* +*This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License. +*To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/ or +*send a letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA. +******************************************************************/ +#ifndef EasyTransfer_h +#define EasyTransfer_h + + +//make it a little prettier on the front end. +#define details(name) (byte*)&name,sizeof(name) + +//Not neccessary, but just in case. +#if ARDUINO > 22 +#include "Arduino.h" +#else +#include "WProgram.h" +#endif +#include "Stream.h" +//#include +//#include +//#include +//#include +//#include + +class EasyTransfer { +public: +void begin(uint8_t *, uint8_t, Stream *theStream); +//void begin(uint8_t *, uint8_t, NewSoftSerial *theSerial); +void sendData(); +boolean receiveData(); +private: +Stream *_stream; +//NewSoftSerial *_serial; +uint8_t * address; //address of struct +uint8_t size; //size of struct +uint8_t * rx_buffer; //address for temporary storage and parsing buffer +uint8_t rx_array_inx; //index for RX parsing buffer +uint8_t rx_len; //RX packet length according to the packet +uint8_t calc_CS; //calculated Chacksum +}; + + + +#endif diff --git a/lib/EasyTransfer/I2C_Wiring.png b/lib/EasyTransfer/I2C_Wiring.png new file mode 100644 index 0000000000000000000000000000000000000000..4c15cd736d3ed5443768179aa453d63e40c84c18 GIT binary patch literal 44906 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 m8!O2GDg9&xL}~;3{y>zu4ArR)r)NR|e$ +* +*This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License. +*To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/ or +*send a letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA. +******************************************************************/ + + +********************To Install************************************* + +To install, unzip and place 'EasyTransfer' folder into your 'C:\Users\{user name}\Documents\Arduino\libraries' folder or '{Arduino IDE path}\hardware\libraries" or {Arduino IDE path}\libraries" directory. + +Restart the Arduino IDE, look for the Library under "Sketch" -> "Import Library". You can also try the examples by finding them +under "File" -> "Examples" -> "EasyTransfer". + +All uses of the library are in the example sketchs. + + +******************************************************************* + + +Library now has two versions, one for regular hardware Serial, one for use with the NewSoftSerial library +making any Arduino pin capable of transfering data back and forth easily. + +See the examples to find out how to use the library. \ No newline at end of file diff --git a/lib/EasyTransfer/UARTS_Wiring.png b/lib/EasyTransfer/UARTS_Wiring.png new file mode 100644 index 0000000000000000000000000000000000000000..48ba613a928ec1aa0b7f02093d56810078ae53c6 GIT binary patch literal 44889 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
@3@c~ZpF*CstMCQeZpME#4&M54U0;P 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 U6~Ll#LBO9fL__|QoJIKm0kF@_5&!@I literal 0 HcmV?d00001 diff --git a/lib/EasyTransfer/examples/EasyTransfer_2Way_wPot_Example/EasyTransfer_2Way_wPot_Example.pde b/lib/EasyTransfer/examples/EasyTransfer_2Way_wPot_Example/EasyTransfer_2Way_wPot_Example.pde new file mode 100644 index 0000000..8b36ddc --- /dev/null +++ b/lib/EasyTransfer/examples/EasyTransfer_2Way_wPot_Example/EasyTransfer_2Way_wPot_Example.pde @@ -0,0 +1,84 @@ +/*This is an example of the EasyTransfer Library 2way communications. + +The sketch is for the Arduino with a potentiometer attached to analog pin 0. + +This other Arduino has the servo attached to pin 9. +Both have a putton attached to pin 12 and output a status using the LED on pin 13. + +The idea is each arduino will read the status of the button attached to it, and send it +to the other Arduino, which will toggle it's LED based on the others button. The button +should connect pin 12 to ground when pushed. + +And the Arduino with the potentiometer will send it's value to the one with the servo. +The servo will move to the position based on the potentiometer. +*/ + + + +#include + +//create two objects +EasyTransfer ETin, ETout; + + +struct RECEIVE_DATA_STRUCTURE{ + //put your variable definitions here for the data you want to receive + //THIS MUST BE EXACTLY THE SAME ON THE OTHER ARDUINO + int16_t buttonstate; +}; + +struct SEND_DATA_STRUCTURE{ + //put your variable definitions here for the data you want to receive + //THIS MUST BE EXACTLY THE SAME ON THE OTHER ARDUINO + int16_t buttonstate; + int16_t servoval; +}; + +//give a name to the group of data +RECEIVE_DATA_STRUCTURE rxdata; +SEND_DATA_STRUCTURE txdata; + + +void setup(){ + Serial.begin(9600); + //start the library, pass in the data details and the name of the serial port. Can be Serial, Serial1, Serial2, etc. + ETin.begin(details(rxdata), &Serial); + ETout.begin(details(txdata), &Serial); + + pinMode(13, OUTPUT); + //enable pull-up + pinMode(12, INPUT_PULLUP); + +} + +void loop(){ + + //first, lets read our potentiometer and button and store it in our data structure + txdata.servoval = analogRead(0); + + if(!digitalRead(12)) + txdata.buttonstate = HIGH; + else + txdata.buttonstate = LOW; + + //then we will go ahead and send that data out + ETout.sendData(); + + //there's a loop here so that we run the recieve function more often then the + //transmit function. This is important due to the slight differences in + //the clock speed of different Arduinos. If we didn't do this, messages + //would build up in the buffer and appear to cause a delay. + for(int i=0; i<5; i++){ + //remember, you could use an if() here to check for new data, this time it's not needed. + ETin.receiveData(); + + //set our LED on or off based on what we received from the other Arduino + digitalWrite(13, rxdata.buttonstate); + + //delay + delay(10); + } + + //delay for good measure + delay(10); +} diff --git a/lib/EasyTransfer/examples/EasyTransfer_2Way_wServo_Example/EasyTransfer_2Way_wServo_Example.pde b/lib/EasyTransfer/examples/EasyTransfer_2Way_wServo_Example/EasyTransfer_2Way_wServo_Example.pde new file mode 100644 index 0000000..832ac6b --- /dev/null +++ b/lib/EasyTransfer/examples/EasyTransfer_2Way_wServo_Example/EasyTransfer_2Way_wServo_Example.pde @@ -0,0 +1,89 @@ +/*This is an example of the EasyTransfer Library 2way communications. + +This sketch is for the Arduino with the servo attached to pin 9. + +The other Arduino has a potentiometer attached to analog pin 0. +Both have a putton attached to pin 12 and output a status using the LED on pin 13. + +The idea is each arduino will read the status of the button attached to it, and send it +to the other Arduino, which will toggle it's LED based on the others button. The button +should connect pin 12 to ground when pushed. + +And the Arduino with the potentiometer will send it's value to the one with the servo. +The servo will move to the position based on the potentiometer. +*/ + +#include +#include + +//create two objects +EasyTransfer ETin, ETout; +//create servo +Servo myservo; + +struct RECEIVE_DATA_STRUCTURE{ + //put your variable definitions here for the data you want to receive + //THIS MUST BE EXACTLY THE SAME ON THE OTHER ARDUINO + int16_t buttonstate; + int16_t servoval; +}; + +struct SEND_DATA_STRUCTURE{ + //put your variable definitions here for the data you want to receive + //THIS MUST BE EXACTLY THE SAME ON THE OTHER ARDUINO + int16_t buttonstate; +}; + + +//give a name to the group of data +RECEIVE_DATA_STRUCTURE rxdata; +SEND_DATA_STRUCTURE txdata; + + +void setup(){ + Serial.begin(9600); + //start the library, pass in the data details and the name of the serial port. Can be Serial, Serial1, Serial2, etc. + ETin.begin(details(rxdata), &Serial); + ETout.begin(details(txdata), &Serial); + + pinMode(13, OUTPUT); + //enable pull-up + pinMode(12, INPUT_PULLUP); + + myservo.attach(9); +} + +void loop(){ + + //first, lets read our button and store it in our data structure + if(!digitalRead(12)) + txdata.buttonstate = HIGH; + else + txdata.buttonstate = LOW; + + //then we will go ahead and send that data out + ETout.sendData(); + + //there's a loop here so that we run the recieve function more often then the + //transmit function. This is important due to the slight differences in + //the clock speed of different Arduinos. If we didn't do this, messages + //would build up in the buffer and appear to cause a delay. + + for(int i=0; i<5; i++){ + //remember, you could use an if() here to check for new data, this time it's not needed. + ETin.receiveData(); + + //set our LED on or off based on what we received from the other Arduino + digitalWrite(13, rxdata.buttonstate); + + //set our servo position based on what we received from the other Arduino + //we will also map the ADC value to a servo value + myservo.write(map(rxdata.servoval, 0, 1023, 0, 179)); + + //delay + delay(10); + } + + //delay for good measure + delay(10); +} diff --git a/lib/EasyTransfer/examples/EasyTransfer_RX_Example/EasyTransfer_RX_Example.pde b/lib/EasyTransfer/examples/EasyTransfer_RX_Example/EasyTransfer_RX_Example.pde new file mode 100644 index 0000000..0a25b87 --- /dev/null +++ b/lib/EasyTransfer/examples/EasyTransfer_RX_Example/EasyTransfer_RX_Example.pde @@ -0,0 +1,40 @@ +#include + +//create object +EasyTransfer ET; + +struct RECEIVE_DATA_STRUCTURE{ + //put your variable definitions here for the data you want to receive + //THIS MUST BE EXACTLY THE SAME ON THE OTHER ARDUINO + int16_t blinks; + int16_t pause; +}; + +//give a name to the group of data +RECEIVE_DATA_STRUCTURE mydata; + +void setup(){ + Serial.begin(9600); + //start the library, pass in the data details and the name of the serial port. Can be Serial, Serial1, Serial2, etc. + ET.begin(details(mydata), &Serial); + + pinMode(13, OUTPUT); + +} + +void loop(){ + //check and see if a data packet has come in. + if(ET.receiveData()){ + //this is how you access the variables. [name of the group].[variable name] + //since we have data, we will blink it out. + for(int i = mydata.blinks; i>0; i--){ + digitalWrite(13, HIGH); + delay(mydata.pause * 100); + digitalWrite(13, LOW); + delay(mydata.pause * 100); + } + } + + //you should make this delay shorter then your transmit delay or else messages could be lost + delay(250); +} diff --git a/lib/EasyTransfer/examples/EasyTransfer_TX_Example/EasyTransfer_TX_Example.pde b/lib/EasyTransfer/examples/EasyTransfer_TX_Example/EasyTransfer_TX_Example.pde new file mode 100644 index 0000000..8221cb2 --- /dev/null +++ b/lib/EasyTransfer/examples/EasyTransfer_TX_Example/EasyTransfer_TX_Example.pde @@ -0,0 +1,43 @@ +#include + +//create object +EasyTransfer ET; + +struct SEND_DATA_STRUCTURE{ + //put your variable definitions here for the data you want to send + //THIS MUST BE EXACTLY THE SAME ON THE OTHER ARDUINO + int16_t blinks; + int16_t pause; +}; + +//give a name to the group of data +SEND_DATA_STRUCTURE mydata; + +void setup(){ + Serial.begin(9600); + //start the library, pass in the data details and the name of the serial port. Can be Serial, Serial1, Serial2, etc. + ET.begin(details(mydata), &Serial); + + pinMode(13, OUTPUT); + + randomSeed(analogRead(0)); + +} + +void loop(){ + //this is how you access the variables. [name of the group].[variable name] + mydata.blinks = random(5); + mydata.pause = random(5); + //send the data + ET.sendData(); + + //Just for fun, we will blink it out too + for(int i = mydata.blinks; i>0; i--){ + digitalWrite(13, HIGH); + delay(mydata.pause * 100); + digitalWrite(13, LOW); + delay(mydata.pause * 100); + } + + delay(5000); +} diff --git a/lib/EasyTransfer/keywords.txt b/lib/EasyTransfer/keywords.txt new file mode 100644 index 0000000..d394efa --- /dev/null +++ b/lib/EasyTransfer/keywords.txt @@ -0,0 +1,22 @@ +####################################### +# Syntax Coloring Map EasyTransfer +####################################### + +####################################### +# Datatypes (KEYWORD1) +####################################### + +EasyTransfer KEYWORD1 + +####################################### +# Methods and Functions (KEYWORD2) +####################################### +sendData KEYWORD2 +receiveData KEYWORD2 +begin KEYWORD2 + + +####################################### +# Constants (LITERAL1) +####################################### +details LITERAL1 diff --git a/platformio.ini b/platformio.ini new file mode 100644 index 0000000..db7c437 --- /dev/null +++ b/platformio.ini @@ -0,0 +1,17 @@ +; PlatformIO Project Configuration File +; +; Build options: build flags, source filter +; Upload options: custom upload port, speed and extra flags +; Library options: dependencies, extra library storages +; Advanced options: extra scripting +; +; Please visit documentation for the other options and examples +; https://docs.platformio.org/page/projectconf.html + +[env:HoodLoader2atmega16u2] +platform = atmelavr +framework = arduino +board = HoodLoader2atmega16u2 +lib_deps = nicohood/HID-Project @ ^2.6.1 +; build_flags = -DMAGIC_KEY_POS=RAMEND-1 -DUSB_EP_SIZE=16 +; build_flags = -DUSB_VID=0x2341 -DUSB_PID=0x484C -DUSB_MANUFACTURER='Nico Hood' -DUSB_PRODUCT='HoodLoader2 16u2' -DMAGIC_KEY_POS=RAMEND-1 -DUSB_EP_SIZE=16 \ No newline at end of file diff --git a/src b/src new file mode 160000 index 0000000..83457b3 --- /dev/null +++ b/src @@ -0,0 +1 @@ +Subproject commit 83457b3391d7d128a21a216133ab4d6dfb9986c8