change to rand_float and add randomSeed

pull/264/head
alanbjohnston 3 years ago committed by GitHub
parent 6564221746
commit f46715a8ae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -80,7 +80,7 @@ char call[] = "AMSAT"; // put your callsign here
extern bool get_camera_image(bool debug);
extern bool start_camera();
float rnd_float(float upper, float lower) {
float rand_float(float upper, float lower) {
return (float)(random(upper*100, lower*100)/100.0);
}
@ -819,13 +819,13 @@ void generate_simulated_telem() {
Serial.println("\n\nSwitching eclipse mode! \n\n");
}
double Xi = eclipse * amps_max[0] * (float) sin(2.0 * 3.14 * time_stamp / (46.0 * rotation_speed)) + rnd_float(-2, 2);
double Yi = eclipse * amps_max[1] * (float) sin((2.0 * 3.14 * time_stamp / (46.0 * rotation_speed)) + (3.14 / 2.0)) + rnd_float(-2, 2);
double Zi = eclipse * amps_max[2] * (float) sin((2.0 * 3.14 * time_stamp / (46.0 * rotation_speed)) + 3.14 + angle[2]) + rnd_float(-2, 2);
double Xi = eclipse * amps_max[0] * (float) sin(2.0 * 3.14 * time_stamp / (46.0 * rotation_speed)) + rand_float(-2, 2);
double Yi = eclipse * amps_max[1] * (float) sin((2.0 * 3.14 * time_stamp / (46.0 * rotation_speed)) + (3.14 / 2.0)) + rand_float(-2, 2);
double Zi = eclipse * amps_max[2] * (float) sin((2.0 * 3.14 * time_stamp / (46.0 * rotation_speed)) + 3.14 + angle[2]) + rand_float(-2, 2);
double Xv = eclipse * volts_max[0] * (float) sin(2.0 * 3.14 * time_stamp / (46.0 * rotation_speed)) + rnd_float(-0.2, 0.2);
double Yv = eclipse * volts_max[1] * (float) sin((2.0 * 3.14 * time_stamp / (46.0 * rotation_speed)) + (3.14 / 2.0)) + rnd_float(-0.2, 0.2);
double Zv = 2.0 * eclipse * volts_max[2] * (float) sin((2.0 * 3.14 * time_stamp / (46.0 * rotation_speed)) + 3.14 + angle[2]) + rnd_float(-0.2, 0.2);
double Xv = eclipse * volts_max[0] * (float) sin(2.0 * 3.14 * time_stamp / (46.0 * rotation_speed)) + rand_float(-0.2, 0.2);
double Yv = eclipse * volts_max[1] * (float) sin((2.0 * 3.14 * time_stamp / (46.0 * rotation_speed)) + (3.14 / 2.0)) + rand_float(-0.2, 0.2);
double Zv = 2.0 * eclipse * volts_max[2] * (float) sin((2.0 * 3.14 * time_stamp / (46.0 * rotation_speed)) + 3.14 + angle[2]) + rand_float(-0.2, 0.2);
// printf("Yi: %f Zi: %f %f %f Zv: %f \n", Yi, Zi, amps_max[2], angle[2], Zv);
@ -836,25 +836,25 @@ void generate_simulated_telem() {
current[mapping[PLUS_Z]] = (Zi >= 0) ? Zi : 0;
current[mapping[MINUS_Z]] = (Zi >= 0) ? 0 : ((-1.0f) * Zi);
voltage[mapping[PLUS_X]] = (Xv >= 1) ? Xv : rnd_float(0.9, 1.1);
voltage[mapping[MINUS_X]] = (Xv <= -1) ? ((-1.0f) * Xv) : rnd_float(0.9, 1.1);
voltage[mapping[PLUS_Y]] = (Yv >= 1) ? Yv : rnd_float(0.9, 1.1);
voltage[mapping[MINUS_Y]] = (Yv <= -1) ? ((-1.0f) * Yv) : rnd_float(0.9, 1.1);
voltage[mapping[PLUS_Z]] = (Zv >= 1) ? Zv : rnd_float(0.9, 1.1);
voltage[mapping[MINUS_Z]] = (Zv <= -1) ? ((-1.0f) * Zv) : rnd_float(0.9, 1.1);
voltage[mapping[PLUS_X]] = (Xv >= 1) ? Xv : rand_float(0.9, 1.1);
voltage[mapping[MINUS_X]] = (Xv <= -1) ? ((-1.0f) * Xv) : rand_float(0.9, 1.1);
voltage[mapping[PLUS_Y]] = (Yv >= 1) ? Yv : rand_float(0.9, 1.1);
voltage[mapping[MINUS_Y]] = (Yv <= -1) ? ((-1.0f) * Yv) : rand_float(0.9, 1.1);
voltage[mapping[PLUS_Z]] = (Zv >= 1) ? Zv : rand_float(0.9, 1.1);
voltage[mapping[MINUS_Z]] = (Zv <= -1) ? ((-1.0f) * Zv) : rand_float(0.9, 1.1);
// printf("temp: %f Time: %f Eclipse: %d : %f %f | %f %f | %f %f\n",tempS, time, eclipse, voltage[map[PLUS_X]], voltage[map[MINUS_X]], voltage[map[PLUS_Y]], voltage[map[MINUS_Y]], current[map[PLUS_Z]], current[map[MINUS_Z]]);
tempS += (eclipse > 0) ? ((temp_max - tempS) / 50.0f) : ((temp_min - tempS) / 50.0f);
tempS += +rnd_float(-1.0, 1.0);
// IHUcpuTemp = (int)((tempS + rnd_float(-1.0, 1.0)) * 10 + 0.5);
tempS += +rand_float(-1.0, 1.0);
// IHUcpuTemp = (int)((tempS + rand_float(-1.0, 1.0)) * 10 + 0.5);
other[IHU_TEMP] = tempS;
voltage[mapping[BUS]] = rnd_float(5.0, 5.005);
current[mapping[BUS]] = rnd_float(158, 171);
voltage[mapping[BUS]] = rand_float(5.0, 5.005);
current[mapping[BUS]] = rand_float(158, 171);
// float charging = current[map[PLUS_X]] + current[map[MINUS_X]] + current[map[PLUS_Y]] + current[map[MINUS_Y]] + current[map[PLUS_Z]] + current[map[MINUS_Z]];
float charging = eclipse * (fabs(amps_max[0] * 0.707) + fabs(amps_max[1] * 0.707) + rnd_float(-4.0, 4.0));
float charging = eclipse * (fabs(amps_max[0] * 0.707) + fabs(amps_max[1] * 0.707) + rand_float(-4.0, 4.0));
current[mapping[BAT]] = ((current[mapping[BUS]] * voltage[mapping[BUS]]) / batt) - charging;
@ -871,7 +871,7 @@ void generate_simulated_telem() {
if (batt > 4.5)
batt = 4.5;
voltage[mapping[BAT]] = batt + rnd_float(-0.01, 0.01);
voltage[mapping[BAT]] = batt + rand_float(-0.01, 0.01);
// end of simulated telemetry
}
@ -884,33 +884,33 @@ void config_simulated_telem()
// srand((unsigned int)time(0));
axis[0] = rnd_float(-0.2, 0.2);
axis[0] = rand_float(-0.2, 0.2);
if (axis[0] == 0)
axis[0] = rnd_float(-0.2, 0.2);
axis[1] = rnd_float(-0.2, 0.2);
axis[2] = (rnd_float(-0.2, 0.2) > 0) ? 1.0 : -1.0;
axis[0] = rand_float(-0.2, 0.2);
axis[1] = rand_float(-0.2, 0.2);
axis[2] = (rand_float(-0.2, 0.2) > 0) ? 1.0 : -1.0;
angle[0] = (float) atan(axis[1] / axis[2]);
angle[1] = (float) atan(axis[2] / axis[0]);
angle[2] = (float) atan(axis[1] / axis[0]);
volts_max[0] = rnd_float(4.5, 5.5) * (float) sin(angle[1]);
volts_max[1] = rnd_float(4.5, 5.5) * (float) cos(angle[0]);
volts_max[2] = rnd_float(4.5, 5.5) * (float) cos(angle[1] - angle[0]);
volts_max[0] = rand_float(4.5, 5.5) * (float) sin(angle[1]);
volts_max[1] = rand_float(4.5, 5.5) * (float) cos(angle[0]);
volts_max[2] = rand_float(4.5, 5.5) * (float) cos(angle[1] - angle[0]);
float amps_avg = rnd_float(150, 300);
float amps_avg = rand_float(150, 300);
amps_max[0] = (amps_avg + rnd_float(-25.0, 25.0)) * (float) sin(angle[1]);
amps_max[1] = (amps_avg + rnd_float(-25.0, 25.0)) * (float) cos(angle[0]);
amps_max[2] = (amps_avg + rnd_float(-25.0, 25.0)) * (float) cos(angle[1] - angle[0]);
amps_max[0] = (amps_avg + rand_float(-25.0, 25.0)) * (float) sin(angle[1]);
amps_max[1] = (amps_avg + rand_float(-25.0, 25.0)) * (float) cos(angle[0]);
amps_max[2] = (amps_avg + rand_float(-25.0, 25.0)) * (float) cos(angle[1] - angle[0]);
batt = rnd_float(3.8, 4.3);
rotation_speed = rnd_float(1.0, 2.5);
eclipse = (rnd_float(-1, +4) > 0) ? 1.0 : 0.0;
period = rnd_float(150, 300);
tempS = rnd_float(20, 55);
temp_max = rnd_float(50, 70);
temp_min = rnd_float(10, 20);
batt = rand_float(3.8, 4.3);
rotation_speed = rand_float(1.0, 2.5);
eclipse = (rand_float(-1, +4) > 0) ? 1.0 : 0.0;
period = rand_float(150, 300);
tempS = rand_float(20, 55);
temp_max = rand_float(50, 70);
temp_min = rand_float(10, 20);
// #ifdef DEBUG_LOGGING
for (int i = 0; i < 3; i++)
@ -1491,7 +1491,7 @@ int twosToInt(int val,int len) { // Convert twos compliment to integer
return(val);
}
/*
float rnd_float(double min,double max) { // returns 2 decimal point random number
int val = (rand() % ((int)(max*100) - (int)(min*100) + 1)) + (int)(min*100);
@ -1499,7 +1499,7 @@ float rnd_float(double min,double max) { // returns 2 decimal point random num
return(ret);
}
*/
float toAprsFormat(float input) {
// converts decimal coordinate (latitude or longitude) to APRS DDMM.MM format
int dd = (int) input;
@ -3766,6 +3766,8 @@ void config_gpio() {
pinMode(TEMPERATURE_PIN, INPUT);
Serial.print("Diode voltage (temperature): ");
Serial.println(analogRead(TEMPERATURE_PIN));
randomSeed(analogRead(TEMPERATURE_PIN);
pinMode(AUDIO_IN_PIN, INPUT);
Serial.print("Audio In: ");

Loading…
Cancel
Save

Powered by TurnKey Linux.