Automatic Control and User Interface for Central Tire Inflation System

Hi
Found this great app and community when I was looking for a solution for the project that I want to do and is based on the project from others.
Have their permission to use this and he has send me the code he used.
Also have access to the essay on this topic.
Link to essay
Automatic Control and User Interface for Central Tire Inflation System
http://skemman.is/stream/get/1946/22319/48963/1/MSc.pdf
The thing is that I do not have much program and is looking for someone to help me with this and connect this with Blynk app?
Plan to use Genuino 101, with a 5V Relay Module Interface Boards for Arduino Low Level Trigger 1/2/4/8 Channels
Have air monitors called MPX4250DP Pressure Sensor 36.26 PSI
Hope you understand what I’m wondering, to use in a jeep on the 38 "tires


This is the code


#include 
#include 
#include 
#include  // http://forum.arduino.cc/index.php?topic=128717.0
#include 

//////////////////////////////////////
// Tire pressure : 1 bit = 0.01 PSI //
// Tank pressure : 1 bit = 0.01 PSI //
//////////////////////////////////////

//////// GLOBAL PARAMETERS /////
// Tire pressure control parameters:
const uint8_t TOLERANCE = 5; //[Tire pressure storage unit] set point tolerance
const uint16_t ALL_WITHIN_TOL_WAIT_TIME = 8000; //[ms]
const uint8_t TIME_BETW_MEAS = 50; //[ms]
const uint8_t NUM_OF_MEASUREMENTS_SHORT_FILTER = 6; //Number of measurements averaged
const uint8_t NUM_OF_MEASUREMENTS_LONG_FILTER = 50; //Number of measurements averaged
const uint16_t MAX_DEFLATION_TIME = 6000; //[ms]
const uint16_t MAX_INFLATION_TIME = 6000; //[ms]
const uint16_t WITHIN_TOL_SET_POINT_THRESHOLD = 10; //[raw set point bits]
const uint8_t STAND_BY_THRESHOLD = 10; //Stand by threshold
const uint8_t STAND_BY_MULTIPLAYER = 4; //Stand by multiplier
const uint16_t SETTLING_TIME = 100; //[ms] pressure settling time
const uint16_t VALVE_OPENING_TIME = 7; //[ms]
const float BITS_TO_PSIUNIT_MXP4250 = 3.8425; // 1 bit = 0,038425 psi
const int16_t FILTER_THRESHOLD = 100; // raw ADC value
const uint16_t FRONT_AXLE_OFFSET_ADJUST_TIME_LENGTH = 4000;
const uint16_t FRONT_AXLE_OFFSET_LOWER_POT_LIMIT = 50;
const uint16_t FRONT_AXLE_OFFSET_HIGER_POT_LIMIT = 950;
byte LCD_SYMBOLS[2][8] = { {B00100, B01110, B11111, B00100, B00100, B00100, B00100,}, {B00100, B00100, B00100, B00100, B11111, B01110, B00100,} };

// Tank parameters:
const uint16_t TANKPRESSURE_BLINK_LIMIT = 3000; //[Tank pressure storage unit]
const uint16_t TANK_PRESS_BLINK_DELAY = 700; //[ms]
const float BITS_TO_PSIUNIT_MXP5700 = 11.0135; // 1 bit = 0,110135 psi
const uint16_t OFFSET_MPX5700 = 35; // 0 - 1024, raw ADC unit

// Front panel parameters:
const uint16_t POT_NONLINEAR_THRES = 700; // range (0-1023)
const uint16_t FRONT_PANEL_TIME_THRES_PERIOD = 250;
uint16_t MAX_POT_COUNT = 1020; //(Not constant) Max output from POT ATH hér þarf að láta lesa úr EEPROM
uint16_t MIN_POT_COUNT = 0; //(Not constant) Min output from POT ATH hér þarf að láta lesa úr EEPROM
const uint8_t SETPOINT_MAXIMUM_PSI = 35;
char LCD_INIT_STRING1[] = “thorhalb v1.0”;
char LCD_INIT_STRING2[] = " “;
char LCD_INIT_STRING3[] = " -.- -.-”;
char LCD_INIT_STRING4[] = " -.- -.-";
const int LCD_X[] = {6, 12, 6, 12}; // The position coordinates of the tire pressure on the screen
const int LCD_Y[] = {0, 0, 1, 1};
const uint8_t PIN_GREEN_LED = A3;
const uint8_t PIN_ALL_INDI = 0;
const uint8_t PIN_POT = A5;

// Control pins deceleration
const uint8_t PIN_VALVE0 = 13;
const uint8_t PIN_VALVE1 = 8;
const uint8_t PIN_VALVE2 = 9;
const uint8_t PIN_VALVE3 = 10;
const uint8_t PIN_VALVE4 = 11;
const uint8_t PIN_VALVE5 = 12;
const uint8_t PIN_PUMP = 1;

// Sensors
const uint8_t PIN_MPX4250 = A2;
const uint8_t PIN_MPX5700 = A1;

// EEPROM and control parameters
const uint8_t SINGLE_CHANNEL_DEFLATION_PARAM_ADDRESS = 0;
const uint8_t SINGLE_CHANNEL_INFLATION_PARAM_ADDRESS = 4;
const uint8_t FRONT_CHANNELS_DEFLATION_PARAM_ADDRESS = 8;
const uint8_t FRONT_CHANNELS_INFLATION_PARAM_ADDRESS = 12;
const uint8_t REAR_CHANNELS_DEFLATION_PARAM_ADDRESS = 16;
const uint8_t REAR_CHANNELS_INFLATION_PARAM_ADDRESS = 20;
const uint8_t ALL_CHANNELS_DEFLATION_PARAM_ADDRESS = 24;
const uint8_t ALL_CHANNELS_INFLATION_PARAM_ADDRESS = 28;

// Other constants:
const uint16_t SERIAL_BAUDRATE = 9600;

////////// GLOBAL VARIABLES /////
// Enum:
enum valveControlCommand {CLOSE_ALL, MEASURE, INFLATE, DEFLATE, CALIBRATION};
enum tireControlState {firstMeasurementOngoing, allWithinTolWaiting, firstMeasurementDone, inflationDeflationDone, secondMeasurementOngoing, secondMeasurementDone};
enum LCD_SYMBOL {ARROW_UP, ARROW_DOWN};

// Tire pressure control - global variables:
uint8_t activeTire = 0; //Four tires: 0-3
tireControlState tireState = allWithinTolWaiting; //Enum
uint16_t tireSensorOffset = 0; //Raw ADC value
int16_t setPoint = 0; //[Tire pressure storage unit]
uint16_t currentPotRaw = 0; //Current set point POT raw value
int16_t withinTolSetPoint = 0; //[Tire pressure storage unit]
int16_t summedPressure = 0; //Temp variable - used to accumulate measurements
boolean isAllWithinTol = false; //Are all channels within tolerance
uint8_t allWithinTolCounter = 0; //How many channels have been found in row within tolerance
uint8_t numOfMeasCounter = 0; //Current number of measurements taken
uint32_t TireTimeThres = 0; //Tire control time threshold
boolean isChBelow10PSI[4] = {true, true, true, true};
uint16_t firstMeasurementPressure = 0;
uint16_t secondMeasurementPressure = 0;
boolean isDeflating = false;
boolean isInflating = true;
uint16_t deflationTime = 0;
uint16_t inflationTime = 0;
boolean isSetPointChanged = true;
uint16_t numberOfMeasurementsInUse = NUM_OF_MEASUREMENTS_SHORT_FILTER;
int8_t frontAxleOffset = 0; // [psi*100] Range -4 to 4 psi ( -400 to 400)
int16_t maxPressureReading = 0;
int16_t minPressureReading = 1023;
uint8_t isShortFilterActive = true;

// Tank pressure control - global variables:
boolean isValve5Closed = true;
int16_t tankPress = 0; //[Tank pressure storage unit] Current tank pressure
uint32_t tankPressureLCDTimeThres = 0; //Tank pressure blink time threshold
uint32_t calibrationTankTimeThres = 0;
boolean tankBlink = false;

// EEPROM and control parameters - global variables:
uint16_t singleChannelDeflationParam = 11000;
uint16_t singleChannelInflationParam = 1200;
uint16_t frontChannelsDeflationParam = 11000;
uint16_t frontChannelsInflationParam = 1200;
uint16_t rearChannelsDeflationParam = 11000;
uint16_t rearChannelsInflationParam = 1200;
uint16_t allChannelsDeflationParam = 11000;
uint16_t allChannelsInflationParam = 1200;
uint32_t EEPROMTimeThres = 20000;

// Other - global variables:
uint32_t backgroundTasksTimeThres = 0; //Front panel time threshold
uint32_t blinkLEDTimeThres = 0; //Front panel LED blink time threshold
boolean isIndependentEnabled = true; //Independent channels enabled
uint16_t counter = 0; //Temp variable for performance test

uint16_t channel0 = 0;
uint16_t channel1 = 0;
uint16_t channel2 = 0;
uint16_t channel3 = 0;

// Global objects:
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);

void setup()
{
Serial.begin(SERIAL_BAUDRATE);
pinMode(PIN_ALL_INDI, INPUT);
pinMode(PIN_GREEN_LED, OUTPUT);
pinMode(PIN_VALVE0, OUTPUT);
pinMode(PIN_VALVE1, OUTPUT);
pinMode(PIN_VALVE2, OUTPUT);
pinMode(PIN_VALVE3, OUTPUT);
pinMode(PIN_VALVE4, OUTPUT);
pinMode(PIN_VALVE5, OUTPUT);
pinMode(PIN_PUMP, OUTPUT);

lcdInit1();
tireSensorOffset = tireOffsetCalibration();
lcdInit2();
loadParamFromEEPROM();

}

void loop()
{
if(backgroundTasksTimeThres < millis())
{
backgroundTasks();
}
if(TireTimeThres < millis())
{
tirePressureControl();
}
if(tankPressureLCDTimeThres < millis())
{
printTankPressureLCD();
}
}

////////////// Main functions: ////////////////////////////////
void backgroundTasks()
{
backgroundTasksTimeThres = millis() + FRONT_PANEL_TIME_THRES_PERIOD;
readTankPress();
updatingSetPoint();
updatingALLOrIndividualSwitch();
updatingFrontPanelLED();

// Method to capture set point changes in all-within-tolerance mode where the period is very slow
if(isAllWithinTol && (abs(setPoint - withinTolSetPoint) > WITHIN_TOL_SET_POINT_THRESHOLD))
{
	TireTimeThres = 0; // Measure the next channel immediately
	withinTolSetPoint = setPoint; // So that this is only caught once - not four times 
}
	
// Tank functions - only read sensor when tankValve is closed
if(isValve5Closed == true)
{
	readTankPress();
}

}

void tirePressureControl()
{
switch (tireState)
{
case firstMeasurementOngoing:
takeOneMoreMeasurement();
if(numOfMeasCounter >= numberOfMeasurementsInUse)
{
tireState = firstMeasurementDone;
}
break;

case firstMeasurementDone:
	if(maxPressureReading - minPressureReading > FILTER_THRESHOLD && isShortFilterActive == true)
	{
		isShortFilterActive = false;
		tireState = firstMeasurementOngoing;
		numberOfMeasurementsInUse = NUM_OF_MEASUREMENTS_LONG_FILTER;
	}
	else
	{	
		valveControl(CLOSE_ALL);
		isShortFilterActive = true;
		maxPressureReading = 0;
		minPressureReading = 1023;
		firstMeasurementPressure = calcAverage();
		numberOfMeasurementsInUse = NUM_OF_MEASUREMENTS_SHORT_FILTER;
		displayTirePress(firstMeasurementPressure);			
		decideWhatToDo(firstMeasurementPressure);
		updateAllWithinTol();
	}
	break;
	
case allWithinTolWaiting:
	valveControl(MEASURE);
	TireTimeThres = millis() + SETTLING_TIME;
	tireState = firstMeasurementOngoing;
	break;
	
case inflationDeflationDone:
	
	
	if(activeTire == 60)
	{
		tireState = firstMeasurementOngoing;
	}
	else
	{
		tireState = secondMeasurementOngoing;
	}			
	valveControl(MEASURE);
	TireTimeThres = millis() + SETTLING_TIME;
	break;
	
case secondMeasurementOngoing:	
	takeOneMoreMeasurement();
	if(numOfMeasCounter >= numberOfMeasurementsInUse)
	{
		tireState = secondMeasurementDone;
	}
	break;
	
case secondMeasurementDone:
	if(maxPressureReading - minPressureReading > FILTER_THRESHOLD && isShortFilterActive == true)
	{
		isShortFilterActive = false;
		tireState = secondMeasurementOngoing;
		numberOfMeasurementsInUse = NUM_OF_MEASUREMENTS_LONG_FILTER;
	}
	else
	{	
		isShortFilterActive = true;
		maxPressureReading = 0;
		minPressureReading = 1023;
		secondMeasurementPressure = calcAverage();
		numberOfMeasurementsInUse = NUM_OF_MEASUREMENTS_SHORT_FILTER;
		displayTirePress(secondMeasurementPressure);
		changeToNextChannel();
		updatingControlParameters();
		valveControl(MEASURE);
		TireTimeThres = millis() + SETTLING_TIME;
		tireState = firstMeasurementOngoing;
	}
	break;
}	

}

////////////// Support functions: ///////////////////////////
void readTankPress()
{
tankPress = (float)(analogRead(PIN_MPX5700) - OFFSET_MPX5700) * BITS_TO_PSIUNIT_MXP5700;
}

void changeToNextChannel()
{
// 0 - 3 = independent channels, 4 = front (0-1 ch), 5 rear (2-3 ch), 6 all channels
if(isIndependentEnabled == true)
{
activeTire = (activeTire+1)%4;
}
else if(frontAxleOffset == 0)
{
activeTire = 6;
}
else
{
if(activeTire == 5)
{
activeTire = 4;
}
else
{
activeTire = 5;
}
}
}

void printTankPressureLCD()
{
tankPressureLCDTimeThres = millis() + TANK_PRESS_BLINK_DELAY;

lcd.setCursor(0, 1);
if(tankPress > TANKPRESSURE_BLINK_LIMIT || tankBlink == false)
{	
	//Printing space if needed
	if(tankPress < 995)
	{
		lcd.print("  ");
	}
	else if(tankPress < 9995)
	{
		lcd.print(" ");
	}
	
	// Print number
	lcd.print((tankPress + 5)/100); // 5 is so the rounding will be correct and 100 is because of the way the pressure is stored
	tankBlink = true;
}
else
{
	tankBlink = false;
	lcd.print("     ");
}

}

void clearAllArrowsAndM()
{
for(int i = 0; i < 4; i++)
{
lcd.setCursor(LCD_X[i] - 1, LCD_Y[i]);
if(isChBelow10PSI[i])
{
lcd.print(" “);
}
else
{
lcd.print(” ");
}
}
}

void printArrowsAndM(int command)
{
clearAllArrowsAndM();
uint8_t startChannel = 0;
uint8_t endChannel = 0;
switch (activeTire)
{
case 0:
case 1:
case 2:
case 3:
startChannel = activeTire;
endChannel = activeTire;
break;
case 4:
startChannel = 0;
endChannel = 1;
break;
case 5:
startChannel = 2;
endChannel = 3;
break;
case 6:
startChannel = 0;
endChannel = 3;
break;
}

for(uint8_t i = startChannel; i < endChannel+1; i++)
{
	lcd.setCursor(LCD_X[i] - 1, LCD_Y[i]);
	if(isChBelow10PSI[i])
	{
		lcd.print(" ");
	}
	
	switch (command)
	{
	case MEASURE:
		lcd.write("M");
		break;
	case INFLATE:
		lcd.write(byte(ARROW_UP));
		break;
	case DEFLATE:
		lcd.write(byte(ARROW_DOWN));
		break;
	}
}

}

void updatingSetPoint()
{
uint16_t newPotRaw = analogRead(PIN_POT);

if(abs(newPotRaw - currentPotRaw) > 10 ) // POT hysteresis
{
	uint16_t newSetPoint = potToPSI(newPotRaw);
	if( newSetPoint != setPoint) 
	{
		setPoint = newSetPoint;
		currentPotRaw = newPotRaw;
		isSetPointChanged = true;
		lcd.setCursor(0, 0);
		if(setPoint < 995)
		{
			lcd.print(" "); // This is for alignment of decimal point on screen
		}	
		lcd.print(((float)setPoint)/100,1);
	}
}

}

uint16_t potToPSI(uint16_t potRaw)
{
uint16_t output = 0;

if(potRaw < POT_NONLINEAR_THRES)
{
	output = map(potRaw,MIN_POT_COUNT,POT_NONLINEAR_THRES - 1,0,499);
}
else
{
	output = map(potRaw,POT_NONLINEAR_THRES,MAX_POT_COUNT,500,SETPOINT_MAXIMUM_PSI*100);
}
// Round of numbers higher than 500 (5 PSI)
if(output > 500)
{
	output = (output / (int)100) * (int)100;
}
else
{
	output = (output / (int)50) * (int)50;
}

if(output < 50)
{
	output = 25;
}
return output;

}

void updatingALLOrIndividualSwitch()
{
boolean allIndiSwitchEnabled = digitalRead(PIN_ALL_INDI);
if(allIndiSwitchEnabled && !isIndependentEnabled)
{
activeTire = 0;
isIndependentEnabled = true;
TireTimeThres = 0;
allWithinTolCounter = 0;
isAllWithinTol = 0;
valveControl(CLOSE_ALL);
}
else if(!allIndiSwitchEnabled && isIndependentEnabled)
{
activeTire = 6;
isIndependentEnabled = false;
TireTimeThres = 0;
allWithinTolCounter = 0;
isAllWithinTol = 0;
valveControl(CLOSE_ALL);
}
}

void updatingFrontPanelLED()
{
if(isAllWithinTol)
{
digitalWrite(PIN_GREEN_LED,1);
}
else
{
digitalWrite(PIN_GREEN_LED,0);
}
}

void takeOneMoreMeasurement()
{
uint16_t temp = analogRead(PIN_MPX4250) - tireSensorOffset;
if(temp > maxPressureReading)
{
maxPressureReading = temp;
}
if(temp < minPressureReading)
{
minPressureReading = temp;
}
summedPressure = summedPressure + temp;
numOfMeasCounter += 1;
TireTimeThres = millis() + TIME_BETW_MEAS;
}

uint16_t calcAverage()
{

numOfMeasCounter = 0;
int16_t currentPressure = (float)(summedPressure / numberOfMeasurementsInUse) * BITS_TO_PSIUNIT_MXP4250;
if( currentPressure < 0 )
{
	currentPressure = 0;
}
summedPressure = 0;
return currentPressure;

}

void displayTirePress(uint16_t currentPressure)
{
float printOutPress = (float)currentPressure/(float)100;

if(currentPressure > 37000) // This is to eliminate "negative" pressure
{
	currentPressure = 0;
}

uint8_t isCurrentPressBelow10psi = currentPressure < 995;	
uint8_t startChannel = 0;
uint8_t endChannel = 0;
switch (activeTire)
{
case 0:
	channel0 = currentPressure;
	startChannel = activeTire;
	endChannel = activeTire;
	isChBelow10PSI[activeTire] = isCurrentPressBelow10psi;
	break;
case 1:
	channel1 = currentPressure;
	startChannel = activeTire;
	endChannel = activeTire;
	isChBelow10PSI[activeTire] = isCurrentPressBelow10psi;
	break;
case 2:
	channel2 = currentPressure;
	startChannel = activeTire;
	endChannel = activeTire;
	isChBelow10PSI[activeTire] = isCurrentPressBelow10psi;
	break;
case 3:
	channel3 = currentPressure;
	startChannel = activeTire;
	endChannel = activeTire;
	isChBelow10PSI[activeTire] = isCurrentPressBelow10psi;
	break;
case 4:
	channel0 = currentPressure;
	channel1 = currentPressure;
	startChannel = 0;
	endChannel = 1;
	isChBelow10PSI[0] = isCurrentPressBelow10psi;
	isChBelow10PSI[1] = isCurrentPressBelow10psi;
	break;
case 5:
	channel2 = currentPressure;
	channel3 = currentPressure;
	startChannel = 2;
	endChannel = 3;
	isChBelow10PSI[2] = isCurrentPressBelow10psi;
	isChBelow10PSI[3] = isCurrentPressBelow10psi;
	break;
case 6:
	channel0 = currentPressure;
	channel1 = currentPressure;
	channel2 = currentPressure;
	channel3 = currentPressure;
	startChannel = 0;
	endChannel = 3;
	isChBelow10PSI[0] = isCurrentPressBelow10psi;
	isChBelow10PSI[1] = isCurrentPressBelow10psi;
	isChBelow10PSI[2] = isCurrentPressBelow10psi;
	isChBelow10PSI[3] = isCurrentPressBelow10psi;
	break;	
}

for(uint8_t i = startChannel; i < endChannel+1; i++)
{
	lcd.setCursor(LCD_X[i], LCD_Y[i]);
	if(printOutPress < 9.95) // This is for alignment of decimal point on screen
	{
		lcd.print(" ");
	}
	lcd.print(abs(printOutPress),1);
}

}

void updateAllWithinTol()
{
uint8_t numberOfChannelsInUse = 0;
switch(activeTire)
{
case 0:
case 1:
case 2:
case 3:
numberOfChannelsInUse = 3;
break;
case 4:
case 5:
numberOfChannelsInUse = 2;
break;
case 6:
numberOfChannelsInUse = 1;
break;
}
if(allWithinTolCounter >= numberOfChannelsInUse && !isAllWithinTol)
{
isAllWithinTol = true;
withinTolSetPoint = setPoint;
isSetPointChanged = false;
}
else if(allWithinTolCounter < numberOfChannelsInUse)
{
isAllWithinTol = false;
}
}

uint16_t calculateDeflationTime(uint16_t currentPressure)
{
uint16_t deflationParamInUse = 0;
switch (activeTire)
{
case 0:
case 1:
case 2:
case 3:
deflationParamInUse = singleChannelDeflationParam;
break;
case 4:
deflationParamInUse = frontChannelsDeflationParam;
break;
case 5:
deflationParamInUse = rearChannelsDeflationParam;
break;
case 6:
deflationParamInUse = allChannelsDeflationParam;
break;
}

uint16_t timeMilliSec = ((deflationParamInUse * 10) / log( (float)currentPressure / (float)setPoint )) + VALVE_OPENING_TIME;
if(timeMilliSec > MAX_DEFLATION_TIME)
{
	timeMilliSec =  MAX_DEFLATION_TIME;
}	
return timeMilliSec;

}

uint16_t calculateInflationTimeMS(uint16_t currentPressure)
{
uint16_t inflationParamInUse = 0;
switch (activeTire)
{
case 0:
case 1:
case 2:
case 3:
inflationParamInUse = singleChannelInflationParam;
break;
case 4:
inflationParamInUse = frontChannelsInflationParam;
break;
case 5:
inflationParamInUse = rearChannelsInflationParam;
break;
case 6:
inflationParamInUse = allChannelsInflationParam;
break;
}

uint16_t timeMilliSec = ((float)( setPoint - currentPressure ) * ( inflationParamInUse / 100 ) ) + VALVE_OPENING_TIME;
if(timeMilliSec > MAX_INFLATION_TIME)
{
	timeMilliSec =  MAX_INFLATION_TIME;
}
return timeMilliSec;

}

void decideWhatToDo(int16_t currentPressure)
{
int16_t difference = currentPressure - setPoint;
if(activeTire == 0 || activeTire == 1 || activeTire == 4)
{
difference = difference - frontAxleOffset;
}
if(abs(difference) > TOLERANCE) // Last measurement not within tolerance
{
allWithinTolCounter = 0;
if(difference > 0)
{
valveControl(DEFLATE);
deflationTime = calculateDeflationTime(currentPressure);
TireTimeThres = millis() + deflationTime;
}
else if(1) //tankPress > 3000) // inflation only performed if tank press > 30 psi
{
valveControl(INFLATE);
inflationTime = calculateInflationTimeMS(currentPressure);
TireTimeThres = millis() + inflationTime;
}
tireState = inflationDeflationDone;
}
else // Last measurement within tolerance
{
allWithinTolCounter += 1;
changeToNextChannel();

	if(isAllWithinTol && allWithinTolCounter > STAND_BY_THRESHOLD)
	{
		closeAllValves();
		TireTimeThres = millis() + (STAND_BY_MULTIPLAYER * ALL_WITHIN_TOL_WAIT_TIME);
		tireState = allWithinTolWaiting;
	}
	else if(isAllWithinTol)
	{
		closeAllValves();
		if(activeTire == 6)
		{
			openActiveTireValve();
		}
		TireTimeThres = millis() + ALL_WITHIN_TOL_WAIT_TIME;
		tireState = allWithinTolWaiting;
	}
	else
	{
		valveControl(MEASURE);
		TireTimeThres = millis() + SETTLING_TIME;
		tireState = firstMeasurementOngoing;
	}
}

}

void openActiveTireValve()
{
switch (activeTire)
{
case 0:
digitalWrite(PIN_VALVE1, HIGH);
break;
case 1:
digitalWrite(PIN_VALVE2, HIGH);
break;
case 2:
digitalWrite(PIN_VALVE3, HIGH);
break;
case 3:
digitalWrite(PIN_VALVE4, HIGH);
break;
case 4:
digitalWrite(PIN_VALVE1, HIGH);
digitalWrite(PIN_VALVE2, HIGH);
break;
case 5:
digitalWrite(PIN_VALVE3, HIGH);
digitalWrite(PIN_VALVE4, HIGH);
break;
case 6:
digitalWrite(PIN_VALVE1, HIGH);
digitalWrite(PIN_VALVE2, HIGH);
digitalWrite(PIN_VALVE3, HIGH);
digitalWrite(PIN_VALVE4, HIGH);
break;
}
}

void closeAllValves()
{
digitalWrite(PIN_VALVE0, LOW);
digitalWrite(PIN_VALVE1, LOW);
digitalWrite(PIN_VALVE2, LOW);
digitalWrite(PIN_VALVE3, LOW);
digitalWrite(PIN_VALVE4, LOW);
digitalWrite(PIN_VALVE5, LOW);
}

void valveControl(int command)
{
printArrowsAndM(command);
closeAllValves();
isValve5Closed = true;
switch (command)
{
case CLOSE_ALL:
// Empty on purpose
break;
case MEASURE:
openActiveTireValve();
break;
case INFLATE:
isInflating = true;
openActiveTireValve();
digitalWrite(PIN_VALVE5, HIGH);
isValve5Closed = false;
break;
case DEFLATE:
isDeflating = true;
openActiveTireValve();
digitalWrite(PIN_VALVE0, HIGH);
break;
case CALIBRATION:
digitalWrite(PIN_VALVE0,HIGH);
break;
}
}

uint16_t tireOffsetCalibration()
{
valveControl(CALIBRATION);
writeToLCD(LCD_INIT_STRING1, LCD_INIT_STRING2);
delay(2SETTLING_TIME);
uint16_t temp = 0;
for(int8_t i = 0; i < NUM_OF_MEASUREMENTS_SHORT_FILTER; i = i +1)
{
temp = temp + analogRead(PIN_MPX4250);
delay(TIME_BETW_MEAS);
}
uint16_t tireSensorOffset = (temp / NUM_OF_MEASUREMENTS_SHORT_FILTER);
valveControl(CLOSE_ALL);
writeToLCD(LCD_INIT_STRING1, LCD_INIT_STRING2);
delay(2
SETTLING_TIME);
return tireSensorOffset;
}
/*writeToLCD("Calibration ",“process started!”);

// Deflating all tires, ones for one sec:
//Measure all tires:
digitalWrite(PIN_VALVE0,HIGH);
digitalWrite(PIN_VALVE1,HIGH);
digitalWrite(PIN_VALVE2,HIGH);
digitalWrite(PIN_VALVE3,HIGH);
digitalWrite(PIN_VALVE4,HIGH);
delay(2000);
uint16_t summedPressure = 0;
for(int i = 0; i < 20; i++)
{
	summedPressure += analogRead(PIN_MPX4250) - tireSensorOffset;
	delay(10);
}
uint16_t beforePress = summedPressure / 20;



// Deflating every tire down to 5 psi in one sec intervals:
boolean isFinished = false;
while(!isFinished)
{
	activeTire = 0;
	valveControl(
}

// Inflating every tire up to 10 psi in one sec intervals:
boolean isFinished = false;
while(!isFinished)
{

}


writeToLCD("Calibratation   ","done !          ");
delay(3000);*/

}

void lcdInit1()
{
lcd.begin(16, 2);
lcd.createChar(0, LCD_SYMBOLS[0]);
lcd.createChar(1, LCD_SYMBOLS[1]);
lcd.clear();
writeToLCD(LCD_INIT_STRING1, LCD_INIT_STRING2);
}

void lcdInit2()
{
writeToLCD(LCD_INIT_STRING3, LCD_INIT_STRING4);
}

void writeToLCD(char string1[], char string2[])
{
lcd.setCursor(0, 0);
lcd.print(string1);
lcd.setCursor(0, 1);
lcd.print(string2);
}

void writeParamToEEPROM()
{
// Unfinished function
}

void loadParamFromEEPROM()
{
singleChannelDeflationParam = EEPROM.read(SINGLE_CHANNEL_DEFLATION_PARAM_ADDRESS);
singleChannelInflationParam = EEPROM.read(SINGLE_CHANNEL_INFLATION_PARAM_ADDRESS);
frontChannelsDeflationParam = EEPROM.read(FRONT_CHANNELS_DEFLATION_PARAM_ADDRESS);
frontChannelsInflationParam = EEPROM.read(FRONT_CHANNELS_DEFLATION_PARAM_ADDRESS);
rearChannelsDeflationParam = EEPROM.read(REAR_CHANNELS_DEFLATION_PARAM_ADDRESS);
rearChannelsInflationParam = EEPROM.read(REAR_CHANNELS_DEFLATION_PARAM_ADDRESS);
allChannelsDeflationParam = EEPROM.read(ALL_CHANNELS_DEFLATION_PARAM_ADDRESS);
allChannelsInflationParam = EEPROM.read(ALL_CHANNELS_DEFLATION_PARAM_ADDRESS);
}

void updatingControlParameters()
{
if(isDeflating && isInflating)
{
// Error: should not happen
}
else if(isDeflating && deflationTime > 0 && (firstMeasurementPressure - secondMeasurementPressure) > 0)
{
uint16_t newDeflationParam = deflationTime / log( (float)firstMeasurementPressure / (float)secondMeasurementPressure) / 10;

	switch (activeTire)
	{
	case 0:
	case 1:	
	case 2:
	case 3:
		singleChannelDeflationParam = newDeflationParam;
		break;
	case 4:
		frontChannelsDeflationParam = newDeflationParam;
		break;
	case 5:
		rearChannelsDeflationParam = newDeflationParam;
		break;
	case 6:
		allChannelsDeflationParam = newDeflationParam;
		break;	
	}
	
}
else if(isInflating && inflationTime > 0 && (secondMeasurementPressure > firstMeasurementPressure))
{
	uint16_t newInflationParam = inflationTime / (float)(secondMeasurementPressure - firstMeasurementPressure) * 100;
	
	switch (activeTire)
	{
	case 0:
	case 1:	
	case 2:
	case 3:
		singleChannelInflationParam = newInflationParam;
		break;
	case 4:
		frontChannelsInflationParam = newInflationParam;
		break;
	case 5:
		rearChannelsInflationParam = newInflationParam;
		break;
	case 6:
		allChannelsInflationParam = newInflationParam;
		break;
	}
}
isDeflating = false;
isInflating = false;
if( EEPROMTimeThres < millis() )
{
	EEPROMTimeThres = millis() + 5000;
	writeParamToEEPROM();
}

}

int16_t updateFrontAxleOffset()
{
closeAllValves();
writeToLCD(“Enter front axle”, “offset: psi”);
int16_t offset = 0;
for(uint8_t i = 0; i < 20; i++)
{
offset = map(analogRead(PIN_POT),0,1023,-8,8) * 50; // range from -4 to 4 psi with 0,5 psi resolution
lcd.setCursor(8,1);
if(offset >= 0)
{
lcd.print(" ");
}
lcd.print((float)offset/100,1);
delay(250);
}
return offset;
}

Is this something that you have interest then may you please be in touch with me :slight_smile:
Regards Elvar Eyberg

1 Like

It looks like a very interesting project and seeing the code I don’t think it’s very hard to set it up for Blynk. There are three things running in the loop. SimpleTimer can do those three things fairly easy. Some buttons and you are probably done.

However … I’m wondering about the legal aspects of this. You are interfering with a system which has a certificate from the government and you are changing that. If anything happens while on the road I bet you aren’t insured for one.

But this would definitely be very interesting to apply in an RC car!!

2 Likes

I think one of the challenges in Blynkifing this would be the server. Somehow relying on GSM or WiFi while cruising out in the tundra is risky… loose signal and not only can you not inflate your suddenly flat tires, but you can’t even pass the time watching cat videos on YouTube while awaiting search and rescue :stuck_out_tongue:

OK, so just install local server on an RPI and run a local network… but a bit overkill for a GUI that never needs to leave the vehicle… and the cat video joke wouldn’t have fit in.

4 Likes

Hei
Thanks for this Lichtsignaal and Gunner.

I must have this phone or tablet can not rely on the 3 / 4G in the mountains or the glacier in Iceland, can testað this on wifi at home.

I prefer using bluetooth when I’m in the mountains between Genuino 101 and Blynk on tablet or phone is a possibility to do it?

Regards Elvar

1 Like

You would still need a server. The Blynk concept is always a trinity (nomini patri, filli et spiritu sanctum as it were :wink: ). A server, the app and the hardware. But since you can get a Pi for around 15 bucks, I’d say that would be money well spent to run the local server on your car. The Pi could double act as both hardware and client. The phone can connect to it as client with a wifi dongle, or with onboard wifi (orangepi zero for example) though using a Pi as hardware client is not really recommended since there are not much examples in JavaScript out there.

One can always connect a Arduino with an Enc28j60 to the ethernet port on the Pi and the phone wifi, that would be the most stable solution I think.

3 Likes

Lichtsignaal
Can point me to a good place to shop this?
Enc28j60
Raspberry Pi an what tipe ?

think this is a good idea to do it this way intend to put this up and start testa this in the coming months :slight_smile:

Thanks

1 Like

or 1 of this Shields that I can use ?

https://store.arduino.cc/index.php?main_page=advanced_search_result&search_in_description=1&keyword=wifi&btnG=search

1 Like

@Eyberg roughly how many analogue and how many digital ports will your project require?

I would go for the Raspberry Pi 3 if I was buying a Pi. There are cheaper Orange Pi “clones” in China but I would go for the real deal. Much more support and you will have the warm glow that you are buying from a Charity. I don’t think the charity sells them directly but here are 3 suppliers:

http://uk.farnell.com/raspberry-pi/raspberrypi-modb-1gb/raspberry-pi-3-model-b/dp/2525225
http://uk.rs-online.com/web/p/processor-microcontroller-development-kits/8968660/

Farnell only have 27162 in stock :slight_smile:

I think my ENC cost me abut $3 from China.

2 Likes

As @Costas says, if you want some support, you’d best buy the real Pi. But I’m on the OrangePi now and it works fine with the provided Debian image.

ENC I’d get on Ebay. Remember to buy two or three, just to be sure :wink:

2 Likes

@Lichtsignaal: the loop is already timed, as is the whole project. Nice. Not using Simpletimer lib though, but that shouldn’t be a problem. Should work as is.

@Eyberg: You own those already? Those are differential sensors as you know, is it OK for the project?

1 Like

Hi marvin7
Did you read essay
Yes it is OK to use this sensor and the one that allowed the code set this up with these sensor.

I am installing local server on Raspberry Pi 3 for this project an geting that to run :slight_smile:

Regar Elvar

Yup, you got me. No, I don’t. :wink:

Then good luck, let us know how it goes.

Done link up with Raspberry Pi 3 local server getting an email from Blynk app :slight_smile:
What more do I need to install to Raspberry Pi 3 for Blynk?

Next is geting Arduino redy for link to Raspberry Pi 3 :slight_smile:

@Eyberg most Blynkers seem to miss some of the steps when setting up the Raspberry Pi as a server but if you are receiving emails from the server that’s a good sign.

How are you planning to “connect” the Arduino to your local server?

@Costas
yes has been using the search here and read a lot about the local server to learn :slight_smile:
Server starts up now every time I boot pi but it was a little difficult for me :slight_smile: only just start to use pi for 24 hr ago and have never used pi before :slight_smile:

Was predicted using the W5100 Ethernet Shield :slight_smile:


and if does not work then goes into Enc28j60 and use wifi or cable

I’ve been using this for quite some time with Blynk and Arduino One without issues - should be fine.

1 Like

I managed to set up a local wifi router to my Raspberry Pi 3 :grinning:
Now I have a local Blynk server on Raspberry Pi 3 connected to wifi in my Raspberry Pi 3 and the tablet, I am happy now
https://frillip.com/using-your-raspberry-pi-3-as-a-wifi-access-point-with-hostapd/

Today came with FedEx the Arduino Genuino 101 :sunglasses:

then there is little question, how do I put this code in the Arduino so it will work with Blynk :slight_smile:

@Eyberg start with the easiest function “scheduling” example for your hardware, called PushData.

It pushes uptime data to your Smartphone at 1s intervals. Ensure that runs fine and that you understand each and every line in the sketch.

Then study your original loop in detail:

void loop()
{
	if(backgroundTasksTimeThres < millis())
	{
		backgroundTasks();
	}	
	if(TireTimeThres < millis())
	{	
		tirePressureControl();			
	}
	if(tankPressureLCDTimeThres < millis())
	{
		printTankPressureLCD();
	}
}

Change it to a “Blynk loop()” by working out what intervals the original author used for the functions and replicate from what you have learnt from the PushData example.

1 Like

I use sketch for the code and get this, what does this mean?


C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.1.0_x64__mdqgnx93n4wtt\arduino-builder -dump-prefs -logger=machine -hardware C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.1.0_x64__mdqgnx93n4wtt\hardware -hardware C:\Users\Elvar\Documents\ArduinoData\packages -tools C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.1.0_x64__mdqgnx93n4wtt\tools-builder -tools C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.1.0_x64__mdqgnx93n4wtt\hardware\tools\avr -tools C:\Users\Elvar\Documents\ArduinoData\packages -built-in-libraries C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.1.0_x64__mdqgnx93n4wtt\libraries -libraries C:\Users\Elvar\Documents\Arduino\libraries -fqbn=Intel:arc32:arduino_101 -vid-pid=0X8087_0X0AB6 -ide-version=10801 -build-path C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310 -warnings=none -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arc-elf32.path=C:\Users\Elvar\Documents\ArduinoData\packages\Intel\tools\arc-elf32\1.6.9+1.0.1 -prefs=runtime.tools.arduino101load.path=C:\Users\Elvar\Documents\ArduinoData\packages\Intel\tools\arduino101load\1.6.9+1.28 -prefs=runtime.tools.flashpack.path=C:\Users\Elvar\Documents\ArduinoData\packages\Intel\tools\flashpack\1.0.0 -prefs=runtime.tools.openocd.path=C:\Users\Elvar\Documents\ArduinoData\packages\Intel\tools\openocd\0.9.0+0.1 -verbose C:\Users\Elvar\Documents\Arduino\urhleypibunadur\urhleypibunadur.ino\urhleypibunadur.ino.ino
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.1.0_x64__mdqgnx93n4wtt\arduino-builder -compile -logger=machine -hardware C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.1.0_x64__mdqgnx93n4wtt\hardware -hardware C:\Users\Elvar\Documents\ArduinoData\packages -tools C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.1.0_x64__mdqgnx93n4wtt\tools-builder -tools C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.1.0_x64__mdqgnx93n4wtt\hardware\tools\avr -tools C:\Users\Elvar\Documents\ArduinoData\packages -built-in-libraries C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.1.0_x64__mdqgnx93n4wtt\libraries -libraries C:\Users\Elvar\Documents\Arduino\libraries -fqbn=Intel:arc32:arduino_101 -vid-pid=0X8087_0X0AB6 -ide-version=10801 -build-path C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310 -warnings=none -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arc-elf32.path=C:\Users\Elvar\Documents\ArduinoData\packages\Intel\tools\arc-elf32\1.6.9+1.0.1 -prefs=runtime.tools.arduino101load.path=C:\Users\Elvar\Documents\ArduinoData\packages\Intel\tools\arduino101load\1.6.9+1.28 -prefs=runtime.tools.flashpack.path=C:\Users\Elvar\Documents\ArduinoData\packages\Intel\tools\flashpack\1.0.0 -prefs=runtime.tools.openocd.path=C:\Users\Elvar\Documents\ArduinoData\packages\Intel\tools\openocd\0.9.0+0.1 -verbose C:\Users\Elvar\Documents\Arduino\urhleypibunadur\urhleypibunadur.ino\urhleypibunadur.ino.ino
Using board 'arduino_101' from platform in folder: C:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7
Using core 'arduino' from platform in folder: C:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7
Detecting libraries used...
"C:\Users\Elvar\Documents\ArduinoData\packages\Intel\tools\arc-elf32\1.6.9+1.0.1/bin/arc-elf32-g++" -c -mcpu=quarkse_em -mlittle-endian -g -Os -Wall -fno-reorder-functions -fno-asynchronous-unwind-tables -fno-omit-frame-pointer -fno-defer-pop -Wno-unused-but-set-variable -Wno-main -ffreestanding -fno-stack-protector -mno-sdata -ffunction-sections -fdata-sections -fsigned-char  -fno-rtti -fno-exceptions -D__ARDUINO_ARC__ -std=c++11 -w -x c++ -E -CC -DF_CPU=32000000L -DARDUINO=10801 -DARDUINO_ARC32_TOOLS -DARDUINO_ARCH_ARC32 -D__CPU_ARC__ -DCLOCK_SPEED=32 -DCONFIG_SOC_GPIO_32 -DCONFIG_SOC_GPIO_AON -DINFRA_MULTI_CPU_SUPPORT -DCFW_MULTI_CPU_SUPPORT -DHAS_SHARED_MEM "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\system/libarc32_arduino101/common" "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\system/libarc32_arduino101/drivers" "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\system/libarc32_arduino101/bootcode" "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\system/libarc32_arduino101/framework/include"  "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\cores\arduino" "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\variants\arduino_101" "C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\sketch\urhleypibunadur.ino.ino.cpp" -o "nul"
"C:\Users\Elvar\Documents\ArduinoData\packages\Intel\tools\arc-elf32\1.6.9+1.0.1/bin/arc-elf32-g++" -c -mcpu=quarkse_em -mlittle-endian -g -Os -Wall -fno-reorder-functions -fno-asynchronous-unwind-tables -fno-omit-frame-pointer -fno-defer-pop -Wno-unused-but-set-variable -Wno-main -ffreestanding -fno-stack-protector -mno-sdata -ffunction-sections -fdata-sections -fsigned-char  -fno-rtti -fno-exceptions -D__ARDUINO_ARC__ -std=c++11 -w -x c++ -E -CC -DF_CPU=32000000L -DARDUINO=10801 -DARDUINO_ARC32_TOOLS -DARDUINO_ARCH_ARC32 -D__CPU_ARC__ -DCLOCK_SPEED=32 -DCONFIG_SOC_GPIO_32 -DCONFIG_SOC_GPIO_AON -DINFRA_MULTI_CPU_SUPPORT -DCFW_MULTI_CPU_SUPPORT -DHAS_SHARED_MEM "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\system/libarc32_arduino101/common" "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\system/libarc32_arduino101/drivers" "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\system/libarc32_arduino101/bootcode" "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\system/libarc32_arduino101/framework/include"  "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\cores\arduino" "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\variants\arduino_101" "-IC:\Users\Elvar\Documents\Arduino\libraries\Blynk\src" "C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\sketch\urhleypibunadur.ino.ino.cpp" -o "nul"
"C:\Users\Elvar\Documents\ArduinoData\packages\Intel\tools\arc-elf32\1.6.9+1.0.1/bin/arc-elf32-g++" -c -mcpu=quarkse_em -mlittle-endian -g -Os -Wall -fno-reorder-functions -fno-asynchronous-unwind-tables -fno-omit-frame-pointer -fno-defer-pop -Wno-unused-but-set-variable -Wno-main -ffreestanding -fno-stack-protector -mno-sdata -ffunction-sections -fdata-sections -fsigned-char  -fno-rtti -fno-exceptions -D__ARDUINO_ARC__ -std=c++11 -w -x c++ -E -CC -DF_CPU=32000000L -DARDUINO=10801 -DARDUINO_ARC32_TOOLS -DARDUINO_ARCH_ARC32 -D__CPU_ARC__ -DCLOCK_SPEED=32 -DCONFIG_SOC_GPIO_32 -DCONFIG_SOC_GPIO_AON -DINFRA_MULTI_CPU_SUPPORT -DCFW_MULTI_CPU_SUPPORT -DHAS_SHARED_MEM "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\system/libarc32_arduino101/common" "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\system/libarc32_arduino101/drivers" "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\system/libarc32_arduino101/bootcode" "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\system/libarc32_arduino101/framework/include"  "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\cores\arduino" "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\variants\arduino_101" "-IC:\Users\Elvar\Documents\Arduino\libraries\Blynk\src" "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\libraries\CurieBLE\src" "C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\sketch\urhleypibunadur.ino.ino.cpp" -o "nul"
"C:\Users\Elvar\Documents\ArduinoData\packages\Intel\tools\arc-elf32\1.6.9+1.0.1/bin/arc-elf32-g++" -c -mcpu=quarkse_em -mlittle-endian -g -Os -Wall -fno-reorder-functions -fno-asynchronous-unwind-tables -fno-omit-frame-pointer -fno-defer-pop -Wno-unused-but-set-variable -Wno-main -ffreestanding -fno-stack-protector -mno-sdata -ffunction-sections -fdata-sections -fsigned-char  -fno-rtti -fno-exceptions -D__ARDUINO_ARC__ -std=c++11 -w -x c++ -E -CC -DF_CPU=32000000L -DARDUINO=10801 -DARDUINO_ARC32_TOOLS -DARDUINO_ARCH_ARC32 -D__CPU_ARC__ -DCLOCK_SPEED=32 -DCONFIG_SOC_GPIO_32 -DCONFIG_SOC_GPIO_AON -DINFRA_MULTI_CPU_SUPPORT -DCFW_MULTI_CPU_SUPPORT -DHAS_SHARED_MEM "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\system/libarc32_arduino101/common" "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\system/libarc32_arduino101/drivers" "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\system/libarc32_arduino101/bootcode" "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\system/libarc32_arduino101/framework/include"  "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\cores\arduino" "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\variants\arduino_101" "-IC:\Users\Elvar\Documents\Arduino\libraries\Blynk\src" "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\libraries\CurieBLE\src" "-IC:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.1.0_x64__mdqgnx93n4wtt\libraries\LiquidCrystal\src" "C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\sketch\urhleypibunadur.ino.ino.cpp" -o "nul"
"C:\Users\Elvar\Documents\ArduinoData\packages\Intel\tools\arc-elf32\1.6.9+1.0.1/bin/arc-elf32-g++" -c -mcpu=quarkse_em -mlittle-endian -g -Os -Wall -fno-reorder-functions -fno-asynchronous-unwind-tables -fno-omit-frame-pointer -fno-defer-pop -Wno-unused-but-set-variable -Wno-main -ffreestanding -fno-stack-protector -mno-sdata -ffunction-sections -fdata-sections -fsigned-char  -fno-rtti -fno-exceptions -D__ARDUINO_ARC__ -std=c++11 -w -x c++ -E -CC -DF_CPU=32000000L -DARDUINO=10801 -DARDUINO_ARC32_TOOLS -DARDUINO_ARCH_ARC32 -D__CPU_ARC__ -DCLOCK_SPEED=32 -DCONFIG_SOC_GPIO_32 -DCONFIG_SOC_GPIO_AON -DINFRA_MULTI_CPU_SUPPORT -DCFW_MULTI_CPU_SUPPORT -DHAS_SHARED_MEM "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\system/libarc32_arduino101/common" "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\system/libarc32_arduino101/drivers" "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\system/libarc32_arduino101/bootcode" "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\system/libarc32_arduino101/framework/include"  "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\cores\arduino" "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\variants\arduino_101" "-IC:\Users\Elvar\Documents\Arduino\libraries\Blynk\src" "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\libraries\CurieBLE\src" "-IC:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.1.0_x64__mdqgnx93n4wtt\libraries\LiquidCrystal\src" "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\libraries\EEPROM\src" "C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\sketch\urhleypibunadur.ino.ino.cpp" -o "nul"
"C:\Users\Elvar\Documents\ArduinoData\packages\Intel\tools\arc-elf32\1.6.9+1.0.1/bin/arc-elf32-g++" -c -mcpu=quarkse_em -mlittle-endian -g -Os -Wall -fno-reorder-functions -fno-asynchronous-unwind-tables -fno-omit-frame-pointer -fno-defer-pop -Wno-unused-but-set-variable -Wno-main -ffreestanding -fno-stack-protector -mno-sdata -ffunction-sections -fdata-sections -fsigned-char  -fno-rtti -fno-exceptions -D__ARDUINO_ARC__ -std=c++11 -w -x c++ -E -CC -DF_CPU=32000000L -DARDUINO=10801 -DARDUINO_ARC32_TOOLS -DARDUINO_ARCH_ARC32 -D__CPU_ARC__ -DCLOCK_SPEED=32 -DCONFIG_SOC_GPIO_32 -DCONFIG_SOC_GPIO_AON -DINFRA_MULTI_CPU_SUPPORT -DCFW_MULTI_CPU_SUPPORT -DHAS_SHARED_MEM "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\system/libarc32_arduino101/common" "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\system/libarc32_arduino101/drivers" "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\system/libarc32_arduino101/bootcode" "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\system/libarc32_arduino101/framework/include"  "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\cores\arduino" "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\variants\arduino_101" "-IC:\Users\Elvar\Documents\Arduino\libraries\Blynk\src" "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\libraries\CurieBLE\src" "-IC:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.1.0_x64__mdqgnx93n4wtt\libraries\LiquidCrystal\src" "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\libraries\EEPROM\src" "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\libraries\Wire\src" "C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\sketch\urhleypibunadur.ino.ino.cpp" -o "nul"
Using cached library dependencies for file: C:\Users\Elvar\Documents\Arduino\libraries\Blynk\src\utility\BlynkDebug.cpp
Using cached library dependencies for file: C:\Users\Elvar\Documents\Arduino\libraries\Blynk\src\utility\BlynkHandlers.cpp
Using cached library dependencies for file: C:\Users\Elvar\Documents\Arduino\libraries\Blynk\src\utility\utility.cpp
Using cached library dependencies for file: C:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\libraries\CurieBLE\src\BLEAttribute.cpp
Using cached library dependencies for file: C:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\libraries\CurieBLE\src\BLECentral.cpp
Using cached library dependencies for file: C:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\libraries\CurieBLE\src\BLECharacteristic.cpp
Using cached library dependencies for file: C:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\libraries\CurieBLE\src\BLEDescriptor.cpp
Using cached library dependencies for file: C:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\libraries\CurieBLE\src\BLEPeripheral.cpp
Using cached library dependencies for file: C:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\libraries\CurieBLE\src\BLEService.cpp
Using cached library dependencies for file: C:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\libraries\CurieBLE\src\BLETypedCharacteristics.cpp
Using cached library dependencies for file: C:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\libraries\CurieBLE\src\BLEUuid.cpp
Using cached library dependencies for file: C:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\libraries\CurieBLE\src\internal\ble_client.c
Using cached library dependencies for file: C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.1.0_x64__mdqgnx93n4wtt\libraries\LiquidCrystal\src\LiquidCrystal.cpp
Using cached library dependencies for file: C:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\libraries\Wire\src\Wire.cpp
Generating function prototypes...
"C:\Users\Elvar\Documents\ArduinoData\packages\Intel\tools\arc-elf32\1.6.9+1.0.1/bin/arc-elf32-g++" -c -mcpu=quarkse_em -mlittle-endian -g -Os -Wall -fno-reorder-functions -fno-asynchronous-unwind-tables -fno-omit-frame-pointer -fno-defer-pop -Wno-unused-but-set-variable -Wno-main -ffreestanding -fno-stack-protector -mno-sdata -ffunction-sections -fdata-sections -fsigned-char  -fno-rtti -fno-exceptions -D__ARDUINO_ARC__ -std=c++11 -w -x c++ -E -CC -DF_CPU=32000000L -DARDUINO=10801 -DARDUINO_ARC32_TOOLS -DARDUINO_ARCH_ARC32 -D__CPU_ARC__ -DCLOCK_SPEED=32 -DCONFIG_SOC_GPIO_32 -DCONFIG_SOC_GPIO_AON -DINFRA_MULTI_CPU_SUPPORT -DCFW_MULTI_CPU_SUPPORT -DHAS_SHARED_MEM "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\system/libarc32_arduino101/common" "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\system/libarc32_arduino101/drivers" "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\system/libarc32_arduino101/bootcode" "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\system/libarc32_arduino101/framework/include"  "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\cores\arduino" "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\variants\arduino_101" "-IC:\Users\Elvar\Documents\Arduino\libraries\Blynk\src" "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\libraries\CurieBLE\src" "-IC:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.1.0_x64__mdqgnx93n4wtt\libraries\LiquidCrystal\src" "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\libraries\EEPROM\src" "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\libraries\Wire\src" "C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\sketch\urhleypibunadur.ino.ino.cpp" -o "C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\preproc\ctags_target_for_gcc_minus_e.cpp"
"C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.1.0_x64__mdqgnx93n4wtt\tools-builder\ctags\5.8-arduino11/ctags" -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives "C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\preproc\ctags_target_for_gcc_minus_e.cpp"
Compiling sketch...
"C:\Users\Elvar\Documents\ArduinoData\packages\Intel\tools\arc-elf32\1.6.9+1.0.1/bin/arc-elf32-g++" -c -mcpu=quarkse_em -mlittle-endian -g -Os -Wall -fno-reorder-functions -fno-asynchronous-unwind-tables -fno-omit-frame-pointer -fno-defer-pop -Wno-unused-but-set-variable -Wno-main -ffreestanding -fno-stack-protector -mno-sdata -ffunction-sections -fdata-sections -fsigned-char -MMD -fno-rtti -fno-exceptions -D__ARDUINO_ARC__ -std=c++11 -DF_CPU=32000000L -DARDUINO=10801 -DARDUINO_ARC32_TOOLS -DARDUINO_ARCH_ARC32 -D__CPU_ARC__ -DCLOCK_SPEED=32 -DCONFIG_SOC_GPIO_32 -DCONFIG_SOC_GPIO_AON -DINFRA_MULTI_CPU_SUPPORT -DCFW_MULTI_CPU_SUPPORT -DHAS_SHARED_MEM "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\system/libarc32_arduino101/common" "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\system/libarc32_arduino101/drivers" "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\system/libarc32_arduino101/bootcode" "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\system/libarc32_arduino101/framework/include"  "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\cores\arduino" "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\variants\arduino_101" "-IC:\Users\Elvar\Documents\Arduino\libraries\Blynk\src" "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\libraries\CurieBLE\src" "-IC:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.1.0_x64__mdqgnx93n4wtt\libraries\LiquidCrystal\src" "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\libraries\EEPROM\src" "-IC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\libraries\Wire\src" "C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\sketch\urhleypibunadur.ino.ino.cpp" -o "C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\sketch\urhleypibunadur.ino.ino.cpp.o"
C:\Users\Elvar\Documents\Arduino\urhleypibunadur\urhleypibunadur.ino\urhleypibunadur.ino.ino: In function 'int16_t updateFrontAxleOffset()':

C:\Users\Elvar\Documents\Arduino\urhleypibunadur\urhleypibunadur.ino\urhleypibunadur.ino.ino:1001:52: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

writeToLCD(“Enter front axle”, “offset: psi”);

                                                ^

C:\Users\Elvar\Documents\Arduino\urhleypibunadur\urhleypibunadur.ino\urhleypibunadur.ino.ino:1001:52: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

Compiling libraries…
Compiling library “Blynk”
Using previously compiled file: C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\libraries\Blynk\utility\BlynkDebug.cpp.o
Using previously compiled file: C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\libraries\Blynk\utility\BlynkHandlers.cpp.o
Using previously compiled file: C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\libraries\Blynk\utility\utility.cpp.o
Compiling library “CurieBLE”
Using previously compiled file: C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\libraries\CurieBLE\BLEAttribute.cpp.o
Using previously compiled file: C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\libraries\CurieBLE\BLECentral.cpp.o
Using previously compiled file: C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\libraries\CurieBLE\BLECharacteristic.cpp.o
Using previously compiled file: C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\libraries\CurieBLE\BLEDescriptor.cpp.o
Using previously compiled file: C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\libraries\CurieBLE\BLEPeripheral.cpp.o
Using previously compiled file: C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\libraries\CurieBLE\BLEService.cpp.o
Using previously compiled file: C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\libraries\CurieBLE\BLETypedCharacteristics.cpp.o
Using previously compiled file: C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\libraries\CurieBLE\BLEUuid.cpp.o
Using previously compiled file: C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\libraries\CurieBLE\internal\ble_client.c.o
Compiling library “LiquidCrystal”
Using previously compiled file: C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\libraries\LiquidCrystal\LiquidCrystal.cpp.o
Compiling library “EEPROM”
Compiling library “Wire”
Using previously compiled file: C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\libraries\Wire\Wire.cpp.o
Compiling core…
Using previously compiled file: C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\core\variant.cpp.o
Using previously compiled file: C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\core\WInterrupts.c.o
Using previously compiled file: C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\core\hooks.c.o
Using previously compiled file: C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\core\i2c.c.o
Using previously compiled file: C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\core\soc_i2c.c.o
Using previously compiled file: C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\core\wiring.c.o
Using previously compiled file: C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\core\wiring_analog.c.o
Using previously compiled file: C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\core\wiring_digital.c.o
Using previously compiled file: C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\core\wiring_shift.c.o
Using previously compiled file: C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\core\CDCSerialClass.cpp.o
Using previously compiled file: C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\core\IPAddress.cpp.o
Using previously compiled file: C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\core\Print.cpp.o
Using previously compiled file: C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\core\RingBuffer.cpp.o
Using previously compiled file: C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\core\Stream.cpp.o
Using previously compiled file: C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\core\Tone.cpp.o
Using previously compiled file: C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\core\UARTClass.cpp.o
Using previously compiled file: C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\core\WMath.cpp.o
Using previously compiled file: C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\core\WString.cpp.o
Using previously compiled file: C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\core\abi.cpp.o
Using previously compiled file: C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\core\main.cpp.o
Using previously compiled file: C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\core\new.cpp.o
Using previously compiled file: C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\core\stdlib_noniso.cpp.o
Using previously compiled file: C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\core\wiring_pulse.cpp.o
Using previously compiled file: C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\core\core.a
Linking everything together…
“C:\Users\Elvar\Documents\ArduinoData\packages\Intel\tools\arc-elf32\1.6.9+1.0.1/bin/arc-elf32-gcc” -nostartfiles -nodefaultlibs -nostdlib -static -Wl,-X -Wl,-N -Wl,-mcpu=quarkse_em -Wl,-marcelf -Wl,–gc-sections “-TC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\variants\arduino_101/linker_scripts/flash.ld” “-Wl,-Map,C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310/urhleypibunadur.ino.ino.map” -o “C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310/urhleypibunadur.ino.ino.elf” “-LC:\Users\Elvar\AppData\Local\Temp\arduino_build_284310” “-LC:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\variants\arduino_101” -Wl,–whole-archive “-larc32drv_arduino101” -Wl,–no-whole-archive -Wl,–start-group “-larc32drv_arduino101” -lnsim -lc -lm -lgcc “C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\sketch\urhleypibunadur.ino.ino.cpp.o” “C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\libraries\Blynk\utility\BlynkDebug.cpp.o” “C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\libraries\Blynk\utility\BlynkHandlers.cpp.o” “C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\libraries\Blynk\utility\utility.cpp.o” “C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\libraries\CurieBLE\BLEAttribute.cpp.o” “C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\libraries\CurieBLE\BLECentral.cpp.o” “C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\libraries\CurieBLE\BLECharacteristic.cpp.o” “C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\libraries\CurieBLE\BLEDescriptor.cpp.o” “C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\libraries\CurieBLE\BLEPeripheral.cpp.o” “C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\libraries\CurieBLE\BLEService.cpp.o” “C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\libraries\CurieBLE\BLETypedCharacteristics.cpp.o” “C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\libraries\CurieBLE\BLEUuid.cpp.o” “C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\libraries\CurieBLE\internal\ble_client.c.o” “C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\libraries\LiquidCrystal\LiquidCrystal.cpp.o” “C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\libraries\Wire\Wire.cpp.o” “C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\core\variant.cpp.o” “C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310/core\core.a”
cmd /C copy /y “C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310\urhleypibunadur.ino.ino.elf” “C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310…\arduino101_sketch.debug.elf”
1 file(s) copied.

“C:\Users\Elvar\Documents\ArduinoData\packages\Intel\tools\arc-elf32\1.6.9+1.0.1/bin/arc-elf32-objcopy” -S -O binary -R .note -R .comment -R COMMON -R .eh_frame “C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310/urhleypibunadur.ino.ino.elf” “C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310/urhleypibunadur.ino.ino.bin”
“C:\Users\Elvar\Documents\ArduinoData\packages\Intel\tools\arc-elf32\1.6.9+1.0.1/bin/arc-elf32-strip” “C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310/urhleypibunadur.ino.ino.elf”
“C:\Users\Elvar\Documents\ArduinoData\packages\Intel\tools\arc-elf32\1.6.9+1.0.1/bin/arc-elf32-objcopy” -S -O ihex -R .note -R .comment -R COMMON -R .eh_frame “C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310/urhleypibunadur.ino.ino.elf” “C:\Users\Elvar\AppData\Local\Temp\arduino_build_284310/urhleypibunadur.ino.ino.hex”
Using library Blynk at version 0.4.4 in folder: C:\Users\Elvar\Documents\Arduino\libraries\Blynk
Using library CurieBLE at version 1.0 in folder: C:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\libraries\CurieBLE
Using library LiquidCrystal at version 1.0.5 in folder: C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.1.0_x64__mdqgnx93n4wtt\libraries\LiquidCrystal
Using library EEPROM at version 2.0 in folder: C:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\libraries\EEPROM
Using library Wire at version 1.0 in folder: C:\Users\Elvar\Documents\ArduinoData\packages\Intel\hardware\arc32\1.0.7\libraries\Wire
Sketch uses 52156 bytes (33%) of program storage space. Maximum is 155648 bytes.