Update files
This commit is contained in:
1 parent
c3958b5eec
commit
492dece106
5 files changed
+278
-52
No files matched your search
+5
-3
@@ -1,7 +1,7 @@
|
|||||||
#include <EEPROM.h>
|
#include <EEPROM.h>
|
||||||
|
|
||||||
// start reading from the first byte (address 0) of the EEPROM
|
// start reading from the first byte (address 0) of the EEPROM
|
||||||
int address = 0;
|
unsigned int address = 0;
|
||||||
byte value;
|
byte value;
|
||||||
|
|
||||||
// Joystick vars
|
// Joystick vars
|
||||||
@@ -11,8 +11,10 @@ int sensorValue = 0;
|
|||||||
int outputValue = 0;
|
int outputValue = 0;
|
||||||
|
|
||||||
//volatile int center[6] = {0, 0, 0, 0, 0, 0};
|
//volatile int center[6] = {0, 0, 0, 0, 0, 0};
|
||||||
volatile int minvalue[6] = {1000, 1000, 1000, 1000, 1000, 1000};
|
//volatile int minvalue[6] = {1000, 1000, 1000, 1000, 1000, 1000}; //ARDUINO
|
||||||
volatile int maxvalue[6] = {0, 0, 0, 0, 0, 0};
|
//volatile int maxvalue[6] = {0, 0, 0, 0, 0, 0}; //ARDUINO
|
||||||
|
int minvalue[6] = {1000, 1000, 1000, 1000, 1000, 1000}; //TEENSY
|
||||||
|
int maxvalue[6] = {0, 0, 0, 0, 0, 0}; //TEENSY
|
||||||
|
|
||||||
void JoystickInit()
|
void JoystickInit()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -21,9 +21,10 @@ void NrfInit()
|
|||||||
radio.setPALevel(RF24_PA_LOW);
|
radio.setPALevel(RF24_PA_LOW);
|
||||||
}
|
}
|
||||||
|
|
||||||
dataStruct2 NrfSendData(dataStruct2 data, bool debug = false)
|
bool NrfSendData(dataStruct2 data, bool debug = false)
|
||||||
|
//dataStruct2 NrfSendData(dataStruct2 data, bool debug = false)
|
||||||
{
|
{
|
||||||
network.update();
|
// network.update();
|
||||||
|
|
||||||
if (debug)
|
if (debug)
|
||||||
Serial.print("Sending...");
|
Serial.print("Sending...");
|
||||||
@@ -39,5 +40,25 @@ dataStruct2 NrfSendData(dataStruct2 data, bool debug = false)
|
|||||||
Serial.println("failed.");
|
Serial.println("failed.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return ok;
|
||||||
|
// return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
dataStruct2 NrfGetData(dataStruct2 data, bool debug = false)
|
||||||
|
{
|
||||||
|
// network.update();
|
||||||
|
int timeout = millis() + 100;
|
||||||
|
while ( network.available() && timeout > millis() )
|
||||||
|
{
|
||||||
|
RF24NetworkHeader header;
|
||||||
|
network.read(header, &data, sizeof(data));
|
||||||
|
|
||||||
|
if (debug)
|
||||||
|
{
|
||||||
|
Serial.print("Received packet ");
|
||||||
|
Serial.println(data.servoPositions[0]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
+94
-18
@@ -1,28 +1,103 @@
|
|||||||
#include "TransferDataStructure.h"
|
#include "TransferDataStructure.h"
|
||||||
|
|
||||||
dataStruct2 GetSerialData(dataStruct2 dataIn, bool debug = false)
|
String getValue(String data, char separator, int index)
|
||||||
{
|
{
|
||||||
if (Serial.available())
|
int found = 0;
|
||||||
{
|
int strIndex[] = { 0, -1 };
|
||||||
String data = Serial.readStringUntil('\r');
|
|
||||||
int maxIndex = data.length() - 1;
|
int maxIndex = data.length() - 1;
|
||||||
int index = 0;
|
|
||||||
int next_index;
|
|
||||||
String data_word;
|
|
||||||
String channel;
|
|
||||||
String angle;
|
|
||||||
do {
|
|
||||||
next_index = data.indexOf(',', index);
|
|
||||||
|
|
||||||
data_word = data.substring(index, next_index);
|
for (int i = 0; i <= maxIndex && found <= index; i++) {
|
||||||
channel = data_word.substring(0, data_word.indexOf('_'));
|
if (data.charAt(i) == separator || i == maxIndex) {
|
||||||
angle = data_word.substring(data_word.indexOf('_') + 1);
|
found++;
|
||||||
|
strIndex[0] = strIndex[1] + 1;
|
||||||
|
strIndex[1] = (i == maxIndex) ? i + 1 : i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return found > index ? data.substring(strIndex[0], strIndex[1]) : "";
|
||||||
|
}
|
||||||
|
|
||||||
if (isDigit(angle[0])) // prevent error overwriting first entry.
|
dataStruct2 GetSerialData(dataStruct2 &dataIn, bool debug = false)
|
||||||
dataIn.servoPositions[channel.toInt()] = angle.toFloat();
|
{
|
||||||
|
if (Serial.available() && Serial.peek() != -1)
|
||||||
|
{
|
||||||
|
// String data = Serial.readStringUntil('\r');
|
||||||
|
// while (Serial.read() >= 0);
|
||||||
|
// int maxIndex = data.length() - 1;
|
||||||
|
// int index = 0;
|
||||||
|
// int next_index;
|
||||||
|
// String data_word;
|
||||||
|
// String channel;
|
||||||
|
// String angle;
|
||||||
|
// do {
|
||||||
|
// next_index = data.indexOf(',', index);
|
||||||
|
//
|
||||||
|
// data_word = data.substring(index, next_index);
|
||||||
|
// channel = data_word.substring(0, data_word.indexOf('_'));
|
||||||
|
// angle = data_word.substring(data_word.indexOf('_') + 1);
|
||||||
|
//
|
||||||
|
// if (isDigit(angle[0])) // prevent error overwriting first entry.
|
||||||
|
// dataIn.servoPositions[channel.toInt()] = angle.toFloat();
|
||||||
|
//
|
||||||
|
// index = next_index + 1;
|
||||||
|
// } while ((next_index != -1) && (next_index < maxIndex));
|
||||||
|
|
||||||
index = next_index + 1;
|
|
||||||
} while ((next_index != -1) && (next_index < maxIndex));
|
/*String s = Serial.readStringUntil('s');
|
||||||
|
for (int i = 0; i < 18; i++)
|
||||||
|
{
|
||||||
|
Serial.setTimeout(10);
|
||||||
|
String c = Serial.readStringUntil('_');
|
||||||
|
String v = Serial.readStringUntil(',');
|
||||||
|
String cc = Serial.readStringUntil('=');
|
||||||
|
int channel = c.toInt();
|
||||||
|
int value = v.toInt();
|
||||||
|
int crc = cc.toInt();
|
||||||
|
|
||||||
|
if ((crc == (channel) * value) && value >= 0 && value <= 180)
|
||||||
|
dataIn.servoPositions[channel] = value;*/
|
||||||
|
//byte recv[18 + 1];
|
||||||
|
if (Serial.available() >= 18 + 1 + 2 + 30)
|
||||||
|
{
|
||||||
|
bool recc = false;
|
||||||
|
byte recv[256] = {0};
|
||||||
|
//Serial.readBytesUntil(0xffffff, recv, 255);
|
||||||
|
Serial.readBytesUntil(0xff, recv, 255);
|
||||||
|
for (int i = 0; i < 255 - 19; i++)
|
||||||
|
{
|
||||||
|
// if (recv[i + 1] == 0xff && recv[i + 2] == 0xff && recv[i + 3] == 0xff)
|
||||||
|
if (recv[i + 19] == 0xfe)
|
||||||
|
{
|
||||||
|
for (int j = 0; j < 18 + 1; j++)
|
||||||
|
{
|
||||||
|
recv[j] = recv[(i) + j];
|
||||||
|
}
|
||||||
|
recc = true;
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//s.getBytes(recv, s.length());
|
||||||
|
byte crc = 0x00;
|
||||||
|
for (int i = 0; i < 18; i++)
|
||||||
|
{
|
||||||
|
crc += recv[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (crc == recv[18])
|
||||||
|
{
|
||||||
|
|
||||||
|
if (recc)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < 18; i++)
|
||||||
|
{
|
||||||
|
dataIn.servoPositions[i] = recv[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//}
|
||||||
|
|
||||||
dataIn.remotePasstroughControl = true;
|
dataIn.remotePasstroughControl = true;
|
||||||
|
|
||||||
@@ -41,6 +116,7 @@ dataStruct2 GetSerialData(dataStruct2 dataIn, bool debug = false)
|
|||||||
Serial.println("");
|
Serial.println("");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return dataIn;
|
return dataIn;
|
||||||
}
|
}
|
||||||
+11
-1
@@ -3,6 +3,8 @@
|
|||||||
|
|
||||||
struct __attribute__((__packed__)) dataStruct2
|
struct __attribute__((__packed__)) dataStruct2
|
||||||
{
|
{
|
||||||
|
bool STOP = false;
|
||||||
|
|
||||||
float walkSpeed = 10; //step size
|
float walkSpeed = 10; //step size
|
||||||
float walkSpeed2 = 0; //gate speed
|
float walkSpeed2 = 0; //gate speed
|
||||||
float walkRotation = 0 ;
|
float walkRotation = 0 ;
|
||||||
@@ -13,7 +15,15 @@ struct __attribute__((__packed__)) dataStruct2
|
|||||||
float rotation[3] = {0, 0, 0};
|
float rotation[3] = {0, 0, 0};
|
||||||
|
|
||||||
bool remotePasstroughControl = 0;
|
bool remotePasstroughControl = 0;
|
||||||
uint16_t servoPositions[18];
|
float servoPositions[18] = {
|
||||||
|
90, 90, 90,
|
||||||
|
90, 90, 90,
|
||||||
|
90, 90, 90,
|
||||||
|
|
||||||
|
90, 90, 90,
|
||||||
|
90, 90, 90,
|
||||||
|
90, 90, 90
|
||||||
|
};
|
||||||
} dataStruct;
|
} dataStruct;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+145
-28
@@ -1,7 +1,51 @@
|
|||||||
#include "Joysticks.h"
|
#include "Joysticks.h"
|
||||||
#include "Nrf.h"
|
#include "Nrf.h"
|
||||||
#include "SerialPasstrough.h"
|
#include "SerialPasstrough.h"
|
||||||
#include <TinyMPU6050.h>
|
#include <Wire.h>
|
||||||
|
#include <MPU6050_tockn.h>
|
||||||
|
#include "Nextion.h"
|
||||||
|
|
||||||
|
NexPage page0 = NexPage(4, 0, "uploadscreen");
|
||||||
|
|
||||||
|
NexText t0 = NexText(1, 6, "t1");
|
||||||
|
NexText t1 = NexText(3, 22, "t1");
|
||||||
|
|
||||||
|
NexButton b2 = NexButton(1, 5, "b2");
|
||||||
|
NexSlider sliders[18] = {NexSlider(3, 1, "h0"),
|
||||||
|
NexSlider(3, 2, "h1"),
|
||||||
|
NexSlider(3, 3, "h2"),
|
||||||
|
NexSlider(3, 4, "h3"),
|
||||||
|
NexSlider(3, 5, "h4"),
|
||||||
|
NexSlider(3, 6, "h5"),
|
||||||
|
NexSlider(3, 7, "h6"),
|
||||||
|
NexSlider(3, 8, "h7"),
|
||||||
|
NexSlider(3, 9, "h8"),
|
||||||
|
NexSlider(3, 10, "h9"),
|
||||||
|
NexSlider(3, 11, "h10"),
|
||||||
|
NexSlider(3, 12, "h11"),
|
||||||
|
NexSlider(3, 13, "h12"),
|
||||||
|
NexSlider(3, 14, "h13"),
|
||||||
|
NexSlider(3, 15, "h14"),
|
||||||
|
NexSlider(3, 16, "h15"),
|
||||||
|
NexSlider(3, 17, "h16"),
|
||||||
|
NexSlider(3, 18, "h17")
|
||||||
|
};
|
||||||
|
|
||||||
|
char buffer[100] = {0};
|
||||||
|
|
||||||
|
NexTouch *nex_listen_list[] =
|
||||||
|
{
|
||||||
|
&b2,
|
||||||
|
&page0,
|
||||||
|
&t0,
|
||||||
|
&t1,
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
void b2PopCallback(void *ptr)
|
||||||
|
{
|
||||||
|
passtrough();
|
||||||
|
}
|
||||||
|
|
||||||
MPU6050 mpu (Wire);
|
MPU6050 mpu (Wire);
|
||||||
|
|
||||||
@@ -9,51 +53,124 @@ dataStruct2 data;
|
|||||||
joyStickdataStruct joystickData;
|
joyStickdataStruct joystickData;
|
||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
Serial.begin(115200);
|
// Serial.begin(250000, SERIAL_8E1); // ARDUINO
|
||||||
|
Serial.begin(250000); // TEENSY
|
||||||
|
// Serial.begin(115200);
|
||||||
|
Serial1.begin(115200);
|
||||||
|
// passtrough();
|
||||||
|
|
||||||
|
nexInit();
|
||||||
|
b2.attachPush(b2PopCallback, &b2);
|
||||||
|
b2.attachPop(b2PopCallback, &b2);
|
||||||
|
// for (int i = 0; i < 18; i++)
|
||||||
|
// sliders[i] = NexSlider(3, i++, "h" + i);
|
||||||
|
// while (true)
|
||||||
|
// {
|
||||||
|
// nexLoop(nex_listen_list);
|
||||||
|
// sliders[0].setValue(30);
|
||||||
|
// }
|
||||||
|
|
||||||
// Initialization
|
// Initialization
|
||||||
mpu.Initialize();
|
// Wire.begin();
|
||||||
|
// mpu.begin();
|
||||||
|
//
|
||||||
|
// mpu.calcGyroOffsets(true, 300, 1000);
|
||||||
|
//
|
||||||
// // Calibration
|
// // Calibration
|
||||||
// Serial.println("=====================================");
|
// Serial.println("=====================================");
|
||||||
// Serial.println("Starting calibration...");
|
// Serial.println("Starting calibration...");
|
||||||
// mpu.Calibrate();
|
// mpu.calcGyroOffsets();
|
||||||
// Serial.println("Calibration complete!");
|
// Serial.println("Calibration complete!");
|
||||||
// Serial.println("Offsets:");
|
|
||||||
// Serial.print("AccX Offset = ");
|
|
||||||
// Serial.println(mpu.GetAccXOffset());
|
|
||||||
// Serial.print("AccY Offset = ");
|
|
||||||
// Serial.println(mpu.GetAccYOffset());
|
|
||||||
// Serial.print("AccZ Offset = ");
|
|
||||||
// Serial.println(mpu.GetAccZOffset());
|
|
||||||
// Serial.print("GyroX Offset = ");
|
|
||||||
// Serial.println(mpu.GetGyroXOffset());
|
|
||||||
// Serial.print("GyroY Offset = ");
|
|
||||||
// Serial.println(mpu.GetGyroYOffset());
|
|
||||||
// Serial.print("GyroZ Offset = ");
|
|
||||||
// Serial.println(mpu.GetGyroZOffset());
|
|
||||||
|
|
||||||
JoystickInit();
|
JoystickInit();
|
||||||
|
|
||||||
NrfInit();
|
NrfInit();
|
||||||
}
|
}
|
||||||
|
|
||||||
void loop() {
|
void passtrough()
|
||||||
// mpu.Execute();
|
{
|
||||||
// Serial.print("AngX = ");
|
delay(100);
|
||||||
// Serial.print(mpu.GetAngX());
|
for (int i = 0; i < 10; i++)
|
||||||
|
{
|
||||||
|
// nexLoop(nex_listen_list);
|
||||||
|
// delay(10);
|
||||||
|
page0.show();
|
||||||
|
delay(10);
|
||||||
|
}
|
||||||
|
|
||||||
|
Serial.begin(115200);
|
||||||
|
Serial1.begin(115200);
|
||||||
|
do {
|
||||||
|
if (Serial.available()) { // If anything comes in Serial (USB),
|
||||||
|
Serial1.write(Serial.read()); // read it and send it out Serial1 (pins 0 & 1)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Serial1.available()) { // If anything comes in Serial1 (pins 0 & 1)
|
||||||
|
Serial.write(Serial1.read()); // read it and send it out Serial (USB)
|
||||||
|
}
|
||||||
|
} while (true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop()
|
||||||
|
{
|
||||||
|
nexLoop(nex_listen_list);
|
||||||
|
network.update();
|
||||||
|
|
||||||
|
if (false)
|
||||||
|
{
|
||||||
|
mpu.update();
|
||||||
|
Serial.print("AngX = ");
|
||||||
|
Serial.print(mpu.getAngleX());
|
||||||
|
Serial.print(" / AngY = ");
|
||||||
|
Serial.print(mpu.getAngleY());
|
||||||
|
Serial.print(" / AngZ = ");
|
||||||
|
Serial.println(mpu.getAngleZ());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Serial.print(" / AngX = ");
|
||||||
|
// Serial.print(mpu.getGyroAngleX());
|
||||||
// Serial.print(" / AngY = ");
|
// Serial.print(" / AngY = ");
|
||||||
// Serial.print(mpu.GetAngY());
|
// Serial.print(mpu.getGyroAngleY());
|
||||||
// Serial.print(" / AngZ = ");
|
// Serial.print(" / AngZ = ");
|
||||||
// Serial.println(mpu.GetAngZ());
|
// Serial.println(mpu.getGyroAngleZ());
|
||||||
|
|
||||||
joystickData = JoystickGet(false);
|
joystickData = JoystickGet(true);
|
||||||
|
|
||||||
data = GetSerialData(data, false);
|
// test
|
||||||
|
if (false)
|
||||||
|
{
|
||||||
|
data.remotePasstroughControl = true;
|
||||||
|
data.servoPositions[1] = (joystickData.value[2] * 0.78f);
|
||||||
|
data.servoPositions[4] = (joystickData.value[2] * 0.78f);
|
||||||
|
data.servoPositions[7] = (joystickData.value[2] * 0.78f);
|
||||||
|
|
||||||
data.servoPositions[0] = joystickData.value[0];
|
data.servoPositions[10] = 180 - (joystickData.value[2] * 0.78f);
|
||||||
|
data.servoPositions[13] = 180 - (joystickData.value[2] * 0.78f);
|
||||||
|
data.servoPositions[16] = 180 - (joystickData.value[2] * 0.78f);
|
||||||
|
}
|
||||||
|
|
||||||
data = NrfSendData(data, true);
|
GetSerialData(data, false);
|
||||||
|
// data = GetSerialData(data, false);
|
||||||
|
|
||||||
|
// data.STOP = true;
|
||||||
|
|
||||||
|
for (int i = 0; i < 18; i++)
|
||||||
|
sliders[i].setValue(data.servoPositions[i]);
|
||||||
|
|
||||||
|
bool ok = NrfSendData(data, false);
|
||||||
|
// data = NrfSendData(data, false);
|
||||||
|
|
||||||
|
if (ok)
|
||||||
|
t0.setText("connected");
|
||||||
|
else
|
||||||
|
t0.setText("not connected");
|
||||||
|
if (ok)
|
||||||
|
t1.setText("connected");
|
||||||
|
else
|
||||||
|
t1.setText("not connected");
|
||||||
|
|
||||||
|
//test
|
||||||
|
// data = NrfGetData(data, true);
|
||||||
|
|
||||||
delay(20);
|
delay(20);
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user