* Using 8 bits per int for serial devices

* Refactor simwind code slightly to improve performance
This commit is contained in:
Paul Jones 2024-09-19 17:05:42 -04:00 committed by GitHub
parent 2446fc9af2
commit 545168c3ab
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 21 additions and 21 deletions

View File

@ -6,7 +6,7 @@
typedef struct typedef struct
{ {
uint32_t litleds; uint8_t litleds;
//unsigned char color_1_red; //unsigned char color_1_red;
//unsigned char color_1_green; //unsigned char color_1_green;
//unsigned char color_1_blue; //unsigned char color_1_blue;

View File

@ -6,14 +6,14 @@
typedef struct typedef struct
{ {
uint32_t motor1; uint8_t motor1;
uint32_t effect1; uint8_t effect1;
uint32_t motor2; uint8_t motor2;
uint32_t effect2; uint8_t effect2;
uint32_t motor3; uint8_t motor3;
uint32_t effect3; uint8_t effect3;
uint32_t motor4; uint8_t motor4;
uint32_t effect4; uint8_t effect4;
} }
SimHapticData; SimHapticData;

View File

@ -6,8 +6,8 @@
typedef struct typedef struct
{ {
uint32_t velocity; uint8_t velocity;
float fanpower; uint8_t fanpower;
} }
SimWindData; SimWindData;

View File

@ -14,7 +14,7 @@ SimWindData sd;
int velocity = 0; int velocity = 0;
void setup() { void setup() {
Serial.begin(115200); Serial.begin(9600);
if (!AFMS.begin()) { if (!AFMS.begin()) {
Serial.println("Could not find Motor Shield. Check wiring."); Serial.println("Could not find Motor Shield. Check wiring.");
while (1); while (1);
@ -37,11 +37,7 @@ void loop() {
memcpy(&sd, &buff, BYTE_SIZE); memcpy(&sd, &buff, BYTE_SIZE);
velocity = sd.velocity; velocity = sd.velocity;
} }
int v = ceil(velocity * KPHTOMPH);
if (v >= 255) myMotor1->setSpeed(velocity*FANPOWER);
{ myMotor2->setSpeed(velocity*FANPOWER);
v = 255;
}
myMotor1->setSpeed(v*FANPOWER);
myMotor2->setSpeed(v*FANPOWER);
} }

View File

@ -12,6 +12,8 @@
#include "../simulatorapi/simapi/simapi/simdata.h" #include "../simulatorapi/simapi/simapi/simdata.h"
#include "../slog/slog.h" #include "../slog/slog.h"
#define KPHTOMPH .621317
int serialdev_update(SimDevice* this, SimData* simdata) int serialdev_update(SimDevice* this, SimData* simdata)
{ {
SerialDevice* serialdevice = (void *) this->derived; SerialDevice* serialdevice = (void *) this->derived;
@ -63,10 +65,12 @@ int arduino_simwind_update(SimDevice* this, SimData* simdata)
SerialDevice* serialdevice = (void *) this->derived; SerialDevice* serialdevice = (void *) this->derived;
int result = 1; int result = 1;
serialdevice->u.simwinddata.velocity = simdata->velocity; // sending over as mph, when you consider 255mph to be a reasonable upper limit
serialdevice->u.simwinddata.velocity = ceil(simdata->velocity*KPHTOMPH);
slogt("Updating arduino device speed to %i", serialdevice->u.simwinddata.velocity); slogt("Updating arduino device speed to %i", serialdevice->u.simwinddata.velocity);
// this can be added to the config, all config dependent can be added to init // this can be added to the config, all config dependent can be added to init
serialdevice->u.simwinddata.fanpower = 0.6; serialdevice->u.simwinddata.fanpower = (int)0.6 * 255;
size_t size = sizeof(SimWindData); size_t size = sizeof(SimWindData);
arduino_update(serialdevice, &serialdevice->u.simwinddata, size); arduino_update(serialdevice, &serialdevice->u.simwinddata, size);