Nucleo-transfer

Dependencies:   ADS1015 MPU6050 PixelArray PixelArray-Nucleo mbed WS2813

Fork of Nucleo-transfer by Momo Medical

Revision:
36:d10f368d037b
Parent:
35:e9026c40726e
Child:
37:d8f7b2b5719a
--- a/Sensorplate/main.cpp	Thu Oct 12 09:30:58 2017 +0000
+++ b/Sensorplate/main.cpp	Wed Oct 18 14:12:11 2017 +0000
@@ -1,112 +1,129 @@
-/********************* CODE INFORMATIE ******************************
+/********************* CODE INFORMATON ******************************
 Date of creation:           30-09-2017
 Authors:                    Danny Eldering & Ricardo Molenaar
 co-authors:                 Menno Gravemaker
 (c) Copyright by Momo Medical BV.
 
-Current version name:                   2.1.2
-Date of modification:                   11-10-2017
-Purpose of this file:                   Oneliner of purpose
-Update ‘what’s new in this version?’:   short meaningful description (no more than 3 lines)
-Todo:
-Source file:                            http://mbed.com
+Current version name:                   2.1.3
+Date of modification:                   18-10-2017
+Purpose of this file:                   Code for LPC1768 microcontroller for controlling buttons, LED's and communicate to PI
+Update ‘what’s new in this version?’:   New structure added.
+                                        Readability improved.                                        
+                                        Code optimized (variables and functions).
+Todo:                                   -> Fix LED issue (yellow and red flashes at random moments);
+                                        -> Optimize functions / improve readability; 
+                                        -> Split functions in seperate files?;
+                                        -> Fix when sensorplate is not connected;
+                                        -> Rule 570: if statement change to turn off LED's when power is plugged out (also related to rule 106).
+                                        -> For the speaker two outputs of the uC are used. Add MOSFET with external supply and control these by uC?
+Source file:                            http://mbed.com/
 
+Information files:
+(1) Flowchart:                          
+(2) Table serial communication:         https://docs.google.com/spreadsheets/d/1kHlithHxtoMDGvbcdH8vwSw5W5ArxlwDPsyfra1dtQM/edit?usp=drive_web
 */
 
 /************************ CONFIG ***********************************/
 
-#include "mbed.h"
+#include "mbed.h"                                                                   // Include files and define parameters.
 #include "Adafruit_ADS1015.h"
 #include "MPU6050.h"
 #include "MPU6050_belt.h"
 #include "neopixel.h"
-#define NLED (3)                                                            // to do: nled uitschrijven
+#define NUMBER_LED_FRONT (3)                                                       
 #define ONE_COLOR
 
-InterruptIn lock(p15);                                                      // Interrupts for buttons. todo: button toevoegen
-InterruptIn reposition(p17);
-InterruptIn mute(p16);
-InterruptIn new_patient(p18);
+InterruptIn button_lock(p15);                                                       // Input on intterupt base decleration. 
+InterruptIn button_reposition(p17);
+InterruptIn button_mute(p16);
+InterruptIn button_new_patient(p18);
 
-DigitalOut  LED_intern1(LED1);                                              // todo: intern veranderen in on_dev_board oid
-DigitalOut  LED_intern2(LED2);
-DigitalOut  LED_intern3(LED3);
-DigitalOut  LED_intern4(LED4);
-neopixel::PixelArray array(p11);                                            // todo: array -> wat ermee gedaan wordt
-
-Timer lock_hold_timer;
-Timer calibration_hold_timer;
-Timer delay;                                                                // todo: delay -> delay_between_2_buttons_pressed
-Timer speaker_timer;
-Timer test_timer;                                                           // todo: naar testsectie
-
+DigitalOut  LED_on_dev_board1(LED1);                                                // Decleration of digital outputs.                                          
+DigitalOut  LED_on_dev_board2(LED2);
+DigitalOut  LED_on_dev_board3(LED3);
+DigitalOut  LED_on_dev_board4(LED4);
 DigitalOut speaker1(p21);
 DigitalOut speaker2(p22);
-PwmOut lock_LED(p23);                                                       // todo: button toevoegen bijv. feedback_LED_lock
-PwmOut reposition_LED(p25);
-PwmOut mute_LED(p26);
-PwmOut new_patient_LED(p24);
-// todo: comments for library hardcoding etc.
-I2C i2c(p28, p27);                  // I2C   todo: i2c_sensorplaat
-I2C i2cAccu(p9, p10);               // I2C for accupack todo: i2c_voltage_measurement
-MPU6050 agu(p28,p27);               // Accelerometer/Gyroscope Unit
-MPU6050_belt agu_belt(p28,p27);     // Accelerometer/Gyroscope Unit Belt
-Adafruit_ADS1115 pr1(&i2c, 0x48);   // first PiëzoResistive ADC
-Adafruit_ADS1115 pr2(&i2c, 0x49);   // second PiëzoResistive ADC
-Adafruit_ADS1115 pel(&i2c, 0x4B);   // PiëzoElectric ADC
-Adafruit_ADS1115 adsAccu(&i2cAccu, 0x48);
-Serial pc(USBTX, USBRX); // tx, rx  // Serial USB connection todo -> test en uart toevoegen ook bij pi
-Serial pi(p13, p14);     // tx, rx  // Setup serial communication for pi.
-Timer t;                            // Timer for equally time-spaced samples
-Ticker sample_cycle;                // Polling cycle
+neopixel::PixelArray indicator_LEDs(p11);                                           
+
+PwmOut lock_feedback_LED(p23);                                                      // Declaration of pulse with modulation outputs.                                
+PwmOut reposition_feedback_LED(p25);
+PwmOut mute_feedback_LED(p26);
+PwmOut new_patient_feedback_LED(p24);
+
+Timer button_lock_hold_timer;                                                       // 
+Timer button_calibration_hold_timer;                                                // Timer for calibration function (new patient holding 5 seconds).
+Timer delay_between_button_pressed;                                                 // Timer for time between two buttons (to prevent pressing buttons simultaneously). 
+Timer speaker_timer;                                                                // Timer for speaker activation.
+Timer piezo_electric_sample_timer;                                                  // Timer for equally time-spaced samples.
 
-// todo: uitschrijven namen
+/* 
+The code underneath this commentbox has some fixed parameters for serial/ADC reading:
+-> The address for the angle_device_reference_belt is set to 0x68 in the file MPU6050_belt (rule number: 19);
+-> The adress for the angle_device_sensorplate is set to 0x69 in the file MPU6050.h (rule number: 19);
+-> This is because of using the same I2C line;
+-> For detailed information/questions about this item, please read the technical manual or contact: Ricardo Molenaar | ricardo.molenaar@gmail.com
+*/
+I2C i2c_sensorplate_adc(p28, p27);                                                  // I2C for sensorplate.
+I2C i2c_power_adc(p9, p10);                                                         // I2C for accupack. 
+MPU6050 angle_device_sensorplate(p28,p27);                                          // i2c pins // i2c address hardcoded 0x68.
+MPU6050_belt angle_device_reference_belt(p28,p27);                                  // i2c pins // i2c address hardcoded 0x69.
+Adafruit_ADS1115 piezo_resistive_adc1(&i2c_sensorplate_adc, 0x48);                  // i2c pins, i2c address.
+Adafruit_ADS1115 piezo_resistive_adc2(&i2c_sensorplate_adc, 0x49);                  // i2c pins, i2c address.
+Adafruit_ADS1115 piezo_electric_adc(&i2c_sensorplate_adc, 0x4B);                    // i2c pins, i2c address.
+Adafruit_ADS1115 adsAccu(&i2c_power_adc, 0x48);                                     // i2c pins, i2c address.
+Serial usb_serial(USBTX, USBRX);                                                    // tx, rx  
+Serial pi_serial(p13, p14);                                                         // tx, rx  
+Ticker total_readout_cycle;                                                         // Polling cycle.
+// End of commentbox related to the serial configuration/ADC reading components. 
 
 int boot_delay_ms = 500;
-int cycle_time = 100000;            // Cycle time in us
-int i2c_freq = 400000;              // I2C Frequency
-int baud = 115200;                  // Baud rate
-short res[8] = {0,0,0,0,0,0,0,0};   // 8 PR sensors 1 time per cycle
-short elec[5] = {0,0,0,0,0};        // 1 PE sensor 5 times per cycle
-int angle = 0;                      // Accelerometer Z-axis
+int total_readout_cycle_time_us = 100000;                                           // Cycle time in us.
+int i2c_freq = 400000;                                                              // I2C Frequency.
+int baud_rate = 115200;                                                             // Baud rate.
+short piezo_resistive_array[8] = {0,0,0,0,0,0,0,0};                                 // 8 PR sensors 1 time per cycle.
+short piezo_electric_array[5] = {0,0,0,0,0};                                        // 1 PE sensor 5 times per cycle.
+int angle = 0;                                                                      // Accelerometer Z-axis.
 int k = 0;
-float acce[3];                      // Raw accelerometer data
-float gyro[3];                      // Raw gyroscope data
-float acce_belt[3];                 // Raw accelerometer data from belt
-float gyro_belt[3];                 // Raw gyroscope data from belt
-char LED_colour = 'g';                                                            // Variable to set LED colour.
-bool lock_state = 0, lock_flag = 0, mute_state = 0, alarm = 0, calibration_flag = 0, intensity_select = 1;            // Boolean variables for states logging.
-bool mute_flag = 0, new_patient_flag = 0, reposition_flag = 0;
+float accelerometer_sensorplate[3];                                                 // Raw accelerometer data.
+float gyroscope_sensorplate[3];                                                     // Raw gyroscope data.
+float accelerometer_reference_belt[3];                                              // Raw accelerometer data from belt.
+float gyroscope_reference_belt[3];                                                  // Raw gyroscope data from belt.
+char LED_colour = 'g';                                                              // Variable to set LED colour (standard set to green, untill PI sends other character).
+bool lock_state = 0, lock_flag = 0, mute_state = 0, alarm = 0, calibration_flag = 0, intensity_select = 1;            // Boolean variables for logging states.
+bool mute_flag = 0, new_patient_flag = 0, reposition_flag = 0;                      // Flag variables.
 bool speaker_state = 0, LED_red_state = 0, LED_yellow_state = 0, LED_green_state = 0, power_plug_state = 0;
 bool speaker_logged = 0, LED_red_logged = 0, LED_yellow_logged = 0, LED_green_logged = 0, power_plug_logged = 0;
-int locktime_ms = 2000;                                                     // Waittime for lock user interface in ms.
-int calibrationtime_ms = 5000;                                              // Time to press new_patient button for calibration system.
-int calibration_flash;                                                      // Variable for flash LED's to indicate calibration.
-int buttondelay_ms = 750;                                                   // Button delay in ms.
-int delay_lock_interface = 3000*60;                                         // Delay for non using interface locktime.
-int speaker_active_ms = 750;                                                // Time to iterate speaker on and off when alarm occurs.
-int alarm_voltage = 5867;                                                   // Needed voltage for alarm expressed as a digital 15 bit value (=20% of max battery voltage)
-int red_var, green_var, blue_var;                                           // Variables to set LED intensity.
+int locktime_ms = 2000;                                                             // Waittime for lock user interface in ms.
+int calibrationtime_ms = 5000;                                                      // Time to press new_patient button for calibration system.
+int calibration_flash;                                                              // Variable for flash LED's to indicate calibration.
+int buttondelay_ms = 750;                                                           // Button delay in ms.
+int delay_lock_interface = 3000*60;                                                 // Delay for non using interface locktime.
+int speaker_active_ms = 750;                                                        // Time to iterate speaker on and off when alarm occurs.
+int alarm_voltage = 5867;                                                           // Needed voltage for alarm expressed as a digital 15 bit value (=20% of max battery voltage).
+int LED_red_intensity, LED_blue_intensity, LED_green_intensity;                     // Variables to set LED intensity.
 short batteryvoltage_current = 0, batteryvoltage_last = 0, powervoltage_current, powervoltage_last;                  // Variables to manage batteryvoltage.
-int intensity_day = 40, intensity_night = 10;                               // Intensity settings for LED's to wall.
-double intensity, control_LED_intensity = 0;                                // Variable between 0 and 1 to set the intensity of the LED's above the buttons.
-int a; // Test
+int digital_value_ADC_powervoltage_unplugged = 20000;                                // Digital value to set the indicating LEDs to wall blue (should be set off later).
+int intensity_day = 40, intensity_night = 10;                                       // Intensity settings for LED's to wall.
+double intensity, control_LED_intensity = 0;                                        // Variable between 0 and 1 to set the intensity of the LED's above the buttons.
 
 /*************************** TEST ********************************/
-// Verify algoritm function: for belt activation, set test_belt 1 (connect pin p20 to 3.3V)
+// Verify algoritm function: for belt activation, set test_belt 1 (connect pin p20 to 3.3V).
+Timer test_timer;                                                           
 DigitalIn test_pin(p30, PullDown);
-bool test_belt = 1; //test_pin;
 
-// Verify if interrupts are working properly
+// Variable to set if belt is used to test algorithm: 
+bool test_belt = 0; 
 
-
-// Verify if parameters are
+// Set test mode on (log functions to pc serial: interrupts, LED intensity and serial messages): 
 bool test_mode = 0;
 
+// Variable for connection test (should be changed):
+int connection_test_sensorplate; 
 
 /*************************** CODE ********************************/
 
-void set_intensity()                                                        // Function to set the intensity for the LED's.
+void set_intensity_LEDs()                                                           // Function to set the intensity for the LED's.
 {
     if (intensity_select == 1) {
         intensity = intensity_day;
@@ -115,334 +132,353 @@
     }
     control_LED_intensity = (intensity/100);
 
-    if (test_mode == 1) {
-        pc.printf("Intensity LED's shines to wall = %f\n", intensity);
-        pc.printf("Intensity LED's above buttons = %f\n", control_LED_intensity);
+    if (test_mode == 1) {                                                           // If statement for test purposal LED_intensity values.
+        usb_serial.printf("Intensity LED's shines to wall = %f\n", intensity);
+        usb_serial.printf("Intensity LED's above buttons = %f\n", control_LED_intensity);
     }
 }
 
-void serial_read()                                                          // Serial read for select LED intensity and colour.
+void serial_read()                                                                  // Function for serial read for select LED intensity and colour.
 {
-    if (pi.readable()) {
+    if (pi_serial.readable()) {                                                     // Function to check if pi is readable.
         char message[10];
-        pi.scanf("%s", message);
-        pc.printf("Message = %s, Intensity_select = %d en LED_colour = %c\n", message, intensity_select, LED_colour);
+        pi_serial.scanf("%s", message);
         
-        if (intensity_select != (message[0]-'0')) {
+        if (test_mode == 1) {                                                       // If statement for test purposal. 
+            usb_serial.printf("Message = %s, Intensity_select = %d en LED_colour = %c\n", message, intensity_select, LED_colour);
+        }
+        
+        if (intensity_select != (message[0]-'0')) {                                 // Read intensity for LED's variable from PI. 
             intensity_select = (message[0]-'0');
         }
 
-        if (LED_colour != message[1]) {
+        if (LED_colour != message[1]) {                                             // Read character from PI to set LED_colour.
             LED_colour = message[1];
         }
 
-        pc.printf("Intensity_select = %d en LED_colour = %c\n", intensity_select, LED_colour);
+        usb_serial.printf("Intensity_select = %d en LED_colour = %c\n", intensity_select, LED_colour);
 
         if (test_mode == 1) {
-            pc.printf("message: %s\n", message);
+            usb_serial.printf("Message: %s\n", message);
         }
     }
 }
 
-void serial_log()
+void serial_log()                                                                   // Function for serial logging. See link to table with code declarations above in code.
 {
-    if (mute_flag == 1) {
-        pi.printf(">01\n");
+    if (mute_flag == 1) {                                                           // If statement to control logging for mute button. 
+        pi_serial.printf(">01\n");
 
-        if (test_mode == 1) {
-            pc.printf(">01\n");
+        if (test_mode == 1) {                                                       // If statement for test purposal. 
+            usb_serial.printf(">01\n");
         }
 
         mute_flag = 0;
     }
 
-    if (new_patient_flag == 1) {
-        pi.printf(">03\n");
+    if (new_patient_flag == 1) {                                                    // If statement to control logging for new patient button.
+        pi_serial.printf(">03\n");
 
-        if (test_mode == 1) {
-            pc.printf(">03\n");
+        if (test_mode == 1) {                                                       // If statement for test purposal. 
+            usb_serial.printf(">03\n");
         }
 
         new_patient_flag = 0;
     }
 
-    if (reposition_flag == 1) {
-        pi.printf(">02\n");
+    if (reposition_flag == 1) {                                                     // If statement to control logging for reposition button. 
+        pi_serial.printf(">02\n");
 
-        if (test_mode == 1) {
-            pc.printf(">02\n");
+        if (test_mode == 1) {                                                       // If statement for test purposal. 
+            usb_serial.printf(">02\n");
         }
 
         reposition_flag = 0;
     }
 
-    if (batteryvoltage_current != batteryvoltage_last) {
-        pi.printf("%%" "%d\n", batteryvoltage_current);
+    if (batteryvoltage_current != batteryvoltage_last) {                            // If statement to control logging for batteryvoltage.           
+        pi_serial.printf("%%" "%d\n", batteryvoltage_current);
 
-        if (test_mode == 1) {
-            pc.printf("%%" "%d\n", batteryvoltage_current);
+        if (test_mode == 1) {                                                       // If statement for test purposal. 
+            usb_serial.printf("%%" "%d\n", batteryvoltage_current);
         }
 
         batteryvoltage_last = batteryvoltage_current;
     }
 
-    if (LED_red_logged != LED_red_state) {
+    if (LED_red_logged != LED_red_state) {                                          // If statement to control logging for LED_red.
         if (LED_red_state == 1) {
-            pi.printf("&04\n");
+            pi_serial.printf("&04\n");
             LED_red_logged = LED_red_state;
             if (test_mode == 1) {
-                pc.printf("&04\n");
+                usb_serial.printf("&04\n");
             }
         }
+        
         if (LED_red_state == 0) {
-            pi.printf("&40\n");
+            pi_serial.printf("&40\n");
             LED_red_logged = LED_red_state;
             if (test_mode == 1) {
-                pc.printf("&40\n");
+                usb_serial.printf("&40\n");
             }
         }
     }
 
-    if (LED_yellow_logged != LED_yellow_state) {
-        if (LED_yellow_state == 1) {
-            pi.printf("&06\n");
+    if (LED_yellow_logged != LED_yellow_state) {                                    // If statement to control logging for LED_yellow.
+        if (LED_yellow_state == 1) {    
+            pi_serial.printf("&06\n");
             LED_yellow_logged = LED_yellow_state;
             if (test_mode == 1) {
-                pc.printf("&06\n");
+                usb_serial.printf("&06\n");
             }
         }
         if (LED_yellow_state == 0) {
-            pi.printf("&60\n");
+            pi_serial.printf("&60\n");
             LED_yellow_logged = LED_yellow_state;
             if (test_mode == 1) {
-                pc.printf("&60\n");
+                usb_serial.printf("&60\n");
             }
         }
     }
 
-    if (LED_green_logged != LED_green_state) {
+    if (LED_green_logged != LED_green_state) {                                      // If statement to control logging for LED_green.
         if (LED_green_state == 1) {
-            pi.printf("&05\n");
+            pi_serial.printf("&05\n");
             LED_green_logged = LED_green_state;
+        
             if (test_mode == 1) {
-                pc.printf("&05\n");
+                usb_serial.printf("&05\n");
             }
         }
+        
         if (LED_green_state == 0) {
-            pi.printf("&50\n");
+            pi_serial.printf("&50\n");
             LED_green_logged = LED_green_state;
+        
             if (test_mode == 1) {
-                pc.printf("&50\n");
+                usb_serial.printf("&50\n");
             }
         }
     }
 
-    if (speaker_logged != speaker_state) {
+    if (speaker_logged != speaker_state) {                                          // If statement to control logging for speaker. 
         if (speaker_state == 1) {
-            pi.printf("&07\n");
+            pi_serial.printf("&07\n");
             speaker_logged = speaker_state;
-            if (test_mode == 1) {
-                pc.printf("&07\n");
+            
+            if (test_mode == 1) {                                                   // If statement for test purposal.
+                usb_serial.printf("&07\n");
             }
         }
+        
         if (speaker_state == 0) {
-            pi.printf("&70\n");
+            pi_serial.printf("&70\n");
             speaker_logged = speaker_state;
-            if (test_mode == 1) {
-                pc.printf("&70\n");
+            
+            if (test_mode == 1) {                                                   // If statement for test purposal.
+                usb_serial.printf("&70\n");
             }
         }
     }
 
-    if (power_plug_logged != power_plug_state) {
+    if (power_plug_logged != power_plug_state) {                                    // If statement to control the logging for the state of the power plug.
         if (power_plug_state == 1) {
-            pi.printf("#08\n");
-            if (test_mode == 1) {
-                pc.printf("#08\n");
+            pi_serial.printf("#08\n");
+            
+            if (test_mode == 1) {                                                   // If statement for test purposal.
+                usb_serial.printf("#08\n");
             }
             power_plug_logged = power_plug_state;
         }
+        
         if (power_plug_state == 0) {
-            pi.printf("#80\n");
-            if (test_mode == 1) {
-                pc.printf("#80\n");
+            pi_serial.printf("#80\n");
+            
+            if (test_mode == 1) {                                                   // If statement for test purposal.
+                usb_serial.printf("#80\n");
             }
             power_plug_logged = power_plug_state;
         }
     }
-    if (a == 1) {
-        //receiving order: 8 resistive sensors, 5 electric readings
-        pi.printf("!,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,\n", res[4], res[7], res[6], res[5], res[1], res[0], res[2], res[3], elec[0], elec[1], elec[2], elec[3], elec[4]); // print all to serial port
+    
+    if (connection_test_sensorplate == 1) {                                                     // If statement for sending serial information sensorplate data when connection test is active. 
+        // Receiving order sensor information: 8 resistive sensors, 5 electric readings. Is splitted in two parts - part 1/2. 
+        pi_serial.printf("!,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,\n", piezo_resistive_array[4], piezo_resistive_array[7], piezo_resistive_array[6], piezo_resistive_array[5], piezo_resistive_array[1], piezo_resistive_array[0], piezo_resistive_array[2], piezo_resistive_array[3], piezo_electric_array[0], piezo_electric_array[1], piezo_electric_array[2], piezo_electric_array[3], piezo_electric_array[4]); // print all to serial port
+        
         if (test_mode == 1) {
-            pc.printf("!,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,\n", res[4], res[7], res[6], res[5], res[1], res[0], res[2], res[3], elec[0], elec[1], elec[2], elec[3], elec[4]); // print all to serial port
+            usb_serial.printf("!,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,\n", piezo_resistive_array[4], piezo_resistive_array[7], piezo_resistive_array[6], piezo_resistive_array[5], piezo_resistive_array[1], piezo_resistive_array[0], piezo_resistive_array[2], piezo_resistive_array[3], piezo_electric_array[0], piezo_electric_array[1], piezo_electric_array[2], piezo_electric_array[3], piezo_electric_array[4]); // print all to serial port
         }
     }
 
 }
 
-void colour_select(char LED_colour)                                         // Function to select the colour.
+void colour_select_indicating_LED_wall(char LED_colour)                             // Function to select the colour for LED's to wall (values comes from algorithm).
 {
-    set_intensity();                                                        // Call function set_intensity
+    set_intensity_LEDs();                                                           // Call function set_intensity_LEDs to set the intensity for LED's to wall and above buttons.
     
-    if ((LED_colour == 'r') || (LED_colour == 'g') || (LED_colour == 'b') || (LED_colour == 'y')) { 
-        red_var = 0;
-        green_var = 0;
-        blue_var = 0;
+    if ((LED_colour == 'r') || (LED_colour == 'g') || (LED_colour == 'b') || (LED_colour == 'y')) { // If statement to prevent potential errors in communication.
+        LED_red_intensity = 0;                                                                // Reset 
+        LED_green_intensity = 0;
+        LED_blue_intensity = 0;
         
-        if (LED_colour == 'r') {
-            red_var = (2.55*intensity);
-            green_var = 0;
-            blue_var = 0;
+        if (LED_colour == 'r') {                                                    // Set LED_colour to red.
+            LED_red_intensity = (2.55*intensity);                                             // 255 / 100 = 2.55 (8 - bit digital value; 0-255 = 256 steps); intensity is a value between 0 and 100. 
+            LED_green_intensity = 0;
+            LED_blue_intensity = 0;
             LED_red_state = 1;
         } else {
             LED_red_state = 0;
         }
     
-        if (LED_colour == 'y') {
-            red_var = (2.55*intensity);
-            green_var = (2.55*intensity);
-            blue_var = 0;
+        if (LED_colour == 'y') {                                                    // Set LED_colour to yellow.
+            LED_red_intensity = (2.55*intensity);
+            LED_green_intensity = (2.55*intensity);
+            LED_blue_intensity = 0;
             LED_yellow_state = 1;
         } else {
             LED_green_state = 0;
         }
     
-        if (LED_colour == 'g') {
-            red_var = 0;
-            green_var = (2.55*intensity);
-            blue_var = 0;
+        if (LED_colour == 'g') {                                                    // Set LED_colour to green.
+            LED_red_intensity = 0;
+            LED_green_intensity = (2.55*intensity);
+            LED_blue_intensity = 0;
             LED_green_state = 1;
         } else {
             LED_green_state = 0;
         }
     
-        if (LED_colour == 'b') {
-            red_var = 0;
-            green_var = 0;
-            blue_var = (2.55*intensity);
+        if (LED_colour == 'b') {                                                    // Set LED_colour to blue.
+            LED_red_intensity = 0;
+            LED_green_intensity = 0;
+            LED_blue_intensity = (2.55*intensity);
         }
     }
 
-    if (calibration_flash >= 1) {
-        if ((calibration_flash % 2) == 0) {
-            red_var = 255;
-            green_var = 255;
-            blue_var = 255;
-            LED_intern4 = 1;
-        } else {
-            red_var = 0;
-            green_var = 0;
-            blue_var = 0;
-            LED_intern4 = 0;
+    if (calibration_flash >= 1) {                                                   // If statement for flashing LED's (colour = white) when calibration is active. 
+        if ((calibration_flash % 2) == 0) {                                         // If value can not be devided by two, set LED's on.
+            LED_red_intensity = 255;
+            LED_green_intensity = 255;
+            LED_blue_intensity = 255;
+            LED_on_dev_board4 = 1;
+        } else {                                                                    // Else set LED's off.
+            LED_red_intensity = 0;
+            LED_green_intensity = 0;
+            LED_blue_intensity = 0;
+            LED_on_dev_board4 = 0;
         }
         calibration_flash--;
     }
 }
 
-void trigger_lock()                                                         // If rising edge lock button is detected start locktimer.
-{
-    if (test_mode == 1) {
-        pc.printf("Lock triggered.\n");
-    }
-    lock_hold_timer.reset();
-    lock_hold_timer.start();
-    delay.reset();
-    delay.start();
-}
-
-void timer_lock()                                                           // End timer lock.
+void trigger_lock()                                                                 // If rising edge lock button is detected start locktimer.
 {
     if (test_mode == 1) {
-        pc.printf("Lock released.\n");
+        usb_serial.printf("Lock triggered.\n");
     }
-    lock_flag = 0;                                                          // Set lock_flag off.
-    lock_hold_timer.stop();                                                 // Stop and reset holdtimer
-    lock_hold_timer.reset();
+    
+    button_lock_hold_timer.reset();
+    button_lock_hold_timer.start();
+    delay_between_button_pressed.reset();
+    delay_between_button_pressed.start();
 }
 
-void trigger_reposition()
+void end_timer_lock_button()                                                        // End timer lock.
 {
-    if (lock_state == 1 | (delay.read_ms() < buttondelay_ms)) {             // Control statement for lock interface and delay for non using buttons at the same time.
+    if (test_mode == 1) {                                                           // If statement for test purposal. 
+        usb_serial.printf("Lock released.\n");
+    }
+    lock_flag = 0;                                                                  // Set lock_flag off.
+    button_lock_hold_timer.stop();                                                  // Stop and reset holdtimer
+    button_lock_hold_timer.reset();
+}
+
+void reposition_button_triggered()
+{
+    if (lock_state == 1 | (delay_between_button_pressed.read_ms() < buttondelay_ms)) {  // Control statement for lock interface and delay for non using buttons at the same time.
     } else {
-        delay.reset();
-        delay.start();
-        if (test_mode == 1) {
-            pc.printf("Reposition triggered.\n");
-            LED_intern1 = !LED_intern1;
+        delay_between_button_pressed.reset();
+        delay_between_button_pressed.start();
+        if (test_mode == 1) {                                                       // If statement for test purposal. 
+            usb_serial.printf("Reposition triggered.\n");
+            LED_on_dev_board1 = !LED_on_dev_board1;
         }
         reposition_flag = 1;
 
-        reposition_LED = control_LED_intensity;
+        reposition_feedback_LED = control_LED_intensity;
     }
 }
 
-void rise_reposition()
+void rise_reposition()                                                              // Interrupt for rising edge reposition function (deactivation; active low). 
 {
-    if (test_mode == 1) {
-        pc.printf("Reposition released.\n");
+    if (test_mode == 1) {                                                           // If statement for test purposal. 
+        usb_serial.printf("Reposition released.\n");
     }
-    reposition_LED = 0;
+    reposition_feedback_LED = 0;
 
 }
 
-void trigger_mute()
+void mute_button_triggered()
 {
 
-    if (lock_state == 1 | (delay.read_ms() < buttondelay_ms)) {             // Control statement for lock interface and delay for non using buttons at the same time.
+    if (lock_state == 1 | (delay_between_button_pressed.read_ms() < buttondelay_ms)) {  // Control statement for lock interface and delay for non using buttons at the same time.
     } else {
-        delay.reset();
-        delay.start();
+        delay_between_button_pressed.reset();
+        delay_between_button_pressed.start();
         mute_state = !mute_state;
-        if (mute_state == 1) {
-            mute_LED = control_LED_intensity;
+        
+        if (mute_state == 1) {                                                      // If statement for if mute_state is active, set mute feedback LED active.
+            mute_feedback_LED = control_LED_intensity;
         } else {
-            mute_LED = 0;
+            mute_feedback_LED = 0;
         }
-        if (test_mode == 1) {
-            pc.printf("Mute triggered %d.\n",mute_state);
-            LED_intern1 = !LED_intern1;
+        
+        if (test_mode == 1) {                                                       // If statement for test purposal. 
+            usb_serial.printf("Mute triggered %d.\n",mute_state);
+            LED_on_dev_board1 = !LED_on_dev_board1;
         }
 
         mute_flag = 1;
     }
 }
 
-void trigger_new_patient()                                                  // Function to trigger hold timer for new patient calibration function.
+void trigger_new_patient()                                                          // Function to trigger hold timer for new patient and calibration function.
 {
 
-    if (lock_state == 1 | (delay.read_ms() < buttondelay_ms)) {
+    if (lock_state == 1 | (delay_between_button_pressed.read_ms() < buttondelay_ms)) {
     } else {
-        calibration_hold_timer.reset();
-        calibration_hold_timer.start();
-        new_patient_LED = control_LED_intensity;;
-        if (test_mode == 1) {
-            pc.printf("New patient triggered.\n");
+        button_calibration_hold_timer.reset();
+        button_calibration_hold_timer.start();
+        new_patient_feedback_LED = control_LED_intensity;;
+        
+        if (test_mode == 1) {                                                       // If statement for test purposal. 
+            usb_serial.printf("New patient triggered.\n");
         }
     }
 }
 
-void timer_calibration()                                                    // Timer calibration function.
+void activate_new_patient_function()                                                            // Timer calibration function.
 {
-    if (test_mode == 1) {
-        pc.printf("New patient released.\n");
+    if (test_mode == 1) {                                                           // If statement for test purposal. 
+        usb_serial.printf("New patient released.\n");
     }
-    new_patient_LED = 0;
+    new_patient_feedback_LED = 0;
 
-    if (0 < calibration_hold_timer.read_ms() < calibrationtime_ms) {
+    if (0 < button_calibration_hold_timer.read_ms() < calibrationtime_ms) {         // If statement for new_patient function: holdtime for calibration is les then set time to calibrate algorithm.
         new_patient_flag = 1;
     }
 
-    calibration_hold_timer.stop();
-    calibration_hold_timer.reset();
+    button_calibration_hold_timer.stop();                                           // Timer reset for calibration function of new patient button. 
+    button_calibration_hold_timer.reset();
 
-    if (lock_state == 1 | (delay.read_ms() < buttondelay_ms)) {             // Control statement for lock interface and delay for non using buttons at the same time.
+    if (lock_state == 1 | (delay_between_button_pressed.read_ms() < buttondelay_ms)) {  // Control statement for lock interface and delay for non using buttons at the same time.
     } else {
         if (calibration_flag == 0) {
 
-            if (LED_intern1 == 0) {
-                LED_intern1 = 1;
+            if (LED_on_dev_board1 == 0) {                                           // If statement for test purposal. 
+                LED_on_dev_board1 = 1;
             } else {
-                LED_intern1 = 0;
+                LED_on_dev_board1 = 0;
             }
 
         } else {
@@ -451,96 +487,99 @@
     }
 }
 
-void timer_functions()
+void timer_functions()                                                              // Function which contains statements using timers. 
 {
-    if ((lock_hold_timer.read_ms() > locktime_ms) && lock_flag == 0 && lock == 0) { // If statement for lock function.
+    if ((button_lock_hold_timer.read_ms() > locktime_ms) && lock_flag == 0 && button_lock == 0) { // If statement for lock function.
         lock_flag = 1;
-        LED_intern2 = !LED_intern2;
+        LED_on_dev_board2 = !LED_on_dev_board2;
         lock_state = !lock_state;
-        if (lock_state == 0) {
-            lock_LED = control_LED_intensity;
+        
+        if (lock_state == 0) {                                                      // If statement to control lock feedback LED above button. 
+            lock_feedback_LED = control_LED_intensity;
         } else {
-            lock_LED = 0;
+            lock_feedback_LED = 0;
         }
     }
 
-    if ((calibration_hold_timer.read_ms() > calibrationtime_ms) && calibration_flag == 0 && new_patient == 0 && lock_state == 0) { // If statement for calibration system.
+    if ((button_calibration_hold_timer.read_ms() > calibrationtime_ms) && calibration_flag == 0 && button_new_patient == 0 && lock_state == 0) { // If statement for calibration algorithm.
         calibration_flag = 1;
         calibration_flash = 11;
-        if (test_mode == 1) {
-            pc.printf("Calibrate triggered.\n");
+        
+        if (test_mode == 1) {                                                       // If statement for test purposal. 
+            usb_serial.printf("Calibrate triggered.\n");
         }
-        pi.printf(">30\n");                                                 // Print statement for serial communication to inform algorithm to calibrate.
+        
+        pi_serial.printf(">30\n");                                                  // Print statement for serial communication to inform algorithm to calibrate.
     }
 
-    if (delay.read_ms() > delay_lock_interface) {                           // If buttons are not pressed for 3 minutes, set lock active.
+    if (delay_between_button_pressed.read_ms() > delay_lock_interface) {            // If buttons are not pressed for 3 minutes, set lock active.
         lock_state = 1;
-        LED_intern2 = 1;
-        lock_LED = 0;
+        LED_on_dev_board2 = 1;
+        lock_feedback_LED = 0;
     }
 }
 
-void generate(neopixel::Pixel * out, uint32_t index, uintptr_t val)         // Generate LED colour.
+void generate(neopixel::Pixel * out, uint32_t index, uintptr_t val)                 // Generate LED colour function (library function PixelArray is used for this item).
 {
-    out->red   = red_var;
-    out->green = green_var;
-    out->blue  = blue_var;
+    out->red   = LED_red_intensity;
+    out->green = LED_green_intensity;
+    out->blue  = LED_blue_intensity;
 }
 
-void set_ui_LED()                                                           // Control functions for LED above buttons (added because of failures).
+void set_userinterface_LED()                                                                   // Control functions for LED above buttons (added because of failures).
 {
     if (lock_state == 1) {
     } else {
-        if (reposition == 0) {
-            reposition_LED = control_LED_intensity;
+        if (button_reposition == 0) {
+            reposition_feedback_LED = control_LED_intensity;
         } else {
-            reposition_LED = 0;
+            reposition_feedback_LED = 0;
         }
 
-        if (new_patient == 0) {
-            new_patient_LED = control_LED_intensity;
+        if (button_new_patient == 0) {
+            new_patient_feedback_LED = control_LED_intensity;
         } else {
-            new_patient_LED = 0;
+            new_patient_feedback_LED = 0;
         }
     }
 }
 
-void read_voltage()
+void read_voltage()                                                                 // Function for reading voltages from power and battery.
 {
-    if (power_plug_state == 1) {                                            // If supplyvoltage (readed from input) is greater then the setted alarmvoltage.
-        alarm = 0;                                                          // Alarm is off.
+    if (power_plug_state == 1) {                                                    // If supplyvoltage (readed from input) is greater then the setted alarmvoltage.
+        alarm = 0;                                                                  // Alarm is off.
         speaker_state = 0;
     } else {
-        alarm = 1;                                                          // Else alarm is on.
+        alarm = 1;                                                                  // Else alarm is on.
         speaker_state = 1;
     }
 
 
-    if (alarm == 1 && mute_state == 1 && (batteryvoltage_current > alarm_voltage)) {                                  // Set speaker on for 750 ms.
-        speaker1 = 0;                                                       // Set speaker.
+    if (alarm == 1 && mute_state == 1 && (batteryvoltage_current > alarm_voltage)) {// Set speaker on for 750 ms.
+        speaker1 = 0;                                                               // Set speaker.
         speaker2 = 0;
     }
 
     if ((alarm == 1 && mute_state == 0 && (speaker_timer.read_ms() < speaker_active_ms)) || ((batteryvoltage_current < alarm_voltage) && (speaker_timer.read_ms() < speaker_active_ms) && power_plug_state == 0)) { // Set speaker on for 750 ms.
-        speaker1 = 1;                                                       // Set speaker.
+        speaker1 = 1;                                                               // Set speaker.
         speaker2 = 1;
-        speaker_timer.start();                                              // Set timer for speaker to iterate on and off.
+        speaker_timer.start();                                                      // Set timer for speaker to iterate on and off.
     }
 
     if ((speaker_timer.read_ms() > speaker_active_ms) && (speaker_timer.read_ms() < (speaker_active_ms*2))) {
-        speaker1 = 0;                                                       // Turn off speaker (use two outputs because of currentlimiting of one).
+        speaker1 = 0;                                                               // Turn off speaker (use two outputs because of currentlimiting of one).
         speaker2 = 0;
     }
 
     if (speaker_timer.read_ms() > (speaker_active_ms*2)) {
-        speaker_timer.stop();                                               // Stop speaker timer.
+        speaker_timer.stop();                                                       // Stop speaker timer.
         speaker_timer.reset();
     }
+                                                                                    // Read channel 0 from external ADC (batteryvoltage); voltagedeviders are used, 
+    batteryvoltage_current = adsAccu.readADC_SingleEnded(0);                        // because of higher voltage then Vcc of ADC (5.3 V (= Vcc + 0.3 V) max possible at each analog input).
+    powervoltage_current = adsAccu.readADC_SingleEnded(1);                          // Read channel 1 from external ADC (powervoltage).
 
-    batteryvoltage_current = adsAccu.readADC_SingleEnded(0);                // Read channel 0 from external ADC.
-    powervoltage_current = adsAccu.readADC_SingleEnded(1);                  // Read channel 1 from external ADC.
-
-    if (powervoltage_current < 20000) {
+    if (powervoltage_current < digital_value_ADC_powervoltage_unplugged) {                                             // If statement to set LED's to blue. 
         power_plug_state = 0;
         LED_colour = 'b';
     } else {
@@ -550,126 +589,141 @@
 
 void read_adc()
 {
-    t.reset();
-    t.start();
-    a = agu.testConnection();/*
-        pc.printf("a= %d\n",a);
-    if( a==0)
-    {
+    piezo_electric_sample_timer.reset();
+    piezo_electric_sample_timer.start();
+    connection_test_sensorplate = angle_device_sensorplate.testConnection();
+    
+    if (test_mode == 1) {
+        usb_serial.printf("Connection test sensorplate = %d\n", connection_test_sensorplate);
+    }
+    
+    /*
+    if (connection_test_sensorplate == 0) {
         lock_state = 1;
-        LED_intern2 = 1;
-        lock_LED = 0;
-        }*/
-    if (a == 1) {
-        elec[0] = pel.readADC_SingleEnded(0);                               // First PE readout
+        LED_on_dev_board2 = 1;
+        lock_feedback_LED = 0;
+    }*/
+    
+    if (connection_test_sensorplate == 1) {
+        piezo_electric_array[0] = piezo_electric_adc.readADC_SingleEnded(0);            // First PE readout.
 
         for (k = 0; k < 4; k = k + 1) {
-            res[k] =    pr1.readADC_SingleEnded(k);                         // First 4 PR readout
+            piezo_resistive_array[k] =    piezo_resistive_adc1.readADC_SingleEnded(k);  // First 4 PR readout.
         }
-        while(t.read_us()<(1*(cycle_time/5))) {}                            // Wait untill 20% of cycle
 
-        elec[1] = pel.readADC_SingleEnded(0);                               // Second PE readout
+        while(piezo_electric_sample_timer.read_us()<(1*(total_readout_cycle_time_us/5))) {} // Wait untill 20% of cycle.
+
+        piezo_electric_array[1] = piezo_electric_adc.readADC_SingleEnded(0);            // Second PE readout.
 
         for (k = 0; k < 4; k = k + 1) {
-            res[k+4] =  pr2.readADC_SingleEnded(k);                         // Last 4 PR readout
+            piezo_resistive_array[k+4] =  piezo_resistive_adc2.readADC_SingleEnded(k);  // Last 4 PR readout.
         }
-        while(t.read_us()<(2*(cycle_time/5))) {}                            // Wait untill 40% of cycle
 
-        elec[2] = pel.readADC_SingleEnded(0);                               // Third PE readout
+        while(piezo_electric_sample_timer.read_us()<(2*(total_readout_cycle_time_us/5))) {} // Wait untill 40% of cycle.
+
+        piezo_electric_array[2] = piezo_electric_adc.readADC_SingleEnded(0);            // Third PE readout.
 
-        agu.getAccelero(acce);                                              // Get accelerometer data
-        angle = acce[2]*100;
+        angle_device_sensorplate.getAccelero(accelerometer_sensorplate);                // Get accelerometer data.
+        angle = accelerometer_sensorplate[2]*100;
         if(angle == 0) {
-            MPU6050 agu(p28,p27);
-            agu.getAccelero(acce);
-            angle = acce[2]*100;
+            MPU6050 angle_device_sensorplate(p28,p27);
+            angle_device_sensorplate.getAccelero(accelerometer_sensorplate);
+            angle = accelerometer_sensorplate[2]*100;
         }
-        agu.getGyro(gyro);                                                  // Get gyroscope data
+        angle_device_sensorplate.getGyro(gyroscope_sensorplate);                        // Get gyroscope data.
 
         if (test_belt == 1) {
-            agu_belt.getGyro(gyro_belt);                                        // Get gyroscope data from Belt
-            agu_belt.getAccelero(acce_belt);                                    // Get accelerometer data from belt
+            angle_device_reference_belt.getGyro(gyroscope_reference_belt);              // Get gyroscope data from Belt.
+            angle_device_reference_belt.getAccelero(accelerometer_reference_belt);      // Get accelerometer data from belt.
         }
-        pi.printf("?,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,\n", acce[0], acce[1], acce[2], gyro[0], gyro[1], gyro[2],acce_belt[0], acce_belt[1], acce_belt[2], gyro_belt[0], gyro_belt[1], gyro_belt[2]);
+        
+        if (connection_test_sensorplate == 1) {                                                     // If statement for sending serial information sensorplate data when connection test is active. 
+            // Receiving order sensor information: 3 accelero sensors & 3 gyroscope sensors from sensorplate; 3 accelero sensors & 3 gyroscope sensors from belt. Is splitted in two parts - part 2/2. 
+            pi_serial.printf("?,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,\n", accelerometer_sensorplate[0], accelerometer_sensorplate[1], accelerometer_sensorplate[2], gyroscope_sensorplate[0], gyroscope_sensorplate[1], gyroscope_sensorplate[2], accelerometer_reference_belt[0], accelerometer_reference_belt[1], accelerometer_reference_belt[2], gyroscope_reference_belt[0], gyroscope_reference_belt[1], gyroscope_reference_belt[2]);
+        }
+        
+        while(piezo_electric_sample_timer.read_us()<(3*(total_readout_cycle_time_us/5))) {}  // Wait untill 60% of cycle.
 
-        while(t.read_us()<(3*(cycle_time/5))) {}                            // Wait untill 60% of cycle
-
-        elec[3] = pel.readADC_SingleEnded(0);                               // Fourth PE readout
+        piezo_electric_array[3] = piezo_electric_adc.readADC_SingleEnded(0);        // Fourth PE readout.
     }
 
     timer_functions();
 
     batteryvoltage_current = batteryvoltage_last;
     powervoltage_current = powervoltage_last;
-    read_voltage();                                                         // Supplyvoltage control for alarm.
+    read_voltage();                                                                 // Read_voltage function to control alarm.
+    
     if (test_mode == 1) {
-        pc.printf("Voltage = %d   ,   %d\n", batteryvoltage_current, powervoltage_current);
+        usb_serial.printf("Voltage = %d   ,   %d\n", batteryvoltage_current, powervoltage_current);
     }
+    
     uint32_t val = 0;
-    colour_select(LED_colour);
-    array.update(generate, NLED, val);
-    set_ui_LED();
+    colour_select_indicating_LED_wall(LED_colour);                                                      // Function to select colour.     
+    indicator_LEDs.update(generate, NUMBER_LED_FRONT, val);                         // Function to set the LED's which shines to the wall (indicating change patient position).
+    set_userinterface_LED();                                                                   // Set LED's of user interface (LED's above buttons).
+
+    while(piezo_electric_sample_timer.read_us()<(4*(total_readout_cycle_time_us/5))) {}  // Wait untill 80% of cycle.
 
-    while(t.read_us()<(4*(cycle_time/5))) {}                                // Wait untill 80% of cycle
-
-//    pc.printf("2e = %d\n",agu.testConnection());
-    if (a == 1) {
-        elec[4] = pel.readADC_SingleEnded(0);                               // Fifth PE readout
+    if (test_mode == 1){                                                            // If statement for test purposal. 
+        usb_serial.printf("Angle device sensorplate = %d\n",angle_device_sensorplate.testConnection());
+    }
+    
+    if (connection_test_sensorplate == 1) {
+        piezo_electric_array[4] = piezo_electric_adc.readADC_SingleEnded(0);         // Fifth PE readout.
     }
 
-    while(t.read_us()<(4.25*(cycle_time/5))) {}                             // Wait untill 85% of cycle
+    while(piezo_electric_sample_timer.read_us()<(4.25*(total_readout_cycle_time_us/5))) {}  // Wait untill 85% of cycle.
 
-    serial_read();
-    serial_log();
-    if (test_mode ==1) {
-        pc.printf("Loop time: %d ms\n",t.read_ms());
+    serial_read();                                                                   // Call function for reading information from PI by serial connection. 
+    serial_log();                                                                    // Call function for logging information to PI by serial connection. 
+    
+    if (test_mode == 1) {                                                            // If statements for test purposal (untill * mark).
+        usb_serial.printf("Loop time: %d ms\n",piezo_electric_sample_timer.read_ms());
     }
     if (test_pin == 1) {
         test_mode = 1;
-        pc.printf("%d\n",test_mode);
+        usb_serial.printf("%d\n",test_mode);
     }
     if (test_pin == 0) {
         test_mode = 0;
-        pc.printf("%d\n",test_mode);
+        usb_serial.printf("%d\n",test_mode);
     }
+
     if (test_mode == 1) {
-        //cycle_time = 500000;
-    } else {
-        cycle_time = 100000;
-    }
-    pc.printf("Loop time: %d ms\n",t.read_ms());
+        usb_serial.printf("Loop time: %d ms\n",piezo_electric_sample_timer.read_ms());
+    }                                                                                
+                                                                                    // * End of if statements for test purposal. 
 }
 
-int main()
-{
-    wait_ms(boot_delay_ms);                                                 // Wait to boot sensorplate first
-    i2c.frequency(i2c_freq);
-    i2cAccu.frequency(i2c_freq);
-    pc.baud(baud);
-    pi.baud(baud);
-    pr1.setGain(GAIN_TWOTHIRDS); // set range to +/-6.144V
-    pr2.setGain(GAIN_TWOTHIRDS); // set range to +/-6.144V
-    pel.setGain(GAIN_TWOTHIRDS); // set range to +/-6.144V
-    adsAccu.setGain(GAIN_TWOTHIRDS); // set range to +/-6.144V
-    pi.format(8, SerialBase::None, 1);
+int main() {                                                                        // Main function.
+    wait_ms(boot_delay_ms);                                                         // Wait to boot sensorplate first.
+    i2c_sensorplate_adc.frequency(i2c_freq);                                        // Set frequency for i2c connection to sensorplate (variable is declared in config part).
+    i2c_power_adc.frequency(i2c_freq);                                              // Same as line 695, but now for ADC to read battery- en powervoltage. 
+    usb_serial.baud(baud_rate);                                                     // Set serial USB connection baud rate (variable is declared in config part).
+    pi_serial.baud(baud_rate);                                                      // Same as line 697, but now for serial PI connection.
+    piezo_resistive_adc1.setGain(GAIN_TWOTHIRDS);                                   // Set ranges of ADC to +/-6.144V (end is marked with #):
+    piezo_resistive_adc2.setGain(GAIN_TWOTHIRDS);                                   
+    piezo_electric_adc.setGain(GAIN_TWOTHIRDS);                                     
+    adsAccu.setGain(GAIN_TWOTHIRDS);                                                // #) End of configuration ADC ranges.
+    pi_serial.format(8, SerialBase::None, 1);                                       // Set serial communication line with PI. 
 
-    lock.fall(&trigger_lock);                                               // Interrupt for rising edge lock button.
-    lock.rise(&timer_lock);
-    reposition.fall(&trigger_reposition);
-    reposition.rise(&rise_reposition);
-    mute.fall(&trigger_mute);
-    new_patient.fall(&trigger_new_patient);                                 // New patient/calibration button rising event.
-    new_patient.rise(&timer_calibration);                                   // Falling edge for calibration algorithm option.
-    delay.reset();                                                          // Delaytimer reset en start.
-    delay.start();
+    button_lock.fall(&trigger_lock);                                                // Interrupt for rising edge lock button.
+    button_lock.rise(&end_timer_lock_button);
+    button_reposition.fall(&reposition_button_triggered);
+    button_reposition.rise(&rise_reposition);
+    button_mute.fall(&mute_button_triggered);
+    button_new_patient.fall(&trigger_new_patient);                                  // New patient/calibration button rising event.
+    button_new_patient.rise(&activate_new_patient_function);                                    // Falling edge for calibration algorithm option.
+    delay_between_button_pressed.reset();                                           // Delaytimer reset en start.
+    delay_between_button_pressed.start();
 
-    set_intensity();
-    lock_LED = control_LED_intensity;                                       // Lock LED initialization.
+    set_intensity_LEDs();                                                                // Initialize intensity for user interface LED's and LED's shines to wall.  
+    lock_feedback_LED = control_LED_intensity;                                      // Lock LED initialization.
 
 
-    sample_cycle.attach_us(&read_adc, cycle_time);
+    total_readout_cycle.attach_us(&read_adc, total_readout_cycle_time_us);          // Call function to start reading sensorplate and other functionalities.
 
     while (1) {
-        wait_us(cycle_time+1); // wait indefinitely because the ticker restarts every 50 ms
+        wait_us(total_readout_cycle_time_us+1);                                     // Wait indefinitely.
     }
 }
\ No newline at end of file