diff --git a/Hemocube_triplate.ino b/Hemocube_triplate.ino index 85017c5..6942589 100644 --- a/Hemocube_triplate.ino +++ b/Hemocube_triplate.ino @@ -1,8 +1,6 @@ #include "ADS1X15.h" #include #include -#include -#include #include const int buttonPin = 12; // Button pin @@ -15,8 +13,8 @@ char data; //Variable to store the data ADS1115 ADS(0x48); -int blue_dac = 2220; //390 2940 -int green_dac = 1880; //2320 2860 +int blue_dac = {led1dac} //2220; //390 2940 +int green_dac = {led2dac} //1880; //2320 2860 int green_sample_size = 100; int blue_sample_size = 100; diff --git a/README.md b/README.md index 2a63783..378c185 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,8 @@ In Sketch.py of everywhereml/arduino replace line 167 and 228 with: >arduino library not found: manually copy all required libary in the same folder +>Error during build: Platform 'arduino:avr' not found: platform not installed +Try running `arduino-cli core install arduino:avr` ### installation after release diff --git a/flash.py b/flash.py index ca7770e..b168841 100644 --- a/flash.py +++ b/flash.py @@ -19,7 +19,10 @@ C++ header files) """ sketch += Ino(""" #include "hello.h" - +#include +#include +#include +#include "ADS1X15.h" void setup() { Serial.begin(115200); @@ -33,7 +36,7 @@ sketch += Ino(""" sketch += H("hello.h", """ void hello() { - Serial.println("hello smi5"); + Serial.println("hello smi8"); } """) @@ -63,4 +66,4 @@ sketch.upload(port='/dev/cu.usbserial-1420') # sketch.upload(port='ttyUSB') # sketch.upload(port='/dev/cu.usbserial-1420') #/dev/cu.usbmodem -print(sketch.output) \ No newline at end of file +print('hi', sketch.output) \ No newline at end of file diff --git a/hemocube.py b/hemocube.py index 3c1d26a..4214853 100644 --- a/hemocube.py +++ b/hemocube.py @@ -51,24 +51,842 @@ def flash(log_view, led1, led2, port): C++ header files) """ sketch += Ino(""" +#include "ADS1X15.h" +#include +#include +#include + +const int buttonPin = 12; // Button pin +const int PIN_CS = 10; +const int GAIN_1 = 0x1; +const int GAIN_2 = 0x0; +const unsigned int steps = 512; +unsigned int sines_of_steps[steps]; +char data; //Variable to store the data + +ADS1115 ADS(0x48); + +int blue_dac = {led1dac}; //2220; //390 2940 +int green_dac = {led2dac}; //1880; //2320 2860 + +int green_sample_size = 100; +int blue_sample_size = 100; + +int loopcounter = 0; +unsigned long long intensity_storage = 0; +int temp_counter = 0; + +float avg_storage = 0; +float avg_blueS = 0; +float avg_blueS1 = 0; +float avg_blueS2 = 0; +float avg_blueS3 = 0; +float avg_greenS = 0; +float avg_greenS1 = 0; +float avg_greenS2 = 0; +float avg_greenS3 = 0; +float avg_blueB = 0; +float avg_blueB1 = 0; +float avg_blueB2 = 0; +float avg_blueB3 = 0; +float avg_greenB = 0; +float avg_greenB1 = 0; +float avg_greenB2 = 0; +float avg_greenB3 = 0; +float old_blue = 0; +float old_green = 0; +float avg_green = 0; +float avg_blue = 0; +// +bool buttonState = false; // Current button state +bool lastButtonState = false; // Previous button state +//int taskNumber = 1; // Current task number +bool taskStarted = false; +//int buttonPressCount = 0; +int bs; +int split_counter = 0; +int intensity_display = 1; +int plotter = 0; +int blue_stable_time = 50; +int green_stable_time = 50; + +int blue_samples = 10; +int green_samples = 10; + +int moving_average_array[] = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; +int sorting_array[] = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; +int moving_average = 0; +int j = 0; +int temp_sort = 0; void setup() {{ - // put your setup code here, to run once: + Serial.begin(115200); + Serial.println("SN HCV1001"); + pinMode(PIN_CS, OUTPUT); + pinMode(buttonPin, INPUT_PULLUP); + SPI.begin(); + SPI.setClockDivider(SPI_CLOCK_DIV2); + ADS.begin(); +}} + +void setOutput(byte channel, byte gain, byte shutdown, unsigned int val) +{{ + byte lowByte = val & 0xff; + byte highByte = ((val >> 8) & 0xff) | channel << 7 | gain << 5 | shutdown << 4; + PORTB &= 0xfb; + SPI.transfer(highByte); + SPI.transfer(lowByte); + PORTB |= 0x4; }} void loop() {{ - // put your main code here, to run repeatedly: + loopcounter = 0; + avg_storage = 0; + split_counter = 0; - + if (Serial.available()) {{ + char data = Serial.read(); + + if (data == 'B') {{ + taskStarted = false; + Serial.println("#Place Buffer"); + + while (!taskStarted) {{ + buttonState = digitalRead(buttonPin); + + if (buttonState == HIGH && lastButtonState == LOW) {{ + lastButtonState = buttonState; + taskStarted = true; + startTask1(); + }} + + lastButtonState = buttonState; + }} + + taskStarted = false; + while (!taskStarted) {{ + buttonState = digitalRead(buttonPin); + + if (buttonState == HIGH && lastButtonState == LOW) {{ + lastButtonState = buttonState; + taskStarted = true; + startTask2(); + }} + + lastButtonState = buttonState; + }} + }} + else if (data == 'S') {{ + Serial.println("Place Sample"); + while (digitalRead(buttonPin) == LOW) {{ + delay(10); + }} + startTask2(); + }} + + else if (data == 'P') {{ //Check if the received character is 1 + Serial.print("RESULT"); + Serial.print(" "); Serial.print("SN HCV1001"); Serial.print(" "); Serial.print(avg_greenB); Serial.print(" "); Serial.print(avg_blueB); Serial.print(" "); Serial.print(avg_greenS); Serial.print(" "); Serial.print(avg_blueS); Serial.print(" ");Serial.print("REND");Serial.println(" "); + + delay(100); + }} + + }} }} +void startTask1() {{ + Serial.println("#Buffer Started"); + setOutput(1, GAIN_1, 1, 0); + setOutput(0, GAIN_1, 1, green_dac); + memset (moving_average_array, 0, 10); + temp_counter = 0; + intensity_storage = 0; + float f = ADS.toVoltage(1); // voltage factor + for (int i = 0; i < green_samples + green_stable_time; i += 1) + {{ + + int16_t val_0 = ADS.readADC(0); + int16_t val_1 = ADS.readADC(1); + int16_t val_2 = ADS.readADC(2); + int16_t val_3 = ADS.readADC(3); + moving_average_array[i % 10] = val_1; + for (int j = 0; j < 10; j++) + {{ + sorting_array[j] = moving_average_array[j]; + }} + if (i >= green_stable_time) + {{ + for (int j = 0; j < 6; j++) + {{ + for (int k = 0; k < (9 - j); k++) + {{ + if (sorting_array[k] > sorting_array[k + 1]) + {{ + temp_sort = sorting_array[k]; + sorting_array[k] = sorting_array[k + 1]; + sorting_array[k + 1] = temp_sort; + }} + }} + }} + moving_average = (sorting_array[4] / 2) + (sorting_array[5] / 2); + if ((val_1 > (moving_average * 0.9)) and (val_1 < (moving_average * 1.1))) + {{ + intensity_storage += val_1; + temp_counter++; + }} + }} + + if (intensity_display == 1) + {{ + // Serial.print("DAC_value : "); Serial.print(i); Serial.print('\t'); Serial.print('\t'); Serial.print("Green_Resistor_drop: "); Serial.print(val_2); + // Serial.print('\t'); Serial.print('\t'); Serial.print("PD_output: "); Serial.print(val_1); Serial.print('\t'); Serial.print('\t'); Serial.print("PD_2X_output: "); Serial.println(val_0); + }} + if (plotter == 1) + {{ + Serial.println(val_1); + }} + //delay(200); + }} + avg_greenB1 = intensity_storage / temp_counter; + delay(500); + + setOutput(0, GAIN_1, 1, 0); + setOutput(1, GAIN_1, 1, blue_dac); + memset (moving_average_array, 0, 10); + temp_counter = 0; + intensity_storage = 0; + for (int i = 0; i < blue_samples + blue_stable_time; i += 1) + {{ + + int16_t val_0 = ADS.readADC(0); + int16_t val_1 = ADS.readADC(1); + int16_t val_2 = ADS.readADC(2); + int16_t val_3 = ADS.readADC(3); + moving_average_array[i % 10] = val_1; + //Serial.println(moving_average_array[0]); + for (int j = 0; j < 10; j++) + {{ + sorting_array[j] = moving_average_array[j]; + }} + //Serial.println(sorting_array[0]); + if (i >= blue_stable_time) + {{ + for (int j = 0; j < 6; j++) + {{ + for (int k = 0; k < (9 - j); k++) + {{ + if (sorting_array[k] > sorting_array[k + 1]) + {{ + temp_sort = sorting_array[k]; + sorting_array[k] = sorting_array[k + 1]; + sorting_array[k + 1] = temp_sort; + }} + }} + }} + moving_average = (sorting_array[4] / 2) + (sorting_array[5] / 2); + if ((val_1 > (moving_average * 0.9)) and (val_1 < (moving_average * 1.1))) + {{ + intensity_storage += val_1; + + temp_counter++; + }} + }} + if (intensity_display == 1) + {{ + // Serial.print("DAC_value : "); Serial.print(i); Serial.print('\t'); Serial.print('\t'); Serial.print("Blue_Resistor_drop: "); Serial.print(val_3); + // Serial.print('\t'); Serial.print('\t'); Serial.print("PD_output: "); Serial.print(val_1); Serial.print('\t'); Serial.print('\t'); Serial.print("PD_2X_output: "); Serial.println(val_0); + }} + if (plotter == 1) + {{ + Serial.println(val_1); + }} + //delay(200); + }} + avg_blueB1 = intensity_storage / temp_counter; + + setOutput(0, GAIN_1, 1, 0); + setOutput(1, GAIN_1, 1, 0); + delay (100); + + setOutput(1, GAIN_1, 1, 0); + setOutput(0, GAIN_1, 1, green_dac); + memset (moving_average_array, 0, 10); + temp_counter = 0; + intensity_storage = 0; + f = ADS.toVoltage(1); // voltage factor + for (int i = 0; i < green_samples + green_stable_time; i += 1) + {{ + + int16_t val_0 = ADS.readADC(0); + int16_t val_1 = ADS.readADC(1); + int16_t val_2 = ADS.readADC(2); + int16_t val_3 = ADS.readADC(3); + moving_average_array[i % 10] = val_1; + for (int j = 0; j < 10; j++) + {{ + sorting_array[j] = moving_average_array[j]; + }} + if (i >= green_stable_time) + {{ + for (int j = 0; j < 6; j++) + {{ + for (int k = 0; k < (9 - j); k++) + {{ + if (sorting_array[k] > sorting_array[k + 1]) + {{ + temp_sort = sorting_array[k]; + sorting_array[k] = sorting_array[k + 1]; + sorting_array[k + 1] = temp_sort; + }} + }} + }} + moving_average = (sorting_array[4] / 2) + (sorting_array[5] / 2); + if ((val_1 > (moving_average * 0.9)) and (val_1 < (moving_average * 1.1))) + {{ + intensity_storage += val_1; + temp_counter++; + }} + }} + + if (intensity_display == 1) + {{ + // Serial.print("DAC_value : "); Serial.print(i); Serial.print('\t'); Serial.print('\t'); Serial.print("Green_Resistor_drop: "); Serial.print(val_2); + // Serial.print('\t'); Serial.print('\t'); Serial.print("PD_output: "); Serial.print(val_1); Serial.print('\t'); Serial.print('\t'); Serial.print("PD_2X_output: "); Serial.println(val_0); + }} + if (plotter == 1) + {{ + Serial.println(val_1); + }} + //delay(200); + }} + avg_greenB2 = intensity_storage / temp_counter; + delay(500); + + setOutput(0, GAIN_1, 1, 0); + setOutput(1, GAIN_1, 1, blue_dac); + memset (moving_average_array, 0, 10); + temp_counter = 0; + intensity_storage = 0; + for (int i = 0; i < blue_samples + blue_stable_time; i += 1) + {{ + + int16_t val_0 = ADS.readADC(0); + int16_t val_1 = ADS.readADC(1); + int16_t val_2 = ADS.readADC(2); + int16_t val_3 = ADS.readADC(3); + moving_average_array[i % 10] = val_1; + //Serial.println(moving_average_array[0]); + for (int j = 0; j < 10; j++) + {{ + sorting_array[j] = moving_average_array[j]; + }} + //Serial.println(sorting_array[0]); + if (i >= blue_stable_time) + {{ + for (int j = 0; j < 6; j++) + {{ + for (int k = 0; k < (9 - j); k++) + {{ + if (sorting_array[k] > sorting_array[k + 1]) + {{ + temp_sort = sorting_array[k]; + sorting_array[k] = sorting_array[k + 1]; + sorting_array[k + 1] = temp_sort; + }} + }} + }} + moving_average = (sorting_array[4] / 2) + (sorting_array[5] / 2); + if ((val_1 > (moving_average * 0.9)) and (val_1 < (moving_average * 1.1))) + {{ + intensity_storage += val_1; + + temp_counter++; + }} + }} + if (intensity_display == 1) + {{ + // Serial.print("DAC_value : "); Serial.print(i); Serial.print('\t'); Serial.print('\t'); Serial.print("Blue_Resistor_drop: "); Serial.print(val_3); + // Serial.print('\t'); Serial.print('\t'); Serial.print("PD_output: "); Serial.print(val_1); Serial.print('\t'); Serial.print('\t'); Serial.print("PD_2X_output: "); Serial.println(val_0); + }} + if (plotter == 1) + {{ + Serial.println(val_1); + }} + //delay(200); + }} + avg_blueB2 = intensity_storage / temp_counter; + + setOutput(0, GAIN_1, 1, 0); + setOutput(1, GAIN_1, 1, 0); +delay (100); + setOutput(1, GAIN_1, 1, 0); + setOutput(0, GAIN_1, 1, green_dac); + memset (moving_average_array, 0, 10); + temp_counter = 0; + intensity_storage = 0; + f = ADS.toVoltage(1); // voltage factor + for (int i = 0; i < green_samples + green_stable_time; i += 1) + {{ + + int16_t val_0 = ADS.readADC(0); + int16_t val_1 = ADS.readADC(1); + int16_t val_2 = ADS.readADC(2); + int16_t val_3 = ADS.readADC(3); + moving_average_array[i % 10] = val_1; + for (int j = 0; j < 10; j++) + {{ + sorting_array[j] = moving_average_array[j]; + }} + if (i >= green_stable_time) + {{ + for (int j = 0; j < 6; j++) + {{ + for (int k = 0; k < (9 - j); k++) + {{ + if (sorting_array[k] > sorting_array[k + 1]) + {{ + temp_sort = sorting_array[k]; + sorting_array[k] = sorting_array[k + 1]; + sorting_array[k + 1] = temp_sort; + }} + }} + }} + moving_average = (sorting_array[4] / 2) + (sorting_array[5] / 2); + if ((val_1 > (moving_average * 0.9)) and (val_1 < (moving_average * 1.1))) + {{ + intensity_storage += val_1; + temp_counter++; + }} + }} + + if (intensity_display == 1) + {{ + // Serial.print("DAC_value : "); Serial.print(i); Serial.print('\t'); Serial.print('\t'); Serial.print("Green_Resistor_drop: "); Serial.print(val_2); + // Serial.print('\t'); Serial.print('\t'); Serial.print("PD_output: "); Serial.print(val_1); Serial.print('\t'); Serial.print('\t'); Serial.print("PD_2X_output: "); Serial.println(val_0); + }} + if (plotter == 1) + {{ + Serial.println(val_1); + }} + //delay(200); + }} + avg_greenB3 = intensity_storage / temp_counter; + delay(500); + + setOutput(0, GAIN_1, 1, 0); + setOutput(1, GAIN_1, 1, blue_dac); + memset (moving_average_array, 0, 10); + temp_counter = 0; + intensity_storage = 0; + for (int i = 0; i < blue_samples + blue_stable_time; i += 1) + {{ + + int16_t val_0 = ADS.readADC(0); + int16_t val_1 = ADS.readADC(1); + int16_t val_2 = ADS.readADC(2); + int16_t val_3 = ADS.readADC(3); + moving_average_array[i % 10] = val_1; + //Serial.println(moving_average_array[0]); + for (int j = 0; j < 10; j++) + {{ + sorting_array[j] = moving_average_array[j]; + }} + //Serial.println(sorting_array[0]); + if (i >= blue_stable_time) + {{ + for (int j = 0; j < 6; j++) + {{ + for (int k = 0; k < (9 - j); k++) + {{ + if (sorting_array[k] > sorting_array[k + 1]) + {{ + temp_sort = sorting_array[k]; + sorting_array[k] = sorting_array[k + 1]; + sorting_array[k + 1] = temp_sort; + }} + }} + }} + moving_average = (sorting_array[4] / 2) + (sorting_array[5] / 2); + if ((val_1 > (moving_average * 0.9)) and (val_1 < (moving_average * 1.1))) + {{ + intensity_storage += val_1; + + temp_counter++; + }} + }} + if (intensity_display == 1) + {{ + // Serial.print("DAC_value : "); Serial.print(i); Serial.print('\t'); Serial.print('\t'); Serial.print("Blue_Resistor_drop: "); Serial.print(val_3); + // Serial.print('\t'); Serial.print('\t'); Serial.print("PD_output: "); Serial.print(val_1); Serial.print('\t'); Serial.print('\t'); Serial.print("PD_2X_output: "); Serial.println(val_0); + }} + if (plotter == 1) + {{ + Serial.println(val_1); + }} + //delay(200); + }} + avg_blueB3 = intensity_storage / temp_counter; +delay(100); + setOutput(0, GAIN_1, 1, 0); + setOutput(1, GAIN_1, 1, 0); + avg_blueB = (avg_blueB1 + avg_blueB2 + avg_blueB3) / 3; + avg_greenB = (avg_greenB1 + avg_greenB2 + avg_greenB3) / 3; + Serial.print("ok Green B Intensity: "); Serial.println(avg_greenB); + Serial.print("ok Blue B Intensity: "); Serial.println(avg_blueB); + Serial.println("#Buffer Completed"); + Serial.println("#Place sample"); + delay(200); + +}} +void startTask2() {{ + Serial.println("#Sample started"); + setOutput(1, GAIN_1, 1, 0); + setOutput(0, GAIN_1, 1, green_dac); + memset (moving_average_array, 0, 10); + temp_counter = 0; + intensity_storage = 0; + float f = ADS.toVoltage(1); // voltage factor + for (int i = 0; i < green_samples + green_stable_time; i += 1) + {{ + + int16_t val_0 = ADS.readADC(0); + int16_t val_1 = ADS.readADC(1); + int16_t val_2 = ADS.readADC(2); + int16_t val_3 = ADS.readADC(3); + moving_average_array[i % 10] = val_1; + for (int j = 0; j < 10; j++) + {{ + sorting_array[j] = moving_average_array[j]; + }} + if (i >= green_stable_time) + {{ + for (int j = 0; j < 6; j++) + {{ + for (int k = 0; k < (9 - j); k++) + {{ + if (sorting_array[k] > sorting_array[k + 1]) + {{ + temp_sort = sorting_array[k]; + sorting_array[k] = sorting_array[k + 1]; + sorting_array[k + 1] = temp_sort; + }} + }} + }} + moving_average = (sorting_array[4] / 2) + (sorting_array[5] / 2); + if ((val_1 > (moving_average * 0.9)) and (val_1 < (moving_average * 1.1))) + {{ + intensity_storage += val_1; + temp_counter++; + }} + }} + + if (intensity_display == 1) + {{ + // Serial.print("DAC_value : "); Serial.print(i); Serial.print('\t'); Serial.print('\t'); Serial.print("Green_Resistor_drop: "); Serial.print(val_2); + // Serial.print('\t'); Serial.print('\t'); Serial.print("PD_output: "); Serial.print(val_1); Serial.print('\t'); Serial.print('\t'); Serial.print("PD_2X_output: "); Serial.println(val_0); + }} + if (plotter == 1) + {{ + Serial.println(val_1); + }} + //delay(200); + }} + avg_greenS1 = intensity_storage / temp_counter; + delay(500); + + setOutput(0, GAIN_1, 1, 0); + setOutput(1, GAIN_1, 1, blue_dac); + memset (moving_average_array, 0, 10); + temp_counter = 0; + intensity_storage = 0; + for (int i = 0; i < blue_samples + blue_stable_time; i += 1) + {{ + + int16_t val_0 = ADS.readADC(0); + int16_t val_1 = ADS.readADC(1); + int16_t val_2 = ADS.readADC(2); + int16_t val_3 = ADS.readADC(3); + moving_average_array[i % 10] = val_1; + //Serial.println(moving_average_array[0]); + for (int j = 0; j < 10; j++) + {{ + sorting_array[j] = moving_average_array[j]; + }} + //Serial.println(sorting_array[0]); + if (i >= blue_stable_time) + {{ + for (int j = 0; j < 6; j++) + {{ + for (int k = 0; k < (9 - j); k++) + {{ + if (sorting_array[k] > sorting_array[k + 1]) + {{ + temp_sort = sorting_array[k]; + sorting_array[k] = sorting_array[k + 1]; + sorting_array[k + 1] = temp_sort; + }} + }} + }} + moving_average = (sorting_array[4] / 2) + (sorting_array[5] / 2); + if ((val_1 > (moving_average * 0.9)) and (val_1 < (moving_average * 1.1))) + {{ + intensity_storage += val_1; + + temp_counter++; + }} + }} + if (intensity_display == 1) + {{ + // Serial.print("DAC_value : "); Serial.print(i); Serial.print('\t'); Serial.print('\t'); Serial.print("Blue_Resistor_drop: "); Serial.print(val_3); + // Serial.print('\t'); Serial.print('\t'); Serial.print("PD_output: "); Serial.print(val_1); Serial.print('\t'); Serial.print('\t'); Serial.print("PD_2X_output: "); Serial.println(val_0); + }} + if (plotter == 1) + {{ + Serial.println(val_1); + }} + //delay(200); + }} + avg_blueS1 = intensity_storage / temp_counter; + + setOutput(0, GAIN_1, 1, 0); + setOutput(1, GAIN_1, 1, 0); +delay(100); + setOutput(1, GAIN_1, 1, 0); + setOutput(0, GAIN_1, 1, green_dac); + memset (moving_average_array, 0, 10); + temp_counter = 0; + intensity_storage = 0; + f = ADS.toVoltage(1); // voltage factor + for (int i = 0; i < green_samples + green_stable_time; i += 1) + {{ + + int16_t val_0 = ADS.readADC(0); + int16_t val_1 = ADS.readADC(1); + int16_t val_2 = ADS.readADC(2); + int16_t val_3 = ADS.readADC(3); + moving_average_array[i % 10] = val_1; + for (int j = 0; j < 10; j++) + {{ + sorting_array[j] = moving_average_array[j]; + }} + if (i >= green_stable_time) + {{ + for (int j = 0; j < 6; j++) + {{ + for (int k = 0; k < (9 - j); k++) + {{ + if (sorting_array[k] > sorting_array[k + 1]) + {{ + temp_sort = sorting_array[k]; + sorting_array[k] = sorting_array[k + 1]; + sorting_array[k + 1] = temp_sort; + }} + }} + }} + moving_average = (sorting_array[4] / 2) + (sorting_array[5] / 2); + if ((val_1 > (moving_average * 0.9)) and (val_1 < (moving_average * 1.1))) + {{ + intensity_storage += val_1; + temp_counter++; + }} + }} + + if (intensity_display == 1) + {{ + // Serial.print("DAC_value : "); Serial.print(i); Serial.print('\t'); Serial.print('\t'); Serial.print("Green_Resistor_drop: "); Serial.print(val_2); + // Serial.print('\t'); Serial.print('\t'); Serial.print("PD_output: "); Serial.print(val_1); Serial.print('\t'); Serial.print('\t'); Serial.print("PD_2X_output: "); Serial.println(val_0); + }} + if (plotter == 1) + {{ + Serial.println(val_1); + }} + //delay(200); + }} + avg_greenS2 = intensity_storage / temp_counter; + delay(500); + + setOutput(0, GAIN_1, 1, 0); + setOutput(1, GAIN_1, 1, blue_dac); + memset (moving_average_array, 0, 10); + temp_counter = 0; + intensity_storage = 0; + for (int i = 0; i < blue_samples + blue_stable_time; i += 1) + {{ + + int16_t val_0 = ADS.readADC(0); + int16_t val_1 = ADS.readADC(1); + int16_t val_2 = ADS.readADC(2); + int16_t val_3 = ADS.readADC(3); + moving_average_array[i % 10] = val_1; + //Serial.println(moving_average_array[0]); + for (int j = 0; j < 10; j++) + {{ + sorting_array[j] = moving_average_array[j]; + }} + //Serial.println(sorting_array[0]); + if (i >= blue_stable_time) + {{ + for (int j = 0; j < 6; j++) + {{ + for (int k = 0; k < (9 - j); k++) + {{ + if (sorting_array[k] > sorting_array[k + 1]) + {{ + temp_sort = sorting_array[k]; + sorting_array[k] = sorting_array[k + 1]; + sorting_array[k + 1] = temp_sort; + }} + }} + }} + moving_average = (sorting_array[4] / 2) + (sorting_array[5] / 2); + if ((val_1 > (moving_average * 0.9)) and (val_1 < (moving_average * 1.1))) + {{ + intensity_storage += val_1; + + temp_counter++; + }} + }} + if (intensity_display == 1) + {{ + // Serial.print("DAC_value : "); Serial.print(i); Serial.print('\t'); Serial.print('\t'); Serial.print("Blue_Resistor_drop: "); Serial.print(val_3); + // Serial.print('\t'); Serial.print('\t'); Serial.print("PD_output: "); Serial.print(val_1); Serial.print('\t'); Serial.print('\t'); Serial.print("PD_2X_output: "); Serial.println(val_0); + }} + if (plotter == 1) + {{ + Serial.println(val_1); + }} + //delay(200); + }} + avg_blueS2 = intensity_storage / temp_counter; + + setOutput(0, GAIN_1, 1, 0); + setOutput(1, GAIN_1, 1, 0); +delay(100); + setOutput(1, GAIN_1, 1, 0); + setOutput(0, GAIN_1, 1, green_dac); + memset (moving_average_array, 0, 10); + temp_counter = 0; + intensity_storage = 0; + f = ADS.toVoltage(1); // voltage factor + for (int i = 0; i < green_samples + green_stable_time; i += 1) + {{ + + int16_t val_0 = ADS.readADC(0); + int16_t val_1 = ADS.readADC(1); + int16_t val_2 = ADS.readADC(2); + int16_t val_3 = ADS.readADC(3); + moving_average_array[i % 10] = val_1; + for (int j = 0; j < 10; j++) + {{ + sorting_array[j] = moving_average_array[j]; + }} + if (i >= green_stable_time) + {{ + for (int j = 0; j < 6; j++) + {{ + for (int k = 0; k < (9 - j); k++) + {{ + if (sorting_array[k] > sorting_array[k + 1]) + {{ + temp_sort = sorting_array[k]; + sorting_array[k] = sorting_array[k + 1]; + sorting_array[k + 1] = temp_sort; + }} + }} + }} + moving_average = (sorting_array[4] / 2) + (sorting_array[5] / 2); + if ((val_1 > (moving_average * 0.9)) and (val_1 < (moving_average * 1.1))) + {{ + intensity_storage += val_1; + temp_counter++; + }} + }} + + if (intensity_display == 1) + {{ + // Serial.print("DAC_value : "); Serial.print(i); Serial.print('\t'); Serial.print('\t'); Serial.print("Green_Resistor_drop: "); Serial.print(val_2); + // Serial.print('\t'); Serial.print('\t'); Serial.print("PD_output: "); Serial.print(val_1); Serial.print('\t'); Serial.print('\t'); Serial.print("PD_2X_output: "); Serial.println(val_0); + }} + if (plotter == 1) + {{ + Serial.println(val_1); + }} + //delay(200); + }} + avg_greenS3 = intensity_storage / temp_counter; + delay(500); + + setOutput(0, GAIN_1, 1, 0); + setOutput(1, GAIN_1, 1, blue_dac); + memset (moving_average_array, 0, 10); + temp_counter = 0; + intensity_storage = 0; + for (int i = 0; i < blue_samples + blue_stable_time; i += 1) + {{ + + int16_t val_0 = ADS.readADC(0); + int16_t val_1 = ADS.readADC(1); + int16_t val_2 = ADS.readADC(2); + int16_t val_3 = ADS.readADC(3); + moving_average_array[i % 10] = val_1; + //Serial.println(moving_average_array[0]); + for (int j = 0; j < 10; j++) + {{ + sorting_array[j] = moving_average_array[j]; + }} + //Serial.println(sorting_array[0]); + if (i >= blue_stable_time) + {{ + for (int j = 0; j < 6; j++) + {{ + for (int k = 0; k < (9 - j); k++) + {{ + if (sorting_array[k] > sorting_array[k + 1]) + {{ + temp_sort = sorting_array[k]; + sorting_array[k] = sorting_array[k + 1]; + sorting_array[k + 1] = temp_sort; + }} + }} + }} + moving_average = (sorting_array[4] / 2) + (sorting_array[5] / 2); + if ((val_1 > (moving_average * 0.9)) and (val_1 < (moving_average * 1.1))) + {{ + intensity_storage += val_1; + + temp_counter++; + }} + }} + if (intensity_display == 1) + {{ + // Serial.print("DAC_value : "); Serial.print(i); Serial.print('\t'); Serial.print('\t'); Serial.print("Blue_Resistor_drop: "); Serial.print(val_3); + // Serial.print('\t'); Serial.print('\t'); Serial.print("PD_output: "); Serial.print(val_1); Serial.print('\t'); Serial.print('\t'); Serial.print("PD_2X_output: "); Serial.println(val_0); + }} + if (plotter == 1) + {{ + Serial.println(val_1); + }} + //delay(200); + }} + avg_blueS3 = intensity_storage / temp_counter; + + setOutput(0, GAIN_1, 1, 0); + setOutput(1, GAIN_1, 1, 0); + avg_greenS = (avg_greenS1 + avg_greenS2 + avg_greenS3) / 3; + avg_blueS = (avg_blueS1 + avg_blueS2 + avg_blueS3) / 3; + Serial.print("ok Green Intensity: "); Serial.println(avg_greenS); + Serial.print("ok Blue Intensity: "); Serial.println(avg_blueS); + Serial.println("#Sample Completed"); + delay(300); +}} + """.format(led1dac=led1, led2dac=led2)) sketch += H("hello.h", """ void hello() { - Serial.println("HemoCube QC"); + Serial.println("HemoCube QC 1"); } """) @@ -100,7 +918,7 @@ void loop() {{ # sketch.upload(port='ttyUSB') # sketch.upload(port='/dev/cu.usbserial-1420') #/dev/cu.usbmodem - log_view.add_log("upload: \n\n" + sketch.output) + log_view.add_log("uploading... \n\n" + sketch.output) print(sketch.output) def showdialog():