<!--
  RGB determination of elected colors 
  Values are given from the light sensor of Arduino Nano 33 BLE senors.
  mIv september 2021
-->

<phyphox version="1.7" locale="en"> 
    <title>Color from RGB</title>
    <category>Optics</category>
    <description>
        RGB determination of elected colors 
        Values are given from the light sensor of Arduino Nano 33 BLE senors.
    </description>
    <icon>RGB</icon>
    <color>green</color>

    <data-containers>
    <!-- BLE channels -->
	    <container size="0" static="false" init="">R</container>
	    <container size="0" static="false" init="">G</container>
	    <container size="0" static="false" init="">B</container>
	    <container size="0" static="false" init="">number</container>
            <container size="0" static="false" init="">time</container>

    <!-- indicators of colors, can be 0 or 1 -->
            <container size="1" static="false" init="">red</container>
            <container size="1" static="false" init="">orange</container>
            <container size="1" static="false" init="">yellow</container>
            <container size="1" static="false" init="">green</container>
            <container size="1" static="false" init="">blue</container>
            <container size="1" static="false" init="">white</container>
    </data-containers>

    <input> 
        <bluetooth name="RGB" mode="notification" rate="1" subscribeOnStart="false" id="Arduino">
            <output char="cddf1002-30f7-4671-8b43-5e40ba53514a" conversion="float32LittleEndian" offset="0">R</output>
            <output char="cddf1002-30f7-4671-8b43-5e40ba53514a" conversion="float32LittleEndian" offset="4">G</output>
            <output char="cddf1002-30f7-4671-8b43-5e40ba53514a" conversion="float32LittleEndian" offset="8">B</output>
            <output char="cddf1002-30f7-4671-8b43-5e40ba53514a" conversion="float32LittleEndian" offset="12">number</output>
            <output char="cddf1002-30f7-4671-8b43-5e40ba53514a" extra="time">time</output>
        </bluetooth>
    </input>

    <views>
        <view label="RGB">
            <graph label="RGB" aspectRatio="2.5" style="lines" lineWidth="1" color="ff7e22" partialUpdate="true" history="1" labelX="time" labelY="RGB" labelZ="" unitX="sec" unitY="a.u." unitZ="" logX="false" logY="false" logZ="false" xPrecision="3" yPrecision="3" zPrecision="3" scaleMinX="auto" scaleMaxX="auto" scaleMinY="auto" scaleMaxY="auto" scaleMinZ="auto" scaleMaxZ="auto" minX="0" maxX="0" minY="0" maxY="0" minZ="0" maxZ="0"  mapWidth="0"       >
                <input axis="x" color="red">time</input>
                <input axis="y" clear="false">R</input>
                <input axis="x" color="green">time</input>
                <input axis="y" clear="false">G</input>
                <input axis="x" color="blue">time</input>
                <input axis="y" clear="false">B</input>
            </graph>

            <value label="R" size="1" precision="3" unit="">
                <input>R</input>
            </value>
            <value label="G" size="1" precision="3" unit="">
                <input>G</input>
            </value>
            <value label="B" size="1" precision="3" unit="">
                <input>B</input>
            </value>
            <value label="color n°" size="1" precision="0" unit="">
                <input>number</input>
            </value>

            <value label="red" size="2" precision="0" unit="" color="red">
                <input>red</input>
            </value>
            <value label="orange" size="2" precision="0" unit="" color="orange">
                <input>orange</input>
            </value>
            <value label="yellow" size="2" precision="0" unit="" color="yellow">
                <input>yellow</input>
            </value>
            <value label="green" size="2" precision="0" unit="" color="green">
                <input>green</input>
            </value>
            <value label="blue" size="2" precision="0" unit="" color="blue">
                <input>blue</input>
            </value>
            <value label="white" size="2" precision="0" unit="" color="white">
                <input>white</input>
            </value>
        </view>
    </views>

    <analysis>

        <if equal="true">
            <input as="a" clear="false">number</input>
            <input as="b" type="value">1.0</input>
            <input as="true" type="value">1.0</input>
            <input as="false" type="value">0.0</input>
            <output>red</output>
        </if>

        <if equal="true">
            <input as="a" clear="false">number</input>
            <input as="b" type="value">2.0</input>
            <input as="true" type="value">1.0</input>
            <input as="false" type="value">0.0</input>
            <output>orange</output>
        </if>

        <if equal="true">
            <input as="a" clear="false">number</input>
            <input as="b" type="value">3.0</input>
            <input as="true" type="value">1.0</input>
            <input as="false" type="value">0.0</input>
            <output>yellow</output>
        </if>

        <if equal="true">
            <input as="a" clear="false">number</input>
            <input as="b" type="value">4.0</input>
            <input as="true" type="value">1.0</input>
            <input as="false" type="value">0.0</input>
            <output>green</output>
        </if>

        <if equal="true">
            <input as="a" clear="false">number</input>
            <input as="b" type="value">5.0</input>
            <input as="true" type="value">1.0</input>
            <input as="false" type="value">0.0</input>
            <output>blue</output>
        </if>

        <if equal="true">
            <input as="a" clear="false">number</input>
            <input as="b" type="value">6.0</input>
            <input as="true" type="value">1.0</input>
            <input as="false" type="value">0.0</input>
            <output>white</output>
        </if>
    </analysis>

    <export>
        <set name="RGB and color number">
            <data name="R">R</data>
            <data name="R">G</data>
            <data name="R">B</data>
            <data name="n°">number</data>
        </set>
    </export>

</phyphox>
