//************************************************************************************
//**  
//**  Source name:   E:\DEV\Flowcode\programs\MacroMapExample.fcfx
//**  Title:         
//**  Description:   
//**  Device:        ARD.ATMEGA.ATMEGA328P
//**  
//**  Generated by:  Flowcode v10.1.2.40
//**  Date:          Wednesday, August 21, 2024 10:09:10
//**  Users:         10
//**  Registered to: Steve-Matrix (STEVET)
//**  Licence key: X4QE0C
//**  
//**  
//**  https://www.flowcode.co.uk
//**  
//************************************************************************************


#define MX_ARD

#define MX_CAL_ARD

#define MX_CLK_SPEED 16000000

#define FCP_NULL Unconnected_Port

#define MX_UART_ID
#define MX_UART_UCSRC

#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <avr\io.h>
#include <avr\interrupt.h>
#include <avr\eeprom.h>
#include <avr\wdt.h>


/*========================================================================*\
   Use :Include the type definitions
\*========================================================================*/
#include "C:\ProgramData\MatrixTSL\FlowcodeV10\CAL\internals.c"



MX_UINT8 FCLV_LOOP1;
MX_UINT32 FCLV_LOOP2;
MX_UINT32 FCLV_LOOP3;
MX_UINT32 FCLV_LOOP4;

MX_FLOAT FCM_ReadSensor(MX_UINT8 FCL_SENSORIDX);
void FCM_DisplayData();
void FCM_Initialise();
MX_BOOL FCD_0b4c4_IsSim1__Check();
MX_UINT16 FCD_00fb11_WidthData__GetLUTCount();
MX_UINT16 FCD_00fb10_ASCIIData__GetLUTCount();
MX_UINT32 FCD_09e59_gLCD_Font8__SumWidths(MX_UINT8 FCL_CHARACTER);
MX_UINT8 FCD_09e59_gLCD_Font8__ReadWidth(MX_UINT8 FCL_CHARACTER);
MX_UINT8 FCD_09e59_gLCD_Font8__ReadFontStat(MX_UINT8 FCL_INDEX);
MX_UINT8 FCD_09e59_gLCD_Font8__ReadASCIILUT(MX_UINT8 FCL_CHARACTER, MX_UINT16 FCL_BYTEINDEX);
MX_UINT16 FCD_00fbf_WidthData__GetLUTCount();
MX_UINT16 FCD_00fbe_ASCIIData__GetLUTCount();
MX_UINT32 FCD_09e58_gLCD_Font7__SumWidths(MX_UINT8 FCL_CHARACTER);
MX_UINT8 FCD_09e58_gLCD_Font7__ReadWidth(MX_UINT8 FCL_CHARACTER);
MX_UINT8 FCD_09e58_gLCD_Font7__ReadFontStat(MX_UINT8 FCL_INDEX);
MX_UINT8 FCD_09e58_gLCD_Font7__ReadASCIILUT(MX_UINT8 FCL_CHARACTER, MX_UINT16 FCL_BYTEINDEX);
MX_UINT16 FCD_00fbd_WidthData__GetLUTCount();
MX_UINT16 FCD_00fbc_ASCIIData__GetLUTCount();
MX_UINT32 FCD_09e57_gLCD_Font6__SumWidths(MX_UINT8 FCL_CHARACTER);
MX_UINT8 FCD_09e57_gLCD_Font6__ReadWidth(MX_UINT8 FCL_CHARACTER);
MX_UINT8 FCD_09e57_gLCD_Font6__ReadFontStat(MX_UINT8 FCL_INDEX);
MX_UINT8 FCD_09e57_gLCD_Font6__ReadASCIILUT(MX_UINT8 FCL_CHARACTER, MX_UINT16 FCL_BYTEINDEX);
MX_UINT16 FCD_00fbb_WidthData__GetLUTCount();
MX_UINT16 FCD_00fba_ASCIIData__GetLUTCount();
MX_UINT32 FCD_09e56_gLCD_Font5__SumWidths(MX_UINT8 FCL_CHARACTER);
MX_UINT8 FCD_09e56_gLCD_Font5__ReadWidth(MX_UINT8 FCL_CHARACTER);
MX_UINT8 FCD_09e56_gLCD_Font5__ReadFontStat(MX_UINT8 FCL_INDEX);
MX_UINT8 FCD_09e56_gLCD_Font5__ReadASCIILUT(MX_UINT8 FCL_CHARACTER, MX_UINT16 FCL_BYTEINDEX);
MX_UINT16 FCD_00fb9_WidthData__GetLUTCount();
MX_UINT16 FCD_00fb8_ASCIIData__GetLUTCount();
MX_UINT32 FCD_09e55_gLCD_Font4__SumWidths(MX_UINT8 FCL_CHARACTER);
MX_UINT8 FCD_09e55_gLCD_Font4__ReadWidth(MX_UINT8 FCL_CHARACTER);
MX_UINT8 FCD_09e55_gLCD_Font4__ReadFontStat(MX_UINT8 FCL_INDEX);
MX_UINT8 FCD_09e55_gLCD_Font4__ReadASCIILUT(MX_UINT8 FCL_CHARACTER, MX_UINT16 FCL_BYTEINDEX);
MX_UINT16 FCD_00fb7_WidthData__GetLUTCount();
MX_UINT16 FCD_00fb6_ASCIIData__GetLUTCount();
MX_UINT32 FCD_09e54_gLCD_Font3__SumWidths(MX_UINT8 FCL_CHARACTER);
MX_UINT8 FCD_09e54_gLCD_Font3__ReadWidth(MX_UINT8 FCL_CHARACTER);
MX_UINT8 FCD_09e54_gLCD_Font3__ReadFontStat(MX_UINT8 FCL_INDEX);
MX_UINT8 FCD_09e54_gLCD_Font3__ReadASCIILUT(MX_UINT8 FCL_CHARACTER, MX_UINT16 FCL_BYTEINDEX);
MX_UINT16 FCD_00fb5_WidthData__GetLUTCount();
MX_UINT16 FCD_00fb4_ASCIIData__GetLUTCount();
MX_UINT32 FCD_09e53_gLCD_Font2__SumWidths(MX_UINT8 FCL_CHARACTER);
MX_UINT8 FCD_09e53_gLCD_Font2__ReadWidth(MX_UINT8 FCL_CHARACTER);
MX_UINT8 FCD_09e53_gLCD_Font2__ReadFontStat(MX_UINT8 FCL_INDEX);
MX_UINT8 FCD_09e53_gLCD_Font2__ReadASCIILUT(MX_UINT8 FCL_CHARACTER, MX_UINT16 FCL_BYTEINDEX);
MX_UINT16 FCD_00fb3_WidthData__GetLUTCount();
MX_UINT16 FCD_00fb2_ASCIIData__GetLUTCount();
MX_UINT32 FCD_09e52_gLCD_Font1__SumWidths(MX_UINT8 FCL_CHARACTER);
MX_UINT8 FCD_09e52_gLCD_Font1__ReadWidth(MX_UINT8 FCL_CHARACTER);
MX_UINT8 FCD_09e52_gLCD_Font1__ReadFontStat(MX_UINT8 FCL_INDEX);
MX_UINT8 FCD_09e52_gLCD_Font1__ReadASCIILUT(MX_UINT8 FCL_CHARACTER, MX_UINT16 FCL_BYTEINDEX);

/*========================================================================*\
   Use :Base_GLCD1
       :Macro function declarations
\*========================================================================*/

/*=----------------------------------------------------------------------=*\
   Use :Base_GLCD1
       :Supplementary defines
\*=----------------------------------------------------------------------=*/
#define ReadFontWidth(FONT, CHAR) FCD_0ba72_Base_GLCD1__ReadFontWidth(FONT, CHAR)
#define ReadFontStat(FONT, IDX) FCD_0ba72_Base_GLCD1__ReadFontStat(FONT, IDX)


MX_UINT8 FCD_0ba72_Base_GLCD1__ReadFontWidth(MX_UINT8 FCL_FONT, MX_UINT8 FCL_CHARACTER);
MX_UINT8 FCD_0ba72_Base_GLCD1__ReadFontStat(MX_UINT8 FCL_FONT, MX_UINT8 FCL_INDEX);
MX_UINT8 FCD_0ba72_Base_GLCD1__ReadFontByte(MX_UINT8 FCL_FONT, MX_UINT8 FCL_CHARACTER, MX_UINT16 FCL_BYTEINDEX);
void FCD_04072_LCD_Base1__Clear();
void FCD_04072_LCD_Base1__PrintString(MX_CHAR *FCL_TEXT, MX_UINT16 FCLsz_TEXT);
void FCD_04072_LCD_Base1__PrintAscii(MX_UINT8 FCL_CHARACTER);
void FCD_04072_LCD_Base1__PrintNumber(MX_SINT16 FCL_NUMBER);
void FCD_04072_LCD_Base1__RAMWrite(MX_UINT8 FCL_INDEX, MX_UINT8 FCL_D0, MX_UINT8 FCL_D1, MX_UINT8 FCL_D2, MX_UINT8 FCL_D3, MX_UINT8 FCL_D4, MX_UINT8 FCL_D5, MX_UINT8 FCL_D6, MX_UINT8 FCL_D7);
void FCD_04072_LCD_Base1__ClearLine(MX_UINT8 FCL_LINE);
void FCD_04072_LCD_Base1__Cursor(MX_UINT8 FCL_X, MX_UINT8 FCL_Y);
void FCD_04072_LCD_Base1__Command(MX_UINT8 FCL_INSTRUCTION);
void FCD_04072_LCD_Base1__PrintFormattedNumber(MX_UINT32 FCL_NUMBER, MX_BOOL FCL_FORMAT);
void FCD_04072_LCD_Base1__ScrollDisplay(MX_UINT8 FCL_POSITION, MX_UINT8 FCL_DIRECTION);
void FCD_04072_LCD_Base1__RawSend(MX_UINT8 FCL_DATA, MX_BOOL FCL_TYPE);
void FCD_04072_LCD_Base1__PrintFloat(MX_FLOAT FCL_NUMBER, MX_UINT8 FCL_DECIMALPLACES);
void FCD_04072_LCD_Base1__RemapCharacter(MX_UINT8 FCL_REMAPIDX, MX_UINT8 FCL_SEARCHCHARACTER, MX_UINT8 FCL_REPLACEMENTCHARACTER);
void FCD_04072_LCD_Base1__Start();
void FCD_05782_LCDAdafruitOLED1__WaitForReady();
void FCD_05782_LCDAdafruitOLED1__Clear();
void FCD_05782_LCDAdafruitOLED1__PrintString(MX_CHAR *FCL_TEXT, MX_UINT16 FCLsz_TEXT);
void FCD_05782_LCDAdafruitOLED1__PrintAscii(MX_UINT8 FCL_CHARACTER);
void FCD_05782_LCDAdafruitOLED1__PrintNumber(MX_SINT16 FCL_NUMBER);
void FCD_05782_LCDAdafruitOLED1__RAMWrite(MX_UINT8 FCL_INDEX, MX_UINT8 FCL_D0, MX_UINT8 FCL_D1, MX_UINT8 FCL_D2, MX_UINT8 FCL_D3, MX_UINT8 FCL_D4, MX_UINT8 FCL_D5, MX_UINT8 FCL_D6, MX_UINT8 FCL_D7);
void FCD_05782_LCDAdafruitOLED1__ClearLine(MX_UINT8 FCL_LINE);
void FCD_05782_LCDAdafruitOLED1__Cursor(MX_UINT8 FCL_X, MX_UINT8 FCL_Y);
void FCD_05782_LCDAdafruitOLED1__Command(MX_UINT8 FCL_INSTRUCTION);
void FCD_05782_LCDAdafruitOLED1__PrintFormattedNumber(MX_UINT32 FCL_NUMBER, MX_BOOL FCL_FORMAT);
void FCD_05782_LCDAdafruitOLED1__ScrollDisplay(MX_UINT8 FCL_POSITION, MX_UINT8 FCL_DIRECTION);
void FCD_05782_LCDAdafruitOLED1__RawSend(MX_UINT8 FCL_DATA, MX_UINT8 FCL_MASK);
void FCD_05782_LCDAdafruitOLED1__PrintFloat(MX_FLOAT FCL_NUMBER, MX_UINT8 FCL_DECIMALPLACES);
void FCD_05782_LCDAdafruitOLED1__Start();
void FCD_05782_LCDAdafruitOLED1__Write4Bits(MX_UINT8 FCL_DATA);

/*========================================================================*\
   Use :cal_adc
       :Macro function declarations
\*========================================================================*/
#define MX_ADC_REF1 
#define MX_ADC_TYPE_2 
#define MX_ADC_CHANNEL_1 


/*=----------------------------------------------------------------------=*\
   Use :cal_adc
       :Supplementary defines
\*=----------------------------------------------------------------------=*/
#define FC_ADC_Enable_3 FC_CAL_ADC_Enable_1
#define FC_ADC_Disable_3 FC_CAL_ADC_Disable_1
#define FC_ADC_Sample_3 FC_CAL_ADC_Sample_1

void FC_ADC_Disable_3();
void FC_ADC_Enable_3(MX_UINT8 FCL_CHANNEL, MX_UINT8 FCL_CONV_SPEED, MX_UINT8 FCL_VREF, MX_UINT8 FCL_T_CHARGE);
MX_UINT16 FC_ADC_Sample_3(MX_UINT8 FCL_SAMPLE_MODE);
MX_UINT16 FCD_0cc53_adc_base1__RawSampleInt();
MX_UINT8 FCD_0cc53_adc_base1__RawAverageByte(MX_UINT8 FCL_NUMSAMPLES, MX_UINT8 FCL_DELAYUS);
void FCD_0cc53_adc_base1__GetString(MX_CHAR *FCR_RETVAL, MX_UINT16 FCRsz_RETVAL);
MX_UINT8 FCD_0cc53_adc_base1__GetAverageByte(MX_UINT8 FCL_NUMSAMPLES, MX_UINT8 FCL_DELAYUS);
MX_SINT16 FCD_0cc53_adc_base1__RawAverageInt(MX_UINT8 FCL_NUMSAMPLES, MX_UINT8 FCL_DELAYUS);
MX_UINT16 FCD_0cc53_adc_base1__GetAverageInt(MX_UINT8 FCL_NUMSAMPLES, MX_UINT8 FCL_DELAYUS);
MX_FLOAT FCD_0cc53_adc_base1__GetVoltage();
void FCD_0cc53_adc_base1__RawEnable();
MX_UINT8 FCD_0cc53_adc_base1__RawSampleByte();
MX_UINT16 FCD_0cc53_adc_base1__GetInt();
void FCD_0cc53_adc_base1__RawDisable();
MX_UINT8 FCD_0cc53_adc_base1__GetByte();
MX_UINT32 FCD_0c433_MapFunction1__MapUlong(MX_UINT32 FCL_VALUE, MX_UINT32 FCL_INMIN, MX_UINT32 FCL_INMAX, MX_UINT32 FCL_OUTMIN, MX_UINT32 FCL_OUTMAX, MX_BOOL FCL_CLAMPMINMAX);
MX_SINT16 FCD_0c433_MapFunction1__MapInt(MX_SINT16 FCL_VALUE, MX_SINT16 FCL_INMIN, MX_SINT16 FCL_INMAX, MX_SINT16 FCL_OUTMIN, MX_SINT16 FCL_OUTMAX, MX_BOOL FCL_CLAMPMINMAX);
MX_FLOAT FCD_0c433_MapFunction1__MapFloat(MX_FLOAT FCL_VALUE, MX_FLOAT FCL_INMIN, MX_FLOAT FCL_INMAX, MX_FLOAT FCL_OUTMIN, MX_FLOAT FCL_OUTMAX, MX_BOOL FCL_CLAMPMINMAX);
MX_SINT32 FCD_0c433_MapFunction1__MapLong(MX_SINT32 FCL_VALUE, MX_SINT32 FCL_INMIN, MX_SINT32 FCL_INMAX, MX_SINT32 FCL_OUTMIN, MX_SINT32 FCL_OUTMAX, MX_BOOL FCL_CLAMPMINMAX);
MX_UINT16 FCD_0c433_MapFunction1__MapUInt(MX_UINT16 FCL_VALUE, MX_UINT16 FCL_INMIN, MX_UINT16 FCL_INMAX, MX_UINT16 FCL_OUTMIN, MX_UINT16 FCL_OUTMAX, MX_BOOL FCL_CLAMPMINMAX);
MX_UINT8 FCD_0c433_MapFunction1__MapByte(MX_UINT8 FCL_VALUE, MX_UINT8 FCL_INMIN, MX_UINT8 FCL_INMAX, MX_UINT8 FCL_OUTMIN, MX_UINT8 FCL_OUTMAX, MX_BOOL FCL_CLAMPMINMAX);
MX_BOOL FCD_0b4c3_IsSim1__Check();

/*========================================================================*\
   Use :Potentiometer2
       :Macro function declarations
\*========================================================================*/
#define FCV_00a23_Potentiometer2__COMPONENTLABEL (0)

void FCD_00a23_Potentiometer2__GetString(MX_CHAR *FCR_RETVAL, MX_UINT16 FCRsz_RETVAL);
MX_UINT8 FCD_00a23_Potentiometer2__GetAverageByte(MX_UINT8 FCL_NUMSAMPLES, MX_UINT8 FCL_DELAYUS);
MX_UINT16 FCD_00a23_Potentiometer2__GetAverageInt(MX_UINT8 FCL_NUMSAMPLES, MX_UINT8 FCL_DELAYUS);
MX_FLOAT FCD_00a23_Potentiometer2__GetVoltage();
MX_UINT16 FCD_00a23_Potentiometer2__GetInt();
MX_UINT8 FCD_00a23_Potentiometer2__GetByte();

/*========================================================================*\
   Use :cal_adc
       :Macro function declarations
\*========================================================================*/
#define MX_ADC_REF1 
#define MX_ADC_TYPE_2 
#define MX_ADC_CHANNEL_0 


/*=----------------------------------------------------------------------=*\
   Use :cal_adc
       :Supplementary defines
\*=----------------------------------------------------------------------=*/
#define FC_ADC_Enable_2 FC_CAL_ADC_Enable_1
#define FC_ADC_Disable_2 FC_CAL_ADC_Disable_1
#define FC_ADC_Sample_2 FC_CAL_ADC_Sample_1

void FC_ADC_Disable_2();
void FC_ADC_Enable_2(MX_UINT8 FCL_CHANNEL, MX_UINT8 FCL_CONV_SPEED, MX_UINT8 FCL_VREF, MX_UINT8 FCL_T_CHARGE);
MX_UINT16 FC_ADC_Sample_2(MX_UINT8 FCL_SAMPLE_MODE);
MX_UINT16 FCD_0cc52_adc_base1__RawSampleInt();
MX_UINT8 FCD_0cc52_adc_base1__RawAverageByte(MX_UINT8 FCL_NUMSAMPLES, MX_UINT8 FCL_DELAYUS);
void FCD_0cc52_adc_base1__GetString(MX_CHAR *FCR_RETVAL, MX_UINT16 FCRsz_RETVAL);
MX_UINT8 FCD_0cc52_adc_base1__GetAverageByte(MX_UINT8 FCL_NUMSAMPLES, MX_UINT8 FCL_DELAYUS);
MX_SINT16 FCD_0cc52_adc_base1__RawAverageInt(MX_UINT8 FCL_NUMSAMPLES, MX_UINT8 FCL_DELAYUS);
MX_UINT16 FCD_0cc52_adc_base1__GetAverageInt(MX_UINT8 FCL_NUMSAMPLES, MX_UINT8 FCL_DELAYUS);
MX_FLOAT FCD_0cc52_adc_base1__GetVoltage();
void FCD_0cc52_adc_base1__RawEnable();
MX_UINT8 FCD_0cc52_adc_base1__RawSampleByte();
MX_UINT16 FCD_0cc52_adc_base1__GetInt();
void FCD_0cc52_adc_base1__RawDisable();
MX_UINT8 FCD_0cc52_adc_base1__GetByte();
MX_UINT32 FCD_0c432_MapFunction1__MapUlong(MX_UINT32 FCL_VALUE, MX_UINT32 FCL_INMIN, MX_UINT32 FCL_INMAX, MX_UINT32 FCL_OUTMIN, MX_UINT32 FCL_OUTMAX, MX_BOOL FCL_CLAMPMINMAX);
MX_SINT16 FCD_0c432_MapFunction1__MapInt(MX_SINT16 FCL_VALUE, MX_SINT16 FCL_INMIN, MX_SINT16 FCL_INMAX, MX_SINT16 FCL_OUTMIN, MX_SINT16 FCL_OUTMAX, MX_BOOL FCL_CLAMPMINMAX);
MX_FLOAT FCD_0c432_MapFunction1__MapFloat(MX_FLOAT FCL_VALUE, MX_FLOAT FCL_INMIN, MX_FLOAT FCL_INMAX, MX_FLOAT FCL_OUTMIN, MX_FLOAT FCL_OUTMAX, MX_BOOL FCL_CLAMPMINMAX);
MX_SINT32 FCD_0c432_MapFunction1__MapLong(MX_SINT32 FCL_VALUE, MX_SINT32 FCL_INMIN, MX_SINT32 FCL_INMAX, MX_SINT32 FCL_OUTMIN, MX_SINT32 FCL_OUTMAX, MX_BOOL FCL_CLAMPMINMAX);
MX_UINT16 FCD_0c432_MapFunction1__MapUInt(MX_UINT16 FCL_VALUE, MX_UINT16 FCL_INMIN, MX_UINT16 FCL_INMAX, MX_UINT16 FCL_OUTMIN, MX_UINT16 FCL_OUTMAX, MX_BOOL FCL_CLAMPMINMAX);
MX_UINT8 FCD_0c432_MapFunction1__MapByte(MX_UINT8 FCL_VALUE, MX_UINT8 FCL_INMIN, MX_UINT8 FCL_INMAX, MX_UINT8 FCL_OUTMIN, MX_UINT8 FCL_OUTMAX, MX_BOOL FCL_CLAMPMINMAX);
MX_BOOL FCD_0b4c2_IsSim1__Check();

/*========================================================================*\
   Use :Potentiometer1
       :Macro function declarations
\*========================================================================*/
#define FCV_00a22_Potentiometer1__COMPONENTLABEL (0)

void FCD_00a22_Potentiometer1__GetString(MX_CHAR *FCR_RETVAL, MX_UINT16 FCRsz_RETVAL);
MX_UINT8 FCD_00a22_Potentiometer1__GetAverageByte(MX_UINT8 FCL_NUMSAMPLES, MX_UINT8 FCL_DELAYUS);
MX_UINT16 FCD_00a22_Potentiometer1__GetAverageInt(MX_UINT8 FCL_NUMSAMPLES, MX_UINT8 FCL_DELAYUS);
MX_FLOAT FCD_00a22_Potentiometer1__GetVoltage();
MX_UINT16 FCD_00a22_Potentiometer1__GetInt();
MX_UINT8 FCD_00a22_Potentiometer1__GetByte();

/*========================================================================*\
   Use :Include the chip adaption layer
\*========================================================================*/
#include "C:\ProgramData\MatrixTSL\FlowcodeV10\CAL\includes.c"

