//----------------------------------------------
//
//        Sketch Generated by Visuino
//              www.visuino.com
//          Version  7.8.2.142
//
//------------------ Source --------------------
//
// il9341 spi V1,78.owarduino
//
//----------------------------------------------

#define VISUINO_ARDUINO_MEGA
#define _INHERITED_ILI9341_DISPLAY_
#define _INHERITED_ILI9341_DISPLAY_SERIAL_
#define _INHERITED_ILI9341_DISPLAY_RESET_
#define _INHERITED_ILI9341_DISPLAY_RESET_PIN_
#define __ILI9341_SCROLL__

#include <OpenWire.h>
#include <Mitov.h>
#include <Mitov_FormattedSerial.h>
#include <Wire.h>
#include <Mitov_Basic_I2C.h>
#include <SPI.h>
#include <Mitov_Arduino_SPI.h>
#include <Mitov_BME280_TemperatureHumidity_I2C.h>
#include <Mitov_Timing.h>
#include <Mitov_Converters.h>
#include <Mitov_Math.h>
#include <Mitov_Counter.h>
#include <Mitov_Display_ILI9341.h>
#include <Mitov_Display_ILI9341_SPI.h>
#include <Mitov_Graphics.h>
#include <Mitov_Graphics_Color.h>
#include <GraphicsFont5x7.h>
#include <Mitov_Text.h>

// Arduino Board Declarations

namespace BoardDeclarations
{
Mitov::ArduinoSPI BoardSPI;
} // BoardDeclarations

// Declarations

namespace Declarations
{
Mitov::BME280_TemperatureHumidityI2C PressureTemperatureHumidity1 = Mitov::BME280_TemperatureHumidityI2C( Wire );
Mitov::ClockGenerator ClockGenerator1;
Mitov::AnalogToInteger AnalogToInteger1;
Mitov::MapRange MapRange1;
Mitov::UpDownCounter UpDownCounter1;
Mitov::DisplayILI9341_SPI Display1 = Mitov::DisplayILI9341_SPI( BoardDeclarations::BoardSPI, 10, 9, 8, Mitov::GraphicsFont5x7 );
Mitov::ArduinoSerialStringInput<Mitov::DisplayILI9341_SPI, &Display1> Display1_String_1;
Mitov::GraphicsColorElementDrawLine TArduinoColorGraphicsDrawLine1( Display1 );
Mitov::GraphicsColorElementDrawLine TArduinoColorGraphicsDrawLine2( Display1 );
Mitov::GraphicsColorElementDrawLine TArduinoColorGraphicsDrawLine3( Display1 );
Mitov::GraphicsColorElementDrawLine TArduinoColorGraphicsDrawLine4( Display1 );
Mitov::GraphicsElementSetCursor TArduinoGraphicsSetCursor1( Display1 );
Mitov::MapRange MapRange2;
Mitov::AnalogToInteger AnalogToInteger2;
Mitov::MapRange MapRange3;
Mitov::AnalogToInteger AnalogToInteger3;
Mitov::SubtractValue<int32_t> SubtractValue1;
Mitov::FormattedText_Fixed FormattedText1;
Mitov::FormattedTextLengthElementTyped<Mitov::FormattedTextElementAnalog> TArduinoFormattedTextElementAnalog1( FormattedText1 );
Mitov::FormattedTextLengthElementTyped<Mitov::FormattedTextElementAnalog> TArduinoFormattedTextElementAnalog2( FormattedText1 );
Mitov::FormattedTextLengthElementTyped<Mitov::FormattedTextElementAnalog> TArduinoFormattedTextElementAnalog3( FormattedText1 );
Mitov::DivideByValue<int32_t> DivideByValue1;
Mitov::Counter Counter1;
Mitov::AddValue<int32_t> AddValue1;
} // Declarations

// Bindings Code

namespace BindingsCode
{

void Display1_Elements__0_XInputPin( int32_t ___A_VALUE___ )
{
  Declarations::TArduinoColorGraphicsDrawLine1.X = ___A_VALUE___;
}

void Display1_Elements__0_YInputPin( int32_t ___A_VALUE___ )
{
  Declarations::TArduinoColorGraphicsDrawLine1.Y = ___A_VALUE___;
}

void Display1_Elements__1_XInputPin( int32_t ___A_VALUE___ )
{
  Declarations::TArduinoColorGraphicsDrawLine2.X = ___A_VALUE___;
}

void Display1_Elements__1_YInputPin( int32_t ___A_VALUE___ )
{
  Declarations::TArduinoColorGraphicsDrawLine2.Y = ___A_VALUE___;
}

void Display1_Elements__2_YInputPin( int32_t ___A_VALUE___ )
{
  Declarations::TArduinoColorGraphicsDrawLine3.Y = ___A_VALUE___;
}

void Display1_Elements__2_XInputPin( int32_t ___A_VALUE___ )
{
  Declarations::TArduinoColorGraphicsDrawLine3.X = ___A_VALUE___;
}

void Display1_Elements__3_XInputPin( int32_t ___A_VALUE___ )
{
  Declarations::TArduinoColorGraphicsDrawLine4.X = ___A_VALUE___;
}
} // BindingsCode

// Bindings

namespace Bindings
{
OpenWire::LiveBindingSink<int32_t> Display1_Elements__0_XInputPin( BindingsCode::Display1_Elements__0_XInputPin );
OpenWire::LiveBindingSink<int32_t> Display1_Elements__0_YInputPin( BindingsCode::Display1_Elements__0_YInputPin );
OpenWire::LiveBindingSink<int32_t> Display1_Elements__1_XInputPin( BindingsCode::Display1_Elements__1_XInputPin );
OpenWire::LiveBindingSink<int32_t> Display1_Elements__1_YInputPin( BindingsCode::Display1_Elements__1_YInputPin );
OpenWire::LiveBindingSink<int32_t> Display1_Elements__2_YInputPin( BindingsCode::Display1_Elements__2_YInputPin );
OpenWire::LiveBindingSink<int32_t> Display1_Elements__2_XInputPin( BindingsCode::Display1_Elements__2_XInputPin );
OpenWire::LiveBindingSink<int32_t> Display1_Elements__3_XInputPin( BindingsCode::Display1_Elements__3_XInputPin );
} // Bindings

//The setup function is called once at startup of the sketch
void setup()
{
  Wire.begin();
  Declarations::PressureTemperatureHumidity1.PressureOutputPin.Connect( Declarations::MapRange2.InputPin );
  Declarations::PressureTemperatureHumidity1.PressureOutputPin.Connect( Declarations::TArduinoFormattedTextElementAnalog1.InputPin );
  Declarations::PressureTemperatureHumidity1.TemperatureOutputPin.Connect( Declarations::MapRange1.InputPin );
  Declarations::PressureTemperatureHumidity1.TemperatureOutputPin.Connect( Declarations::TArduinoFormattedTextElementAnalog2.InputPin );
  Declarations::PressureTemperatureHumidity1.HumidityOutputPin.Connect( Declarations::MapRange3.InputPin );
  Declarations::PressureTemperatureHumidity1.HumidityOutputPin.Connect( Declarations::TArduinoFormattedTextElementAnalog3.InputPin );
  Declarations::PressureTemperatureHumidity1.OversamplingPressure = 1;
  Declarations::PressureTemperatureHumidity1.OversamplingTemperature = 1;
  Declarations::PressureTemperatureHumidity1.OversamplingHumidity = 1;
  Declarations::PressureTemperatureHumidity1.Address = true;
  Declarations::ClockGenerator1.OutputPin.Connect( Declarations::PressureTemperatureHumidity1.ClockInputPin );
  Declarations::ClockGenerator1.OutputPin.Connect( Declarations::UpDownCounter1.UpInputPin );
  Declarations::ClockGenerator1.OutputPin.Connect( Declarations::TArduinoColorGraphicsDrawLine1.ClockInputPin );
  Declarations::ClockGenerator1.OutputPin.Connect( Declarations::TArduinoColorGraphicsDrawLine2.ClockInputPin );
  Declarations::ClockGenerator1.OutputPin.Connect( Declarations::TArduinoColorGraphicsDrawLine3.ClockInputPin );
  Declarations::ClockGenerator1.OutputPin.Connect( Declarations::TArduinoColorGraphicsDrawLine4.ClockInputPin );
  Declarations::ClockGenerator1.OutputPin.Connect( Declarations::TArduinoGraphicsSetCursor1.ClockInputPin );
  Declarations::ClockGenerator1.OutputPin.Connect( Declarations::FormattedText1.ClockInputPin );
  Declarations::ClockGenerator1.OutputPin.Connect( Declarations::Counter1.InputPin );
  Declarations::AnalogToInteger1.OutputPin.Connect( Bindings::Display1_Elements__0_YInputPin );
  Declarations::MapRange1.InputRange.Min = -40;
  Declarations::MapRange1.InputRange.Max = 60;
  Declarations::MapRange1.OutputRange.Min = 400;
  Declarations::MapRange1.OutputRange.Max = -50;
  Declarations::MapRange1.OutputPin.Connect( Declarations::AnalogToInteger1.InputPin );
  Declarations::UpDownCounter1.Min.Value = 0;
  Declarations::UpDownCounter1.Max.Value = 330;
  Declarations::Display1.Text.Color = 4278190285;
  Declarations::Display1.Orientation = Mitov::goLeft;
  Declarations::TArduinoColorGraphicsDrawLine1.Width = 12;
  Declarations::TArduinoColorGraphicsDrawLine1.Height = 12;
  Declarations::TArduinoColorGraphicsDrawLine1.Color = 4294901760;
  Declarations::TArduinoColorGraphicsDrawLine2.Width = 12;
  Declarations::TArduinoColorGraphicsDrawLine2.Height = 12;
  Declarations::TArduinoColorGraphicsDrawLine2.Color = 4286381056;
  Declarations::TArduinoColorGraphicsDrawLine3.Width = 12;
  Declarations::TArduinoColorGraphicsDrawLine3.Height = 12;
  Declarations::TArduinoColorGraphicsDrawLine3.Color = 4278190335;
  Declarations::TArduinoColorGraphicsDrawLine4.Width = 0;
  Declarations::TArduinoColorGraphicsDrawLine4.Height = 220;
  Declarations::TArduinoColorGraphicsDrawLine4.Y = 10;
  Declarations::TArduinoColorGraphicsDrawLine4.Color = 4293984255;
  Declarations::MapRange2.InputRange.Min = 98024;
  Declarations::MapRange2.InputRange.Max = 105024;
  Declarations::MapRange2.OutputRange.Min = 270;
  Declarations::MapRange2.OutputRange.Max = -50;
  Declarations::MapRange2.OutputPin.Connect( Declarations::AnalogToInteger2.InputPin );
  Declarations::AnalogToInteger2.OutputPin.Connect( Bindings::Display1_Elements__1_YInputPin );
  Declarations::MapRange3.InputRange.Max = 100;
  Declarations::MapRange3.OutputRange.Min = 400;
  Declarations::MapRange3.OutputRange.Max = -50;
  Declarations::MapRange3.OutputPin.Connect( Declarations::AnalogToInteger3.InputPin );
  Declarations::AnalogToInteger3.OutputPin.Connect( Bindings::Display1_Elements__2_YInputPin );
  Declarations::SubtractValue1.Value = -1;
  Declarations::SubtractValue1.OutputPin.Connect( Bindings::Display1_Elements__3_XInputPin );
  Declarations::FormattedText1.OutputPin.Connect( Declarations::Display1_String_1.InputPin );
  Declarations::FormattedText1.AddReadyElement( (char *)"", 0 );
  Declarations::FormattedText1.AddReadyElement( (char *)" ", 1 );
  Declarations::FormattedText1.AddReadyElement( (char *)" ", 2 );
  Declarations::DivideByValue1.Value = 60;
  Declarations::DivideByValue1.OutputPin.Connect( Declarations::AddValue1.InputPin );
  Declarations::Counter1.Min.Value = 0;
  Declarations::Counter1.Max.Value = 320;
  Declarations::Counter1.OutputPin.Connect( Declarations::DivideByValue1.InputPin );
  Declarations::AddValue1.OutputPin.Connect( Declarations::SubtractValue1.InputPin );
  Declarations::AddValue1.OutputPin.Connect( Bindings::Display1_Elements__0_XInputPin );
  Declarations::AddValue1.OutputPin.Connect( Bindings::Display1_Elements__1_XInputPin );
  Declarations::AddValue1.OutputPin.Connect( Bindings::Display1_Elements__2_XInputPin );

  OpenWire::Component::_SystemInit();
}

// The loop function is called in an endless loop
void loop()
{
  OpenWire::Component::_SystemLoop();
}
