{
  "Config": {
    "Build": {
      "Board": "arduino:avr:uno"
    }
  },
  "Version": "2",
  "Product": "Visuino Pro - Visual Arduino Programming",
  "Content": "OpenWire Diagram",
  "Units": [
    {
      "Name": "__OpenWireRootUnit__",
      "*": [
        {
          "X": 1280,
          "Name": "Arduino",
          "Instance": {
            "Serial": {
              "*": [
                {
                  "+": "TArduinoHardwareSerial"
                }
              ]
            },
            "+": "TArduinoBoard",
            "Modules": {
              "*": [
                {
                  "+": "TArduinoEEPROMModule"
                },
                {
                  "+": "TArduinoWatchdogTimerModule"
                },
                {
                  "+": "TArduinoProcessor328Module"
                }
              ]
            },
            "I2CChannels": {
              "*": [
                {
                  "+": "TArduinoI2C"
                }
              ]
            },
            "Digital": {
              "*": [
                {
                  "+": "TArduinoAdditionalDigitalSerial0Channel"
                },
                {
                  "+": "TArduinoAdditionalDigitalSerial0Channel"
                },
                {
                  "+": "TArduinoAdditionalDigitalInterruptChannel"
                },
                {
                  "+": "TArduinoBasicDigitalPWMInterruptChannel"
                },
                {
                  "+": "TArduinoAdditionalDigitalChannel"
                },
                {
                  "+": "TArduinoBasicDigitalPWMChannel"
                },
                {
                  "+": "TArduinoBasicDigitalPWMChannel"
                },
                {
                  "+": "TArduinoAdditionalDigitalChannel"
                },
                {
                  "DigitalInputPin": {
                    "SourcePin": {
                      "ID": "__OpenWireRootUnit__.Display1.ResetOutputPin"
                    }
                  },
                  "+": "TArduinoAdditionalDigitalChannel"
                },
                {
                  "DigitalInputPin": {
                    "SourcePin": {
                      "ID": "__OpenWireRootUnit__.Display1.RegisterSelectOutputPin"
                    }
                  },
                  "+": "TArduinoBasicDigitalPWMChannel"
                },
                {
                  "DigitalInputPin": {
                    "SourcePin": {
                      "ID": "__OpenWireRootUnit__.Display1.ChipSelectOutputPin"
                    }
                  },
                  "+": "TArduinoBasicDigitalPWMChannel"
                },
                {
                  "+": "TArduinoBasicDigitalPWMSPI0Channel"
                },
                {
                  "+": "TArduinoAdditionalDigitalSPI0Channel"
                },
                {
                  "+": "TArduinoAdditionalDigitalSPI0Channel"
                },
                {
                  "+": "TArduinoCombinedAnalogDigitalChannel"
                },
                {
                  "+": "TArduinoCombinedAnalogDigitalChannel"
                },
                {
                  "+": "TArduinoCombinedAnalogDigitalChannel"
                },
                {
                  "+": "TArduinoCombinedAnalogDigitalChannel"
                },
                {
                  "+": "TArduinoCombinedAnalogDigitalI2C0Channel"
                },
                {
                  "+": "TArduinoCombinedAnalogDigitalI2C0Channel"
                }
              ]
            },
            "SPIChannels": {
              "*": [
                {
                  "InputPin": {
                    "SourcePins": [
                      {
                        "ID": "__OpenWireRootUnit__.Display1.OutputPin"
                      }
                    ]
                  },
                  "+": "TArduinoSPI"
                }
              ]
            },
            "BoardType": "Arduino Uno"
          },
          "Type": "Component",
          "Y": 256
        },
        {
          "X": 912,
          "Name": "Display1",
          "Instance": {
            "OutputPin": {
              "SinkPins": [
                {
                  "Name": "__OpenWireRootUnit__.Arduino.SPIChannels.SPI.InputPin",
                  "ID": "__OpenWireRootUnit__.Arduino.SPIChannels._Item0.InputPin"
                }
              ]
            },
            "RegisterSelectOutputPin": {
              "SinkPins": [
                {
                  "Name": "__OpenWireRootUnit__.Arduino.Digital.Digital[ 9 ].DigitalInputPin",
                  "ID": "__OpenWireRootUnit__.Arduino.Digital._Item9.DigitalInputPin"
                }
              ]
            },
            "+": "TArduinoDisplayST7735",
            "ResetOutputPin": {
              "SinkPins": [
                {
                  "Name": "__OpenWireRootUnit__.Arduino.Digital.Digital[ 8 ].DigitalInputPin",
                  "ID": "__OpenWireRootUnit__.Arduino.Digital._Item8.DigitalInputPin"
                }
              ]
            },
            "ChipSelectOutputPin": {
              "SinkPins": [
                {
                  "Name": "__OpenWireRootUnit__.Arduino.Digital.Digital[ 10 ].DigitalInputPin",
                  "ID": "__OpenWireRootUnit__.Arduino.Digital._Item10.DigitalInputPin"
                }
              ]
            },
            "Orientation": "goDown",
            "Elements": {
              "*": [
                {
                  "X": 5,
                  "Name": "Draw Bitmap1",
                  "+": "TArduinoColorGraphicsElementDrawBitmap",
                  "Bitmap": {
                    "Data": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhpdJiosmXkzN7upNzrDuDM2uaQqLJJnEhJIDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAERFEDykrkWkyN7imNzvDuDM2uqgpLZl2HR1eIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQ1DEzEys6Y0Nsj9NDfY\/zU54f81OeT\/NTnh\/zU51\/82OcfrKi2ZVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACotl1k1OsjtNTnY\/zU54f81OeT\/NDjg\/zQ31v8yNcf8LzOyoA8PPxAAAAAAAAAAAAAAAAAAAAAAAAAAABMTThoyM7rbMDPS\/zE03P8zNuD\/NDjj\/zU55P81OeX\/NTnl\/zU54\/82Os7+LDGlbAAAAAAAAAAAAAAAAAAAAAAtMqZwNjrO\/jU54\/81OeX\/NTnl\/zQ45P80N+L\/MjXf\/zE02\/8wM9D\/MTO51RgYSBUAAAAAAAAAAAAAAAAAAAABLzCxwy4wz\/8vMdf\/MDPb\/zI13v8zN+H\/NDjk\/zU55f81OeX\/NTnl\/zU55P81Oc78JCiMRQAAAAAAAAAAJiaISTY6zf01OeT\/NTnl\/zU55f81OeT\/NDjj\/zM24P8xNN3\/MDPa\/y8x1\/8uMM3\/LjCwuQAAAAAAAAAAAAAAAB8fdlIuL8H\/LS\/S\/y4w1v8wMtn\/MTTc\/zI13\/8zN+L\/NDjk\/zU55f81OeX\/NTnl\/zU54v82OcfhHBw4CRcXRQs1OsbjNTnj\/zU55f81OeX\/NTjk\/zQ44\/8zN+H\/MjXe\/zEz2\/8vMtj\/LjDV\/y0u0f8tLr7\/HR10RgAAAAAAAAAAKy2orissyv8sLtD\/LS\/U\/y8x1\/8wMtn\/MTTc\/zI13\/8zN+H\/NDjk\/zQ45P81OeX\/NTnl\/zU52P8sLqFyLDCheDU52P81OeX\/NTnl\/zQ45P80OOP\/Mzbh\/zI13v8xNNv\/MDLZ\/y4w1v8tL9P\/LC3Q\/yssyP8rK6WjAAAAAAAAAAAtLbHmKivL\/ysszv8sLtH\/LjDU\/y8x1\/8wMtr\/MTTc\/zI13v8zNuD\/NDfi\/zQ44\/80OOT\/NTnk\/zY5xt02OcbiNTjk\/zQ45P80OOP\/Mzfi\/zM24P8yNd7\/MTPb\/zAy2f8uMdb\/LS\/T\/ywt0P8rLM3\/KirK\/y0trtsAAAAAAAAAAiwssf4pKcn\/KivM\/ystz\/8tLtH\/LjDU\/y8x1\/8wMtn\/MTPb\/zE03f8yNd\/\/Mzbg\/zM34f8zN+L\/NTjP\/zU40P8zN+H\/Mzbh\/zI24P8yNd7\/MTTc\/zAz2v8vMtj\/LjDW\/y0v0\/8sLtH\/KyzO\/yory\/8pKcj\/Kiuv9QAAAAAAAAADKyuw\/igox\/8pKsn\/KivM\/ystz\/8sLtH\/LS\/U\/y4w1v8vMdj\/MDLZ\/zAz2\/8xNNz\/MTTd\/zI13v8zNtX\/MzXW\/zI13v8xNN3\/MTTc\/zAz2\/8wMtn\/LzHX\/y4w1f8tL9P\/LC7Q\/ysszv8qK8v\/KSnJ\/ygoxv8qKq\/1AAAAAAAAAAAsLK7rKCjG\/ygox\/8pKsn\/KivM\/ysszv8sLdD\/LS\/S\/y4w1P8uMNb\/LzHX\/y8y2P8wMtn\/MDPa\/zAz2f8wM9r\/MDPa\/zAy2f8vMtj\/LzHX\/y4w1f8tL9T\/LS7S\/ywt0P8rLM3\/KivL\/ykpyf8oKMb\/KCjG\/ywsruAAAAAAAAAAACsrqcIoKMX\/KCjG\/ygox\/8pKcn\/KivL\/ysszf8rLc\/\/LC7R\/y0u0v8tL9T\/LjDV\/y4w1f8uMNb\/LjHW\/y4x1v8uMNb\/LjDV\/y4w1P8tL9P\/LS7S\/ywt0P8rLM7\/KivM\/yoqyv8pKcj\/KCjG\/ygoxv8oKMT\/KyuptgAAAAAAAAAAJCSLhCkpvv8oKMb\/KCjG\/ygoxv8oKcj\/KSrK\/yorzP8rLM3\/KyzP\/ywt0P8sLtH\/LS7R\/y0u0v8tLtL\/LS7S\/y0u0v8sLtH\/LC7Q\/ywtz\/8rLM7\/KyvN\/yory\/8pKsn\/KCjH\/ygoxv8oKMb\/KCjG\/ykpvf8jI4h5AAAAAAAAAAAXF1EsKyuz\/igoxv8oKMb\/KCjG\/ygoxv8oKMb\/KSnI\/ykqyv8qKsv\/KivM\/ysszf8rLM7\/KyzO\/ysszv8rLM7\/KyzO\/ysszf8qK83\/KivM\/yoqyv8pKcn\/KCnI\/ygoxv8oKMb\/KCjG\/ygoxv8oKMb\/Kyuz\/RYWUiIAAAAAAAAAAAAAAAApKaS3KCjC\/ygoxv8oKMb\/KCjG\/ygoxv8oKMb\/KCjG\/ygox\/8pKcj\/KSnJ\/ykqyv8pKsr\/KirK\/ykqyv8pKsr\/KSrJ\/ykpyf8oKcj\/KCjH\/ygoxv8oKMb\/KCjG\/ygoxv8oKMb\/KCjG\/ygowf8qKqSsAAAAAAAAAAAAAAAAAAAAABoaWjAqKrL7KCjF\/ygoxv8oKMb\/KCjG\/ygoxv8oKMb\/KCjG\/ygoxv8oKMb\/KCjG\/ygoxv8oKMb\/KCjG\/ygoxv8oKMb\/KCjG\/ygoxv8oKMb\/KCjG\/ygoxv8oKMb\/KCjG\/ygoxv8oKMX\/Kyuy+RoaWycAAAAAAAAAAAAAAAAAAAAAAAAAACYml4wpKbz\/KCjG\/ygoxv8oKMb\/KCjG\/ygoxv8oKMb\/KCjG\/ygoxv8oKMb\/KCjG\/ygoxv8oKMb\/KCjG\/ygoxv8oKMb\/KCjG\/ygoxv8oKMb\/KCjG\/ygoxv8oKMb\/KCjG\/ykpu\/8nJ5aBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfCCsrqtEoKML\/KCjG\/ygoxv8oKMb\/KCjG\/ygoxv8oKMb\/KCjG\/ygoxv8oKMb\/KCjG\/ygoxv8oKMb\/KCjG\/ygoxv8oKMb\/KCjG\/ygoxv8oKMb\/KCjG\/ygoxv8oKMH\/LCypyQAAMwUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBRSJSsrru8oKMT\/KCjG\/ygoxv8oKMb\/KCjG\/ygoxv8oKMb\/KCjG\/ygoxv8oKMb\/KCjG\/ygoxv8oKMb\/KCjG\/ygoxv8oKMb\/KCjG\/ygoxv8oKMb\/KCjE\/ysrr+oYGFIfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHR1yRSoqsvooKMX\/KCjG\/ygoxv8oKMb\/KCjG\/ygoxv8oKMb\/KCjG\/ygoxv8oKMb\/KCjG\/ygoxv8oKMb\/KCjG\/ygoxv8oKMb\/KCjG\/ygoxf8rK7D3HR1wPQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIyOCXisrtP0oKMX\/KCjG\/ygoxv8oKMb\/KCjG\/ygoxv8oKMb\/KCjG\/ygoxv8oKMb\/KCjG\/ygoxv8oKMb\/KCjG\/ygoxv8oKMX\/Kiqz\/CEhgVUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIyOLbCsrtP4oKMX\/KCjG\/ygoxv8oKMb\/KCjG\/ygoxv8oKMb\/KCjG\/ygoxv8oKMb\/KCjG\/ygoxv8oKMb\/KCjF\/ysrtP0hIYliAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIyOKbSsrs\/4oKMX\/KCjG\/ygoxv8oKMb\/KCjG\/ygoxv8oKMb\/KCjG\/ygoxv8oKMb\/KCjG\/ygoxf8rK7P9IyOMZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIyOHZCoqs\/woKMX\/KCjG\/ygoxv8oKMb\/KCjG\/ygoxv8oKMb\/KCjG\/ygoxv8oKMT\/Kiqy+iEhhVwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHx98UioqsfYoKMP\/KCjG\/ygoxv8oKMb\/KCjG\/ygoxv8oKMb\/KCjD\/yoqr\/QeHnpLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRlsOysrr+ooKMH\/KCjG\/ygoxv8oKMb\/KCjG\/ygowf8sLK7nHBxpNQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhZSIisrqtMpKb7\/KCjG\/ygoxv8pKb3\/LCyqzhERVR4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFRUqDCkpoawqKrj\/Kiq3\/ykpoKUZGTMKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQki3EjI4xrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
                    "Width": 32,
                    "Height": 32
                  },
                  "Y": 10
                },
                {
                  "X": 70,
                  "Name": "Text Field1",
                  "InputPin": {
                    "SourcePin": {
                      "ID": "__OpenWireRootUnit__.TextToInteger1.OutputPin"
                    }
                  },
                  "+": "TArduinoColorGraphicsElementTextFeld",
                  "Size": 3,
                  "Y": 20
                },
                {
                  "X": 5,
                  "Name": "Draw Bitmap1",
                  "+": "TArduinoColorGraphicsElementDrawBitmap",
                  "Bitmap": {
                    "Data": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXTUNJpNYG3m1biGpwnciuLp0IqSXXhtnSDYSDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARDMRD5hhHWm8diOmxHskuLlxIaiVWhl2XjoOIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQygNE6xlHqbAcR\/90Xsd\/92CHf\/kiB3\/5Ysf\/+CLIv\/ShSXromYeVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJ1nHFnThiXt5I4j\/+qPIP\/ojB7\/4YYe\/9V\/Hv\/FdiD8r2kfoD8vDxAAAAAAAAAAAAAAAAAAAAAAAAAAAE4xCRq2ax\/by3Qb\/9d7Gv\/dgBv\/4oYd\/+eLHv\/skB\/\/8ZQg\/\/GVIf\/aiST+sXEhbAAAAAAAAAAAAAAAAAAAAACvbx9w24ok\/vGVIf\/ylSH\/8ZQg\/+yPH\/\/nih7\/4oUc\/9yAG\/\/PeBz\/t2sg1UgwDBUAAAAAAAAAAAAAAAAAAAABs2gfw8xzGv\/Tdxn\/2X0a\/96CHP\/khx3\/6Y0e\/++SIP\/ylSD\/85Yh\/\/KVIf\/ZiSX8k1wZRQAAAAAAAAAAj1obSdmKJf3ylSH\/85Yh\/\/OWIf\/ylSD\/7pIg\/+mMHv\/khx3\/3oIc\/9l8Gv\/NdRv\/sWgeuQAAAAAAAAAAAAAAAHlHFVLDcB3\/0nYZ\/9R4Gf\/afhv\/4IMc\/+WJHf\/rjh\/\/8JMg\/\/OWIf\/zliH\/85Yh\/\/CUIf\/RhSbhODgACUUuFwvThSbj8JUh\/\/OWIf\/zliH\/85Yh\/\/OWIf\/wkyD\/644f\/+WJHf\/fgxz\/2n4b\/9R4Gf\/Bbx3\/dEUVRgAAAAAAAAAArmYers50Gf\/Sdhn\/1XkZ\/9t+G\/\/ghBz\/5ooe\/+yPH\/\/xlCD\/85Yh\/\/OWIf\/zliH\/85Yh\/+SPI\/+pbR9yqmwfeOWPI\/\/zliH\/85Yh\/\/OWIf\/zliH\/85Yh\/\/GUIP\/sjx\/\/5okd\/+CEHP\/bfhv\/1XkZ\/810Gv+sZR+jAAAAAAAAAAC5ax\/m0nYZ\/9J2Gf\/VeRn\/238b\/+GEHP\/mih7\/7I8f\/\/GUIP\/zliH\/85Yh\/\/OWIf\/zliH\/8pUh\/9GFJt3Rhibi8pUh\/\/OWIf\/zliH\/85Yh\/\/OWIf\/zliH\/8ZQg\/+yPH\/\/miR3\/4IQc\/9t+G\/\/VeRn\/0nYZ\/7ZsH9sAAAAAAAAAArttHv7Sdhn\/0nYZ\/9V5Gf\/bfhv\/4IQc\/+aJHf\/sjx\/\/8ZQg\/\/OWIf\/zliH\/85Yh\/\/OWIf\/zliH\/3Ysk\/96MJP\/zliH\/85Yh\/\/OWIf\/zliH\/85Yh\/\/OWIf\/xlCD\/644f\/+aJHf\/ghBz\/2n4b\/9V5Gf\/Sdhn\/um0f9QAAAABVAAADu20e\/tJ2Gf\/Sdhn\/1HgZ\/9p9Gv\/fgxz\/5Ygd\/+qOH\/\/wkyD\/8pUh\/\/OWIf\/zliH\/85Yh\/\/OWIf\/okSL\/6ZEi\/\/OWIf\/zliH\/85Yh\/\/OWIf\/zliH\/8pUh\/\/CTIP\/qjR7\/5Ygd\/9+DHP\/ZfRr\/1HgZ\/9J2Gf+7bR\/1AAAAAAAAAAC4bB\/r0nYZ\/9J2Gf\/Tdxn\/2Hwa\/96BG\/\/jhx3\/6Iwe\/+6RH\/\/ylSD\/85Yh\/\/OWIf\/zliH\/85Yh\/\/GVIf\/ylSH\/85Yh\/\/OWIf\/zliH\/85Yh\/\/OWIf\/ylSD\/7ZEf\/+iMHv\/jhh3\/3YEb\/9h8Gv\/Tdxn\/0nYZ\/7hsHuAAAAAAAAAAALRqH8LRdRn\/0nYZ\/9J2Gf\/Wehr\/3H8b\/+GEHP\/miR3\/644f\/\/CTIP\/ylSD\/85Yh\/\/OWIf\/zliH\/85Yh\/\/OWIf\/zliH\/85Yh\/\/OWIf\/zliH\/8pUg\/\/CTIP\/rjh\/\/5okd\/+GEHP\/bfxv\/1noa\/9J2Gf\/QdRn\/s2kgtgAAAAAAAAAAlFYZhMpzG\/\/Sdhn\/0nYZ\/9R4Gf\/ZfRr\/3oIc\/+OHHf\/oix7\/7I8f\/\/CTIP\/ylSD\/85Yh\/\/OWIf\/zliH\/85Yh\/\/OWIf\/zliH\/85Yh\/\/KVIP\/wkyD\/7I8f\/+iLHv\/jhh3\/3oIc\/9l9Gv\/UeBn\/0nYZ\/8lyG\/+RVBl5AAAAAAAAAABWNBEsvm8e\/tJ2Gf\/Sdhn\/0nYZ\/9Z6Gv\/bfxv\/4IMc\/+SIHf\/ojB7\/7I8f\/++SIP\/ylSD\/8pUh\/\/OWIf\/zliH\/85Yh\/\/KVIf\/ylSD\/75Ig\/+yPH\/\/oix7\/5Icd\/+CDHP\/bfxv\/1noa\/9J2Gf\/Sdhn\/vm0e\/Vo0DyIAAAAAAAAAAAAAAACvZx63znQa\/9J2Gf\/Sdhn\/03cZ\/9h8Gv\/cgBv\/4IQc\/+SHHf\/nix7\/6o4f\/+2QH\/\/vkiD\/8JMg\/\/CTIP\/wkyD\/75Ig\/+2QH\/\/qjh\/\/54se\/+SHHf\/ghBz\/3IAb\/9h7Gv\/Tdxn\/0nYZ\/8x0Gv+uZh+sAAAAAAAAAAAAAAAAAAAAAF86DzC8bR770XUZ\/9J2Gf\/Sdhn\/1HgZ\/9h8Gv\/cgBv\/4IMc\/+OGHf\/liR3\/6Ise\/+mNHv\/qjh\/\/644f\/+qNHv\/pjB7\/6Ise\/+WJHf\/jhh3\/34Mc\/9yAG\/\/YfBr\/1HgZ\/9J2Gf\/RdRn\/vGwd+WI6EycAAAAAAAAAAAAAAAAAAAAAAAAAAKBeG4zHchv\/0nYZ\/9J2Gf\/Sdhn\/1HgZ\/9h7Gv\/bfxv\/3oEb\/+CEHP\/ihh3\/5Icd\/+WIHf\/liB3\/5Ygd\/+SHHf\/ihh3\/4IQc\/96BG\/\/bfhv\/13sa\/9R4Gf\/Sdhn\/0nYZ\/8ZxHP+eXBuBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHx8ACLRqH9HNdBr\/0nYZ\/9J2Gf\/Sdhn\/03cZ\/9Z6Gv\/ZfBr\/238b\/92AG\/\/eghz\/34Mc\/9+DHP\/fghz\/3oIc\/92AG\/\/bfxv\/2Xwa\/9Z6Gv\/Tdxn\/0nYZ\/9J2Gf\/NdBr\/tGofyTMzAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWTcNJblrHu\/QdRn\/0nYZ\/9J2Gf\/Sdhn\/0nYZ\/9R3Gf\/WeRn\/13sa\/9h8Gv\/ZfRr\/2X0a\/9l9Gv\/YfBr\/13sa\/9V5Gf\/Tdxn\/0nYZ\/9J2Gf\/Sdhn\/z3UZ\/7lrHupaMRAfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeUYWRbxuHfrRdRn\/0nYZ\/9J2Gf\/Sdhn\/0nYZ\/9J2Gf\/Sdhn\/03cZ\/9R4Gf\/UeBn\/1HgZ\/9N3Gf\/Sdhn\/0nYZ\/9J2Gf\/Sdhn\/0nYZ\/9F1Gf+7bR73eUcUPQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAilEYXr9tHv3RdRn\/0nYZ\/9J2Gf\/Sdhn\/0nYZ\/9J2Gf\/Sdhn\/0nYZ\/9J2Gf\/Sdhn\/0nYZ\/9J2Gf\/Sdhn\/0nYZ\/9J2Gf\/RdRn\/vm4e\/IpRGFUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAklcZbL5vHf7RdRn\/0nYZ\/9J2Gf\/Sdhn\/0nYZ\/9J2Gf\/Sdhn\/0nYZ\/9J2Gf\/Sdhn\/0nYZ\/9J2Gf\/Sdhn\/0XUZ\/75tHv2RVRpiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAk1YZbb5uHv7RdRn\/0nYZ\/9J2Gf\/Sdhn\/0nYZ\/9J2Gf\/Sdhn\/0nYZ\/9J2Gf\/Sdhn\/0nYZ\/9F1Gf++bR79k1YZZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjlQZZL1uHvzRdRn\/0nYZ\/9J2Gf\/Sdhn\/0nYZ\/9J2Gf\/Sdhn\/0nYZ\/9J2Gf\/QdRn\/vG4d+o1TGFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgk0VUrpsH\/bPdRn\/0nYZ\/9J2Gf\/Sdhn\/0nYZ\/9J2Gf\/Sdhn\/z3UZ\/7tsH\/SEThdLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcEUVO7lrHurNdBr\/0nYZ\/9J2Gf\/Sdhn\/0nYZ\/8x0Gv+4bB7nbkMTNQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWjQPIrVqH9PJchv\/0nYZ\/9J2Gf\/Ichv\/tGogzlUzER4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPyoADKpjHazDcBz\/wnAd\/6lkHaUzGQAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJRYG3GTWBprAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
                    "Width": 32,
                    "Height": 32
                  },
                  "Y": 65
                },
                {
                  "X": 70,
                  "Name": "Text Field1",
                  "InputPin": {
                    "SourcePin": {
                      "ID": "__OpenWireRootUnit__.TextToInteger2.OutputPin"
                    }
                  },
                  "+": "TArduinoColorGraphicsElementTextFeld",
                  "Size": 3,
                  "Y": 75
                }
              ]
            }
          },
          "Type": "Component",
          "Y": 720
        },
        {
          "X": 416,
          "Name": "CustomCode1",
          "Instance": {
            "ClockInputPin": {
              "SourcePins": [
                {
                  "ID": "__OpenWireRootUnit__.ClockGenerator1.OutputPin"
                }
              ]
            },
            "+": "TArduinoCustomCode",
            "OnExecute": "{\r\n       pox.update();\r\n       Text1.Send(String(pox.getHeartRate()));\r\n       Text2.Send(String(pox.getSpO2()));\r\n}",
            "GlobalDeclarations": "PulseOximeter pox;\r\nuint32_t tsLastReport = 0;",
            "Members": "PulseOximeter pox;",
            "OnInit": "pox.begin();",
            "Outputs": {
              "*": [
                {
                  "Name": "Text1",
                  "OutputPin": {
                    "SinkPins": [
                      {
                        "ID": "__OpenWireRootUnit__.ChangeOnly1.InputPin"
                      }
                    ]
                  },
                  "+": "TArduinoCustomCodeOutputTextElement"
                },
                {
                  "Name": "Text2",
                  "OutputPin": {
                    "SinkPins": [
                      {
                        "ID": "__OpenWireRootUnit__.ChangeOnly2.InputPin"
                      }
                    ]
                  },
                  "+": "TArduinoCustomCodeOutputTextElement"
                }
              ]
            },
            "Defines": "#define REPORTING_PERIOD_MS     1000\r\n",
            "Includes": "#include <MAX30100_PulseOximeter.h>"
          },
          "Type": "Component",
          "Y": 768
        },
        {
          "X": 256,
          "Name": "ClockGenerator1",
          "Instance": {
            "Frequency": 100,
            "OutputPin": {
              "SinkPins": [
                {
                  "ID": "__OpenWireRootUnit__.CustomCode1.ClockInputPin"
                }
              ]
            },
            "+": "TArduinoClockGenerator"
          },
          "Type": "Component",
          "Y": 768
        },
        {
          "X": 608,
          "Name": "ChangeOnly1",
          "Instance": {
            "OutputPin": {
              "SinkPins": [
                {
                  "ID": "__OpenWireRootUnit__.TextToInteger1.InputPin"
                }
              ]
            },
            "InputPin": {
              "SourcePin": {
                "Name": "__OpenWireRootUnit__.CustomCode1.Outputs.Text.OutputPin",
                "ID": "__OpenWireRootUnit__.CustomCode1.Outputs._Item0.OutputPin"
              }
            },
            "+": "TArduinoTextChangeOnly"
          },
          "Type": "Component",
          "Y": 784
        },
        {
          "X": 608,
          "Name": "ChangeOnly2",
          "Instance": {
            "OutputPin": {
              "SinkPins": [
                {
                  "ID": "__OpenWireRootUnit__.TextToInteger2.InputPin"
                }
              ]
            },
            "InputPin": {
              "SourcePin": {
                "Name": "__OpenWireRootUnit__.CustomCode1.Outputs.Text.OutputPin",
                "ID": "__OpenWireRootUnit__.CustomCode1.Outputs._Item1.OutputPin"
              }
            },
            "+": "TArduinoTextChangeOnly"
          },
          "Type": "Component",
          "Y": 848
        },
        {
          "X": 752,
          "Name": "TextToInteger1",
          "Instance": {
            "InputPin": {
              "SourcePin": {
                "ID": "__OpenWireRootUnit__.ChangeOnly1.OutputPin"
              }
            },
            "OutputPin": {
              "SinkPins": [
                {
                  "Name": "__OpenWireRootUnit__.Display1.Elements.Text Field.InputPin",
                  "ID": "__OpenWireRootUnit__.Display1.Elements._Item1.InputPin"
                }
              ]
            },
            "+": "TArduinoTextToInteger"
          },
          "Type": "Component",
          "Y": 784
        },
        {
          "X": 752,
          "Name": "TextToInteger2",
          "Instance": {
            "InputPin": {
              "SourcePin": {
                "ID": "__OpenWireRootUnit__.ChangeOnly2.OutputPin"
              }
            },
            "OutputPin": {
              "SinkPins": [
                {
                  "Name": "__OpenWireRootUnit__.Display1.Elements.Text Field.InputPin",
                  "ID": "__OpenWireRootUnit__.Display1.Elements._Item3.InputPin"
                }
              ]
            },
            "+": "TArduinoTextToInteger"
          },
          "Type": "Component",
          "Y": 848
        }
      ],
      "Type": "Diagram",
      "Selection": [
        "TextToInteger1"
      ]
    }
  ]
}
