Files
python-gpiozero/docs/images/device_hierarchy.svg

749 lines
48 KiB
XML

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.38.0 (20140413.2041)
-->
<!-- Title: classes Pages: 1 -->
<svg width="1009pt" height="1413pt"
viewBox="0.00 0.00 1009.00 1413.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 1409)">
<title>classes</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-1409 1005,-1409 1005,4 -4,4"/>
<!-- ValuesMixin -->
<g id="node1" class="node"><title>ValuesMixin</title>
<polygon fill="#c69ee0" stroke="#c69ee0" points="72,-523 0,-523 0,-487 72,-487 72,-523"/>
<text text-anchor="middle" x="36" y="-502.5" font-family="Sans" font-size="10.00" fill="#000000">ValuesMixin</text>
</g>
<!-- SourceMixin -->
<g id="node2" class="node"><title>SourceMixin</title>
<polygon fill="#c69ee0" stroke="#c69ee0" points="285.5,-352 211.5,-352 211.5,-316 285.5,-316 285.5,-352"/>
<text text-anchor="middle" x="248.5" y="-331.5" font-family="Sans" font-size="10.00" fill="#000000">SourceMixin</text>
</g>
<!-- SharedMixin -->
<g id="node3" class="node"><title>SharedMixin</title>
<polygon fill="#c69ee0" stroke="#c69ee0" points="1001,-284 926,-284 926,-248 1001,-248 1001,-284"/>
<text text-anchor="middle" x="963.5" y="-263.5" font-family="Sans" font-size="10.00" fill="#000000">SharedMixin</text>
</g>
<!-- EventsMixin -->
<g id="node4" class="node"><title>EventsMixin</title>
<polygon fill="#c69ee0" stroke="#c69ee0" points="438.5,-668 365.5,-668 365.5,-632 438.5,-632 438.5,-668"/>
<text text-anchor="middle" x="402" y="-647.5" font-family="Sans" font-size="10.00" fill="#000000">EventsMixin</text>
</g>
<!-- HoldMixin -->
<g id="node5" class="node"><title>HoldMixin</title>
<polygon fill="#c69ee0" stroke="#c69ee0" points="597.5,-452 535.5,-452 535.5,-416 597.5,-416 597.5,-452"/>
<text text-anchor="middle" x="566.5" y="-431.5" font-family="Sans" font-size="10.00" fill="#000000">HoldMixin</text>
</g>
<!-- Device -->
<g id="node6" class="node"><title>Device</title>
<polygon fill="#9ec6e0" stroke="#9ec6e0" points="162,-523 108,-523 108,-487 162,-487 162,-523"/>
<text text-anchor="middle" x="135" y="-502.5" font-family="Sans" font-size="10.00" fill="#000000">Device</text>
</g>
<!-- Device&#45;&gt;ValuesMixin -->
<g id="edge2" class="edge"><title>Device&#45;&gt;ValuesMixin</title>
<path fill="none" stroke="black" d="M107.75,-505C99.8463,-505 90.9355,-505 82.1705,-505"/>
<polygon fill="black" stroke="black" points="82.0171,-501.5 72.0171,-505 82.017,-508.5 82.0171,-501.5"/>
</g>
<!-- GPIODevice -->
<g id="node7" class="node"><title>GPIODevice</title>
<polygon fill="#9ec6e0" stroke="#9ec6e0" points="284.5,-500 212.5,-500 212.5,-464 284.5,-464 284.5,-500"/>
<text text-anchor="middle" x="248.5" y="-479.5" font-family="Sans" font-size="10.00" fill="#000000">GPIODevice</text>
</g>
<!-- GPIODevice&#45;&gt;Device -->
<g id="edge1" class="edge"><title>GPIODevice&#45;&gt;Device</title>
<path fill="none" stroke="black" d="M212.221,-489.277C199.434,-491.915 184.978,-494.897 172.12,-497.549"/>
<polygon fill="black" stroke="black" points="171.299,-494.145 162.212,-499.593 172.713,-501 171.299,-494.145"/>
</g>
<!-- SmoothedInputDevice -->
<g id="node8" class="node"><title>SmoothedInputDevice</title>
<polygon fill="#9ec6e0" stroke="#9ec6e0" points="628,-668 505,-668 505,-632 628,-632 628,-668"/>
<text text-anchor="middle" x="566.5" y="-647.5" font-family="Sans" font-size="10.00" fill="#000000">SmoothedInputDevice</text>
</g>
<!-- SmoothedInputDevice&#45;&gt;EventsMixin -->
<g id="edge7" class="edge"><title>SmoothedInputDevice&#45;&gt;EventsMixin</title>
<path fill="none" stroke="black" d="M504.991,-650C486.459,-650 466.384,-650 448.985,-650"/>
<polygon fill="black" stroke="black" points="448.536,-646.5 438.536,-650 448.536,-653.5 448.536,-646.5"/>
</g>
<!-- InputDevice -->
<g id="node16" class="node"><title>InputDevice</title>
<polygon fill="#2980b9" stroke="#2980b9" points="438.5,-614 365.5,-614 365.5,-578 438.5,-578 438.5,-614"/>
<text text-anchor="middle" x="402" y="-593.5" font-family="Sans" font-size="10.00" fill="#ffffff">InputDevice</text>
</g>
<!-- SmoothedInputDevice&#45;&gt;InputDevice -->
<g id="edge6" class="edge"><title>SmoothedInputDevice&#45;&gt;InputDevice</title>
<path fill="none" stroke="black" d="M510.938,-631.869C490.588,-625.106 467.725,-617.508 448.297,-611.053"/>
<polygon fill="black" stroke="black" points="449.366,-607.72 438.773,-607.888 447.159,-614.363 449.366,-607.72"/>
</g>
<!-- AnalogInputDevice -->
<g id="node9" class="node"><title>AnalogInputDevice</title>
<polygon fill="#9ec6e0" stroke="#9ec6e0" points="455,-1004 349,-1004 349,-968 455,-968 455,-1004"/>
<text text-anchor="middle" x="402" y="-983.5" font-family="Sans" font-size="10.00" fill="#000000">AnalogInputDevice</text>
</g>
<!-- SPIDevice -->
<g id="node30" class="node"><title>SPIDevice</title>
<polygon fill="#2980b9" stroke="#2980b9" points="280.5,-878 216.5,-878 216.5,-842 280.5,-842 280.5,-878"/>
<text text-anchor="middle" x="248.5" y="-857.5" font-family="Sans" font-size="10.00" fill="#ffffff">SPIDevice</text>
</g>
<!-- AnalogInputDevice&#45;&gt;SPIDevice -->
<g id="edge24" class="edge"><title>AnalogInputDevice&#45;&gt;SPIDevice</title>
<path fill="none" stroke="black" d="M379.294,-967.947C352.969,-946.053 308.473,-909.047 279.04,-884.568"/>
<polygon fill="black" stroke="black" points="281.092,-881.723 271.166,-878.019 276.616,-887.105 281.092,-881.723"/>
</g>
<!-- MCP3xxx -->
<g id="node10" class="node"><title>MCP3xxx</title>
<polygon fill="#9ec6e0" stroke="#9ec6e0" points="596,-1068 537,-1068 537,-1032 596,-1032 596,-1068"/>
<text text-anchor="middle" x="566.5" y="-1047.5" font-family="Sans" font-size="10.00" fill="#000000">MCP3xxx</text>
</g>
<!-- MCP3xxx&#45;&gt;AnalogInputDevice -->
<g id="edge25" class="edge"><title>MCP3xxx&#45;&gt;AnalogInputDevice</title>
<path fill="none" stroke="black" d="M536.822,-1038.71C515.156,-1030.17 484.748,-1018.2 458.393,-1007.82"/>
<polygon fill="black" stroke="black" points="459.477,-1004.48 448.89,-1004.07 456.912,-1010.99 459.477,-1004.48"/>
</g>
<!-- MCP33xx -->
<g id="node11" class="node"><title>MCP33xx</title>
<polygon fill="#9ec6e0" stroke="#9ec6e0" points="743,-1324 683,-1324 683,-1288 743,-1288 743,-1324"/>
<text text-anchor="middle" x="713" y="-1303.5" font-family="Sans" font-size="10.00" fill="#000000">MCP33xx</text>
</g>
<!-- MCP33xx&#45;&gt;MCP3xxx -->
<g id="edge28" class="edge"><title>MCP33xx&#45;&gt;MCP3xxx</title>
<path fill="none" stroke="black" d="M701.839,-1288C676.871,-1243.76 612.397,-1129.54 582.784,-1077.08"/>
<polygon fill="black" stroke="black" points="585.807,-1075.31 577.843,-1068.32 579.711,-1078.75 585.807,-1075.31"/>
</g>
<!-- CompositeDevice -->
<g id="node12" class="node"><title>CompositeDevice</title>
<polygon fill="#9ec6e0" stroke="#9ec6e0" points="299,-298 198,-298 198,-262 299,-262 299,-298"/>
<text text-anchor="middle" x="248.5" y="-277.5" font-family="Sans" font-size="10.00" fill="#000000">CompositeDevice</text>
</g>
<!-- CompositeDevice&#45;&gt;Device -->
<g id="edge43" class="edge"><title>CompositeDevice&#45;&gt;Device</title>
<path fill="none" stroke="black" d="M207.507,-298.033C203.989,-300.689 200.733,-303.671 198,-307 156.681,-357.323 142.801,-435.301 138.211,-476.787"/>
<polygon fill="black" stroke="black" points="134.728,-476.45 137.212,-486.749 141.693,-477.149 134.728,-476.45"/>
</g>
<!-- CompositeOutputDevice -->
<g id="node13" class="node"><title>CompositeOutputDevice</title>
<polygon fill="#9ec6e0" stroke="#9ec6e0" points="469,-252 335,-252 335,-216 469,-216 469,-252"/>
<text text-anchor="middle" x="402" y="-231.5" font-family="Sans" font-size="10.00" fill="#000000">CompositeOutputDevice</text>
</g>
<!-- CompositeOutputDevice&#45;&gt;SourceMixin -->
<g id="edge45" class="edge"><title>CompositeOutputDevice&#45;&gt;SourceMixin</title>
<path fill="none" stroke="black" d="M377.251,-252.254C356.934,-267.563 326.671,-289.642 299,-307 297.046,-308.226 295.033,-309.455 292.987,-310.675"/>
<polygon fill="black" stroke="black" points="290.794,-307.901 283.897,-315.944 294.304,-313.957 290.794,-307.901"/>
</g>
<!-- CompositeOutputDevice&#45;&gt;CompositeDevice -->
<g id="edge44" class="edge"><title>CompositeOutputDevice&#45;&gt;CompositeDevice</title>
<path fill="none" stroke="black" d="M341.558,-252.048C330.895,-255.286 319.78,-258.661 309.113,-261.9"/>
<polygon fill="black" stroke="black" points="308.019,-258.574 299.468,-264.828 310.053,-265.272 308.019,-258.574"/>
</g>
<!-- LEDCollection -->
<g id="node14" class="node"><title>LEDCollection</title>
<polygon fill="#9ec6e0" stroke="#9ec6e0" points="607.5,-198 525.5,-198 525.5,-162 607.5,-162 607.5,-198"/>
<text text-anchor="middle" x="566.5" y="-177.5" font-family="Sans" font-size="10.00" fill="#000000">LEDCollection</text>
</g>
<!-- LEDCollection&#45;&gt;CompositeOutputDevice -->
<g id="edge46" class="edge"><title>LEDCollection&#45;&gt;CompositeOutputDevice</title>
<path fill="none" stroke="black" d="M525.331,-193.348C507.724,-199.199 486.623,-206.211 466.943,-212.751"/>
<polygon fill="black" stroke="black" points="465.803,-209.442 457.417,-215.917 468.011,-216.085 465.803,-209.442"/>
</g>
<!-- InternalDevice -->
<g id="node15" class="node"><title>InternalDevice</title>
<polygon fill="#9ec6e0" stroke="#9ec6e0" points="609,-825 524,-825 524,-789 609,-789 609,-825"/>
<text text-anchor="middle" x="566.5" y="-804.5" font-family="Sans" font-size="10.00" fill="#000000">InternalDevice</text>
</g>
<!-- InternalDevice&#45;&gt;EventsMixin -->
<g id="edge75" class="edge"><title>InternalDevice&#45;&gt;EventsMixin</title>
<path fill="none" stroke="black" d="M546.859,-788.99C517.917,-761.028 462.082,-707.082 429.131,-675.247"/>
<polygon fill="black" stroke="black" points="431.297,-672.472 421.673,-668.041 426.433,-677.506 431.297,-672.472"/>
</g>
<!-- InternalDevice&#45;&gt;Device -->
<g id="edge74" class="edge"><title>InternalDevice&#45;&gt;Device</title>
<path fill="none" stroke="black" d="M528.21,-788.883C481.464,-765.525 399.628,-722.472 335,-677 268.578,-630.266 198.4,-565.452 161.743,-530.235"/>
<polygon fill="black" stroke="black" points="164.068,-527.615 154.443,-523.187 159.206,-532.651 164.068,-527.615"/>
</g>
<!-- InputDevice&#45;&gt;GPIODevice -->
<g id="edge3" class="edge"><title>InputDevice&#45;&gt;GPIODevice</title>
<path fill="none" stroke="black" d="M369.809,-577.953C358.592,-571.119 345.998,-563.041 335,-555 314.689,-540.151 293.154,-521.747 276.778,-507.133"/>
<polygon fill="black" stroke="black" points="278.955,-504.384 269.181,-500.295 274.272,-509.587 278.955,-504.384"/>
</g>
<!-- DigitalInputDevice -->
<g id="node17" class="node"><title>DigitalInputDevice</title>
<polygon fill="#2980b9" stroke="#2980b9" points="618,-614 515,-614 515,-578 618,-578 618,-614"/>
<text text-anchor="middle" x="566.5" y="-593.5" font-family="Sans" font-size="10.00" fill="#ffffff">DigitalInputDevice</text>
</g>
<!-- DigitalInputDevice&#45;&gt;EventsMixin -->
<g id="edge5" class="edge"><title>DigitalInputDevice&#45;&gt;EventsMixin</title>
<path fill="none" stroke="black" d="M514.975,-612.79C493.58,-619.899 468.853,-628.117 448.085,-635.018"/>
<polygon fill="black" stroke="black" points="446.931,-631.713 438.545,-638.188 449.139,-638.356 446.931,-631.713"/>
</g>
<!-- DigitalInputDevice&#45;&gt;InputDevice -->
<g id="edge4" class="edge"><title>DigitalInputDevice&#45;&gt;InputDevice</title>
<path fill="none" stroke="black" d="M514.975,-596C493.774,-596 469.3,-596 448.65,-596"/>
<polygon fill="black" stroke="black" points="448.545,-592.5 438.545,-596 448.545,-599.5 448.545,-592.5"/>
</g>
<!-- Button -->
<g id="node18" class="node"><title>Button</title>
<polygon fill="#2980b9" stroke="#2980b9" points="740,-555 686,-555 686,-519 740,-519 740,-555"/>
<text text-anchor="middle" x="713" y="-534.5" font-family="Sans" font-size="10.00" fill="#ffffff">Button</text>
</g>
<!-- Button&#45;&gt;HoldMixin -->
<g id="edge9" class="edge"><title>Button&#45;&gt;HoldMixin</title>
<path fill="none" stroke="black" d="M685.753,-524.861C678.287,-520.736 670.442,-515.705 664,-510 643.769,-492.084 649.039,-477.96 628,-461 621.704,-455.924 614.302,-451.6 606.877,-447.997"/>
<polygon fill="black" stroke="black" points="608.099,-444.71 597.542,-443.817 605.238,-451.098 608.099,-444.71"/>
</g>
<!-- Button&#45;&gt;DigitalInputDevice -->
<g id="edge8" class="edge"><title>Button&#45;&gt;DigitalInputDevice</title>
<path fill="none" stroke="black" d="M685.832,-547.684C667.757,-555.065 643.077,-565.142 620.932,-574.184"/>
<polygon fill="black" stroke="black" points="619.558,-570.964 611.623,-577.984 622.204,-577.445 619.558,-570.964"/>
</g>
<!-- MotionSensor -->
<g id="node19" class="node"><title>MotionSensor</title>
<polygon fill="#2980b9" stroke="#2980b9" points="754.5,-771 671.5,-771 671.5,-735 754.5,-735 754.5,-771"/>
<text text-anchor="middle" x="713" y="-750.5" font-family="Sans" font-size="10.00" fill="#ffffff">MotionSensor</text>
</g>
<!-- MotionSensor&#45;&gt;SmoothedInputDevice -->
<g id="edge10" class="edge"><title>MotionSensor&#45;&gt;SmoothedInputDevice</title>
<path fill="none" stroke="black" d="M678.29,-734.914C673.421,-732.051 668.529,-729.031 664,-726 640.379,-710.193 615.198,-690.246 596.483,-674.753"/>
<polygon fill="black" stroke="black" points="598.546,-671.916 588.625,-668.196 594.06,-677.291 598.546,-671.916"/>
</g>
<!-- LightSensor -->
<g id="node20" class="node"><title>LightSensor</title>
<polygon fill="#2980b9" stroke="#2980b9" points="750,-717 676,-717 676,-681 750,-681 750,-717"/>
<text text-anchor="middle" x="713" y="-696.5" font-family="Sans" font-size="10.00" fill="#ffffff">LightSensor</text>
</g>
<!-- LightSensor&#45;&gt;SmoothedInputDevice -->
<g id="edge11" class="edge"><title>LightSensor&#45;&gt;SmoothedInputDevice</title>
<path fill="none" stroke="black" d="M675.909,-686.762C662.064,-682.067 645.832,-676.562 630.206,-671.264"/>
<polygon fill="black" stroke="black" points="631.176,-667.897 620.582,-668 628.928,-674.526 631.176,-667.897"/>
</g>
<!-- LineSensor -->
<g id="node21" class="node"><title>LineSensor</title>
<polygon fill="#2980b9" stroke="#2980b9" points="748,-663 678,-663 678,-627 748,-627 748,-663"/>
<text text-anchor="middle" x="713" y="-642.5" font-family="Sans" font-size="10.00" fill="#ffffff">LineSensor</text>
</g>
<!-- LineSensor&#45;&gt;SmoothedInputDevice -->
<g id="edge12" class="edge"><title>LineSensor&#45;&gt;SmoothedInputDevice</title>
<path fill="none" stroke="black" d="M677.756,-646.185C665.801,-646.599 651.907,-647.079 638.093,-647.557"/>
<polygon fill="black" stroke="black" points="637.951,-644.06 628.078,-647.904 638.193,-651.056 637.951,-644.06"/>
</g>
<!-- DistanceSensor -->
<g id="node22" class="node"><title>DistanceSensor</title>
<polygon fill="#2980b9" stroke="#2980b9" points="759,-609 667,-609 667,-573 759,-573 759,-609"/>
<text text-anchor="middle" x="713" y="-588.5" font-family="Sans" font-size="10.00" fill="#ffffff">DistanceSensor</text>
</g>
<!-- DistanceSensor&#45;&gt;SmoothedInputDevice -->
<g id="edge13" class="edge"><title>DistanceSensor&#45;&gt;SmoothedInputDevice</title>
<path fill="none" stroke="black" d="M667.86,-609.023C653.151,-615.028 636.601,-621.786 621.246,-628.055"/>
<polygon fill="black" stroke="black" points="619.803,-624.864 611.868,-631.885 622.449,-631.345 619.803,-624.864"/>
</g>
<!-- OutputDevice -->
<g id="node23" class="node"><title>OutputDevice</title>
<polygon fill="#2980b9" stroke="#2980b9" points="443,-479 361,-479 361,-443 443,-443 443,-479"/>
<text text-anchor="middle" x="402" y="-458.5" font-family="Sans" font-size="10.00" fill="#ffffff">OutputDevice</text>
</g>
<!-- OutputDevice&#45;&gt;SourceMixin -->
<g id="edge15" class="edge"><title>OutputDevice&#45;&gt;SourceMixin</title>
<path fill="none" stroke="black" d="M378.603,-442.869C365.782,-432.442 349.426,-419.058 335,-407 315.953,-391.08 294.727,-372.959 278.19,-358.755"/>
<polygon fill="black" stroke="black" points="280.342,-355.99 270.478,-352.123 275.778,-361.297 280.342,-355.99"/>
</g>
<!-- OutputDevice&#45;&gt;GPIODevice -->
<g id="edge14" class="edge"><title>OutputDevice&#45;&gt;GPIODevice</title>
<path fill="none" stroke="black" d="M360.799,-466.572C340.458,-469.392 315.696,-472.824 294.696,-475.735"/>
<polygon fill="black" stroke="black" points="294.151,-472.277 284.726,-477.117 295.112,-479.211 294.151,-472.277"/>
</g>
<!-- DigitalOutputDevice -->
<g id="node24" class="node"><title>DigitalOutputDevice</title>
<polygon fill="#2980b9" stroke="#2980b9" points="622.5,-506 510.5,-506 510.5,-470 622.5,-470 622.5,-506"/>
<text text-anchor="middle" x="566.5" y="-485.5" font-family="Sans" font-size="10.00" fill="#ffffff">DigitalOutputDevice</text>
</g>
<!-- DigitalOutputDevice&#45;&gt;OutputDevice -->
<g id="edge16" class="edge"><title>DigitalOutputDevice&#45;&gt;OutputDevice</title>
<path fill="none" stroke="black" d="M510.485,-478.859C491.926,-475.775 471.321,-472.352 453.158,-469.334"/>
<polygon fill="black" stroke="black" points="453.503,-465.843 443.064,-467.657 452.355,-472.749 453.503,-465.843"/>
</g>
<!-- LED -->
<g id="node25" class="node"><title>LED</title>
<polygon fill="#2980b9" stroke="#2980b9" points="740,-501 686,-501 686,-465 740,-465 740,-501"/>
<text text-anchor="middle" x="713" y="-480.5" font-family="Sans" font-size="10.00" fill="#ffffff">LED</text>
</g>
<!-- LED&#45;&gt;DigitalOutputDevice -->
<g id="edge17" class="edge"><title>LED&#45;&gt;DigitalOutputDevice</title>
<path fill="none" stroke="black" d="M685.832,-483.905C670.872,-484.423 651.388,-485.097 632.562,-485.749"/>
<polygon fill="black" stroke="black" points="632.378,-482.253 622.505,-486.097 632.62,-489.249 632.378,-482.253"/>
</g>
<!-- Buzzer -->
<g id="node26" class="node"><title>Buzzer</title>
<polygon fill="#2980b9" stroke="#2980b9" points="740,-447 686,-447 686,-411 740,-411 740,-447"/>
<text text-anchor="middle" x="713" y="-426.5" font-family="Sans" font-size="10.00" fill="#ffffff">Buzzer</text>
</g>
<!-- Buzzer&#45;&gt;DigitalOutputDevice -->
<g id="edge18" class="edge"><title>Buzzer&#45;&gt;DigitalOutputDevice</title>
<path fill="none" stroke="black" d="M685.832,-439.684C667.757,-447.065 643.077,-457.142 620.932,-466.184"/>
<polygon fill="black" stroke="black" points="619.558,-462.964 611.623,-469.984 622.204,-469.445 619.558,-462.964"/>
</g>
<!-- PWMOutputDevice -->
<g id="node27" class="node"><title>PWMOutputDevice</title>
<polygon fill="#2980b9" stroke="#2980b9" points="618.5,-398 514.5,-398 514.5,-362 618.5,-362 618.5,-398"/>
<text text-anchor="middle" x="566.5" y="-377.5" font-family="Sans" font-size="10.00" fill="#ffffff">PWMOutputDevice</text>
</g>
<!-- PWMOutputDevice&#45;&gt;OutputDevice -->
<g id="edge19" class="edge"><title>PWMOutputDevice&#45;&gt;OutputDevice</title>
<path fill="none" stroke="black" d="M523.997,-398.079C517.603,-400.992 511.101,-404.028 505,-407 484.968,-416.759 463.091,-428.23 444.752,-438.084"/>
<polygon fill="black" stroke="black" points="442.924,-435.093 435.787,-442.923 446.249,-441.253 442.924,-435.093"/>
</g>
<!-- PWMLED -->
<g id="node28" class="node"><title>PWMLED</title>
<polygon fill="#2980b9" stroke="#2980b9" points="742,-393 684,-393 684,-357 742,-357 742,-393"/>
<text text-anchor="middle" x="713" y="-372.5" font-family="Sans" font-size="10.00" fill="#ffffff">PWMLED</text>
</g>
<!-- PWMLED&#45;&gt;PWMOutputDevice -->
<g id="edge20" class="edge"><title>PWMLED&#45;&gt;PWMOutputDevice</title>
<path fill="none" stroke="black" d="M683.796,-375.976C668.131,-376.518 648,-377.215 628.903,-377.875"/>
<polygon fill="black" stroke="black" points="628.611,-374.383 618.738,-378.227 628.854,-381.379 628.611,-374.383"/>
</g>
<!-- RGBLED -->
<g id="node29" class="node"><title>RGBLED</title>
<polygon fill="#2980b9" stroke="#2980b9" points="430,-546 374,-546 374,-510 430,-510 430,-546"/>
<text text-anchor="middle" x="402" y="-525.5" font-family="Sans" font-size="10.00" fill="#ffffff">RGBLED</text>
</g>
<!-- RGBLED&#45;&gt;SourceMixin -->
<g id="edge22" class="edge"><title>RGBLED&#45;&gt;SourceMixin</title>
<path fill="none" stroke="black" d="M373.699,-515.591C360.844,-508.778 345.965,-499.39 335,-488 298.866,-450.465 272.958,-394.68 259.67,-361.563"/>
<polygon fill="black" stroke="black" points="262.855,-360.097 255.953,-352.058 256.335,-362.646 262.855,-360.097"/>
</g>
<!-- RGBLED&#45;&gt;Device -->
<g id="edge21" class="edge"><title>RGBLED&#45;&gt;Device</title>
<path fill="none" stroke="black" d="M373.638,-525.625C325.536,-521.45 225.837,-512.797 172.134,-508.136"/>
<polygon fill="black" stroke="black" points="172.301,-504.638 162.036,-507.26 171.696,-511.611 172.301,-504.638"/>
</g>
<!-- SPIDevice&#45;&gt;Device -->
<g id="edge23" class="edge"><title>SPIDevice&#45;&gt;Device</title>
<path fill="none" stroke="black" d="M236.227,-841.702C225.14,-823.018 208.405,-792.878 198,-765 167.528,-683.355 148.398,-581.58 140.369,-533.145"/>
<polygon fill="black" stroke="black" points="143.795,-532.412 138.737,-523.103 136.886,-533.535 143.795,-532.412"/>
</g>
<!-- MCP30xx -->
<g id="node31" class="node"><title>MCP30xx</title>
<polygon fill="#2980b9" stroke="#2980b9" points="743,-1135 683,-1135 683,-1099 743,-1099 743,-1135"/>
<text text-anchor="middle" x="713" y="-1114.5" font-family="Sans" font-size="10.00" fill="#ffffff">MCP30xx</text>
</g>
<!-- MCP30xx&#45;&gt;MCP3xxx -->
<g id="edge26" class="edge"><title>MCP30xx&#45;&gt;MCP3xxx</title>
<path fill="none" stroke="black" d="M682.758,-1103.44C660.48,-1093.11 629.625,-1078.81 605.446,-1067.59"/>
<polygon fill="black" stroke="black" points="606.75,-1064.34 596.205,-1063.31 603.805,-1070.69 606.75,-1064.34"/>
</g>
<!-- MCP32xx -->
<g id="node32" class="node"><title>MCP32xx</title>
<polygon fill="#2980b9" stroke="#2980b9" points="743,-987 683,-987 683,-951 743,-951 743,-987"/>
<text text-anchor="middle" x="713" y="-966.5" font-family="Sans" font-size="10.00" fill="#ffffff">MCP32xx</text>
</g>
<!-- MCP32xx&#45;&gt;MCP3xxx -->
<g id="edge27" class="edge"><title>MCP32xx&#45;&gt;MCP3xxx</title>
<path fill="none" stroke="black" d="M682.758,-985.392C660.382,-997.935 629.352,-1015.33 605.125,-1028.91"/>
<polygon fill="black" stroke="black" points="603.217,-1025.97 596.205,-1033.91 606.64,-1032.07 603.217,-1025.97"/>
</g>
<!-- MCP3xx2 -->
<g id="node33" class="node"><title>MCP3xx2</title>
<polygon fill="#2980b9" stroke="#2980b9" points="743,-1068 683,-1068 683,-1032 743,-1032 743,-1068"/>
<text text-anchor="middle" x="713" y="-1047.5" font-family="Sans" font-size="10.00" fill="#ffffff">MCP3xx2</text>
</g>
<!-- MCP3xx2&#45;&gt;MCP3xxx -->
<g id="edge29" class="edge"><title>MCP3xx2&#45;&gt;MCP3xxx</title>
<path fill="none" stroke="black" d="M682.758,-1050C660.776,-1050 630.443,-1050 606.412,-1050"/>
<polygon fill="black" stroke="black" points="606.205,-1046.5 596.205,-1050 606.205,-1053.5 606.205,-1046.5"/>
</g>
<!-- MCP3001 -->
<g id="node34" class="node"><title>MCP3001</title>
<polygon fill="#2980b9" stroke="#2980b9" points="875,-1189 813,-1189 813,-1153 875,-1153 875,-1189"/>
<text text-anchor="middle" x="844" y="-1168.5" font-family="Sans" font-size="10.00" fill="#ffffff">MCP3001</text>
</g>
<!-- MCP3001&#45;&gt;MCP30xx -->
<g id="edge30" class="edge"><title>MCP3001&#45;&gt;MCP30xx</title>
<path fill="none" stroke="black" d="M812.755,-1158.34C794.79,-1150.82 771.83,-1141.21 752.57,-1133.15"/>
<polygon fill="black" stroke="black" points="753.744,-1129.84 743.168,-1129.21 751.04,-1136.3 753.744,-1129.84"/>
</g>
<!-- MCP3002 -->
<g id="node35" class="node"><title>MCP3002</title>
<polygon fill="#2980b9" stroke="#2980b9" points="875,-1081 813,-1081 813,-1045 875,-1045 875,-1081"/>
<text text-anchor="middle" x="844" y="-1060.5" font-family="Sans" font-size="10.00" fill="#ffffff">MCP3002</text>
</g>
<!-- MCP3002&#45;&gt;MCP30xx -->
<g id="edge31" class="edge"><title>MCP3002&#45;&gt;MCP30xx</title>
<path fill="none" stroke="black" d="M812.755,-1075.66C794.79,-1083.18 771.83,-1092.79 752.57,-1100.85"/>
<polygon fill="black" stroke="black" points="751.04,-1097.7 743.168,-1104.79 753.744,-1104.16 751.04,-1097.7"/>
</g>
<!-- MCP3002&#45;&gt;MCP3xx2 -->
<g id="edge38" class="edge"><title>MCP3002&#45;&gt;MCP3xx2</title>
<path fill="none" stroke="black" d="M812.755,-1059.95C795.036,-1058.17 772.458,-1055.89 753.364,-1053.97"/>
<polygon fill="black" stroke="black" points="753.468,-1050.46 743.168,-1052.94 752.766,-1057.42 753.468,-1050.46"/>
</g>
<!-- MCP3004 -->
<g id="node36" class="node"><title>MCP3004</title>
<polygon fill="#2980b9" stroke="#2980b9" points="875,-1135 813,-1135 813,-1099 875,-1099 875,-1135"/>
<text text-anchor="middle" x="844" y="-1114.5" font-family="Sans" font-size="10.00" fill="#ffffff">MCP3004</text>
</g>
<!-- MCP3004&#45;&gt;MCP30xx -->
<g id="edge32" class="edge"><title>MCP3004&#45;&gt;MCP30xx</title>
<path fill="none" stroke="black" d="M812.755,-1117C795.036,-1117 772.458,-1117 753.364,-1117"/>
<polygon fill="black" stroke="black" points="753.168,-1113.5 743.168,-1117 753.168,-1120.5 753.168,-1113.5"/>
</g>
<!-- MCP3008 -->
<g id="node37" class="node"><title>MCP3008</title>
<polygon fill="#2980b9" stroke="#2980b9" points="875,-1243 813,-1243 813,-1207 875,-1207 875,-1243"/>
<text text-anchor="middle" x="844" y="-1222.5" font-family="Sans" font-size="10.00" fill="#ffffff">MCP3008</text>
</g>
<!-- MCP3008&#45;&gt;MCP30xx -->
<g id="edge33" class="edge"><title>MCP3008&#45;&gt;MCP30xx</title>
<path fill="none" stroke="black" d="M812.842,-1208.2C807.755,-1205.01 802.628,-1201.55 798,-1198 776.106,-1181.22 753.741,-1159.38 737.599,-1142.61"/>
<polygon fill="black" stroke="black" points="740.071,-1140.13 730.644,-1135.29 734.998,-1144.95 740.071,-1140.13"/>
</g>
<!-- MCP3201 -->
<g id="node38" class="node"><title>MCP3201</title>
<polygon fill="#2980b9" stroke="#2980b9" points="875,-919 813,-919 813,-883 875,-883 875,-919"/>
<text text-anchor="middle" x="844" y="-898.5" font-family="Sans" font-size="10.00" fill="#ffffff">MCP3201</text>
</g>
<!-- MCP3201&#45;&gt;MCP32xx -->
<g id="edge34" class="edge"><title>MCP3201&#45;&gt;MCP32xx</title>
<path fill="none" stroke="black" d="M812.755,-916.943C794.626,-926.5 771.41,-938.737 752.044,-948.946"/>
<polygon fill="black" stroke="black" points="750.382,-945.865 743.168,-953.625 753.646,-952.058 750.382,-945.865"/>
</g>
<!-- MCP3202 -->
<g id="node39" class="node"><title>MCP3202</title>
<polygon fill="#2980b9" stroke="#2980b9" points="875,-1027 813,-1027 813,-991 875,-991 875,-1027"/>
<text text-anchor="middle" x="844" y="-1006.5" font-family="Sans" font-size="10.00" fill="#ffffff">MCP3202</text>
</g>
<!-- MCP3202&#45;&gt;MCP32xx -->
<g id="edge35" class="edge"><title>MCP3202&#45;&gt;MCP32xx</title>
<path fill="none" stroke="black" d="M812.755,-999.622C794.872,-994.077 772.04,-986.997 752.835,-981.042"/>
<polygon fill="black" stroke="black" points="753.756,-977.663 743.168,-978.044 751.682,-984.349 753.756,-977.663"/>
</g>
<!-- MCP3202&#45;&gt;MCP3xx2 -->
<g id="edge39" class="edge"><title>MCP3202&#45;&gt;MCP3xx2</title>
<path fill="none" stroke="black" d="M812.755,-1018.61C794.872,-1024.3 772.04,-1031.55 752.835,-1037.66"/>
<polygon fill="black" stroke="black" points="751.638,-1034.37 743.168,-1040.73 753.758,-1041.04 751.638,-1034.37"/>
</g>
<!-- MCP3204 -->
<g id="node40" class="node"><title>MCP3204</title>
<polygon fill="#2980b9" stroke="#2980b9" points="875,-865 813,-865 813,-829 875,-829 875,-865"/>
<text text-anchor="middle" x="844" y="-844.5" font-family="Sans" font-size="10.00" fill="#ffffff">MCP3204</text>
</g>
<!-- MCP3204&#45;&gt;MCP32xx -->
<g id="edge36" class="edge"><title>MCP3204&#45;&gt;MCP32xx</title>
<path fill="none" stroke="black" d="M812.734,-862.022C807.435,-865.491 802.262,-869.504 798,-874 774.475,-898.819 785.87,-917.513 762,-942 758.875,-945.206 755.287,-948.143 751.51,-950.801"/>
<polygon fill="black" stroke="black" points="749.613,-947.859 743.046,-956.173 753.365,-953.769 749.613,-947.859"/>
</g>
<!-- MCP3208 -->
<g id="node41" class="node"><title>MCP3208</title>
<polygon fill="#2980b9" stroke="#2980b9" points="875,-973 813,-973 813,-937 875,-937 875,-973"/>
<text text-anchor="middle" x="844" y="-952.5" font-family="Sans" font-size="10.00" fill="#ffffff">MCP3208</text>
</g>
<!-- MCP3208&#45;&gt;MCP32xx -->
<g id="edge37" class="edge"><title>MCP3208&#45;&gt;MCP32xx</title>
<path fill="none" stroke="black" d="M812.755,-958.282C795.036,-960.205 772.458,-962.656 753.364,-964.728"/>
<polygon fill="black" stroke="black" points="752.732,-961.276 743.168,-965.835 753.487,-968.235 752.732,-961.276"/>
</g>
<!-- MCP3301 -->
<g id="node42" class="node"><title>MCP3301</title>
<polygon fill="#2980b9" stroke="#2980b9" points="875,-1351 813,-1351 813,-1315 875,-1315 875,-1351"/>
<text text-anchor="middle" x="844" y="-1330.5" font-family="Sans" font-size="10.00" fill="#ffffff">MCP3301</text>
</g>
<!-- MCP3301&#45;&gt;MCP33xx -->
<g id="edge40" class="edge"><title>MCP3301&#45;&gt;MCP33xx</title>
<path fill="none" stroke="black" d="M812.755,-1326.67C794.954,-1322.94 772.249,-1318.19 753.099,-1314.18"/>
<polygon fill="black" stroke="black" points="753.673,-1310.73 743.168,-1312.1 752.238,-1317.58 753.673,-1310.73"/>
</g>
<!-- MCP3302 -->
<g id="node43" class="node"><title>MCP3302</title>
<polygon fill="#2980b9" stroke="#2980b9" points="875,-1297 813,-1297 813,-1261 875,-1261 875,-1297"/>
<text text-anchor="middle" x="844" y="-1276.5" font-family="Sans" font-size="10.00" fill="#ffffff">MCP3302</text>
</g>
<!-- MCP3302&#45;&gt;MCP33xx -->
<g id="edge41" class="edge"><title>MCP3302&#45;&gt;MCP33xx</title>
<path fill="none" stroke="black" d="M812.755,-1285.33C794.954,-1289.06 772.249,-1293.81 753.099,-1297.82"/>
<polygon fill="black" stroke="black" points="752.238,-1294.42 743.168,-1299.9 753.673,-1301.27 752.238,-1294.42"/>
</g>
<!-- MCP3304 -->
<g id="node44" class="node"><title>MCP3304</title>
<polygon fill="#2980b9" stroke="#2980b9" points="875,-1405 813,-1405 813,-1369 875,-1369 875,-1405"/>
<text text-anchor="middle" x="844" y="-1384.5" font-family="Sans" font-size="10.00" fill="#ffffff">MCP3304</text>
</g>
<!-- MCP3304&#45;&gt;MCP33xx -->
<g id="edge42" class="edge"><title>MCP3304&#45;&gt;MCP33xx</title>
<path fill="none" stroke="black" d="M812.907,-1369.12C807.912,-1366.1 802.798,-1362.98 798,-1360 782.39,-1350.3 765.305,-1339.38 750.644,-1329.9"/>
<polygon fill="black" stroke="black" points="752.159,-1326.72 741.863,-1324.22 748.353,-1332.59 752.159,-1326.72"/>
</g>
<!-- LEDBoard -->
<g id="node45" class="node"><title>LEDBoard</title>
<polygon fill="#2980b9" stroke="#2980b9" points="745,-257 681,-257 681,-221 745,-221 745,-257"/>
<text text-anchor="middle" x="713" y="-236.5" font-family="Sans" font-size="10.00" fill="#ffffff">LEDBoard</text>
</g>
<!-- LEDBoard&#45;&gt;LEDCollection -->
<g id="edge47" class="edge"><title>LEDBoard&#45;&gt;LEDCollection</title>
<path fill="none" stroke="black" d="M680.646,-226.198C662.075,-218.615 638.128,-208.838 617.051,-200.232"/>
<polygon fill="black" stroke="black" points="618.179,-196.912 607.598,-196.372 615.533,-203.393 618.179,-196.912"/>
</g>
<!-- LEDBarGraph -->
<g id="node46" class="node"><title>LEDBarGraph</title>
<polygon fill="#2980b9" stroke="#2980b9" points="753.5,-198 672.5,-198 672.5,-162 753.5,-162 753.5,-198"/>
<text text-anchor="middle" x="713" y="-177.5" font-family="Sans" font-size="10.00" fill="#ffffff">LEDBarGraph</text>
</g>
<!-- LEDBarGraph&#45;&gt;LEDCollection -->
<g id="edge48" class="edge"><title>LEDBarGraph&#45;&gt;LEDCollection</title>
<path fill="none" stroke="black" d="M672.132,-180C655.373,-180 635.682,-180 617.93,-180"/>
<polygon fill="black" stroke="black" points="617.739,-176.5 607.739,-180 617.739,-183.5 617.739,-176.5"/>
</g>
<!-- LedBorg -->
<g id="node47" class="node"><title>LedBorg</title>
<polygon fill="#2980b9" stroke="#2980b9" points="594.5,-560 538.5,-560 538.5,-524 594.5,-524 594.5,-560"/>
<text text-anchor="middle" x="566.5" y="-539.5" font-family="Sans" font-size="10.00" fill="#ffffff">LedBorg</text>
</g>
<!-- LedBorg&#45;&gt;RGBLED -->
<g id="edge49" class="edge"><title>LedBorg&#45;&gt;RGBLED</title>
<path fill="none" stroke="black" d="M538.301,-539.657C511.387,-537.338 469.993,-533.772 440.077,-531.194"/>
<polygon fill="black" stroke="black" points="440.28,-527.699 430.017,-530.328 439.679,-534.673 440.28,-527.699"/>
</g>
<!-- ButtonBoard -->
<g id="node48" class="node"><title>ButtonBoard</title>
<polygon fill="#2980b9" stroke="#2980b9" points="751.5,-330 674.5,-330 674.5,-294 751.5,-294 751.5,-330"/>
<text text-anchor="middle" x="713" y="-309.5" font-family="Sans" font-size="10.00" fill="#ffffff">ButtonBoard</text>
</g>
<!-- ButtonBoard&#45;&gt;HoldMixin -->
<g id="edge51" class="edge"><title>ButtonBoard&#45;&gt;HoldMixin</title>
<path fill="none" stroke="black" d="M684.081,-330.146C677.075,-335.422 669.884,-341.524 664,-348 643.342,-370.734 651.067,-386.714 628,-407 621.866,-412.394 614.48,-416.873 607.008,-420.53"/>
<polygon fill="black" stroke="black" points="605.295,-417.462 597.586,-424.729 608.144,-423.856 605.295,-417.462"/>
</g>
<!-- ButtonBoard&#45;&gt;CompositeDevice -->
<g id="edge50" class="edge"><title>ButtonBoard&#45;&gt;CompositeDevice</title>
<path fill="none" stroke="black" d="M674.473,-305.344C659.994,-302.998 643.268,-300.56 628,-299 515.789,-287.532 384.124,-282.903 309.383,-281.096"/>
<polygon fill="black" stroke="black" points="309.302,-277.593 299.223,-280.859 309.139,-284.591 309.302,-277.593"/>
</g>
<!-- PiLiter -->
<g id="node49" class="node"><title>PiLiter</title>
<polygon fill="#2980b9" stroke="#2980b9" points="871,-311 817,-311 817,-275 871,-275 871,-311"/>
<text text-anchor="middle" x="844" y="-290.5" font-family="Sans" font-size="10.00" fill="#ffffff">PiLiter</text>
</g>
<!-- PiLiter&#45;&gt;LEDBoard -->
<g id="edge52" class="edge"><title>PiLiter&#45;&gt;LEDBoard</title>
<path fill="none" stroke="black" d="M816.895,-282.072C798.972,-274.57 774.831,-264.464 754.436,-255.927"/>
<polygon fill="black" stroke="black" points="755.644,-252.638 745.068,-252.005 752.941,-259.095 755.644,-252.638"/>
</g>
<!-- PiLiterBarGraph -->
<g id="node50" class="node"><title>PiLiterBarGraph</title>
<polygon fill="#2980b9" stroke="#2980b9" points="890,-149 798,-149 798,-113 890,-113 890,-149"/>
<text text-anchor="middle" x="844" y="-128.5" font-family="Sans" font-size="10.00" fill="#ffffff">PiLiterBarGraph</text>
</g>
<!-- PiLiterBarGraph&#45;&gt;LEDBarGraph -->
<g id="edge53" class="edge"><title>PiLiterBarGraph&#45;&gt;LEDBarGraph</title>
<path fill="none" stroke="black" d="M797.882,-148.138C786.643,-152.407 774.539,-157.005 763.117,-161.343"/>
<polygon fill="black" stroke="black" points="761.824,-158.09 753.718,-164.913 764.31,-164.634 761.824,-158.09"/>
</g>
<!-- StatusZero -->
<g id="node51" class="node"><title>StatusZero</title>
<polygon fill="#2980b9" stroke="#2980b9" points="879.5,-257 808.5,-257 808.5,-221 879.5,-221 879.5,-257"/>
<text text-anchor="middle" x="844" y="-236.5" font-family="Sans" font-size="10.00" fill="#ffffff">StatusZero</text>
</g>
<!-- StatusZero&#45;&gt;LEDBoard -->
<g id="edge54" class="edge"><title>StatusZero&#45;&gt;LEDBoard</title>
<path fill="none" stroke="black" d="M808.43,-239C792.114,-239 772.514,-239 755.41,-239"/>
<polygon fill="black" stroke="black" points="755.135,-235.5 745.135,-239 755.135,-242.5 755.135,-235.5"/>
</g>
<!-- TrafficLights -->
<g id="node52" class="node"><title>TrafficLights</title>
<polygon fill="#2980b9" stroke="#2980b9" points="880,-203 808,-203 808,-167 880,-167 880,-203"/>
<text text-anchor="middle" x="844" y="-182.5" font-family="Sans" font-size="10.00" fill="#ffffff">TrafficLights</text>
</g>
<!-- TrafficLights&#45;&gt;LEDBoard -->
<g id="edge55" class="edge"><title>TrafficLights&#45;&gt;LEDBoard</title>
<path fill="none" stroke="black" d="M807.75,-199.756C791.412,-206.595 771.897,-214.764 754.912,-221.874"/>
<polygon fill="black" stroke="black" points="753.121,-218.83 745.248,-225.919 755.824,-225.287 753.121,-218.83"/>
</g>
<!-- SnowPi -->
<g id="node53" class="node"><title>SnowPi</title>
<polygon fill="#2980b9" stroke="#2980b9" points="871,-365 817,-365 817,-329 871,-329 871,-365"/>
<text text-anchor="middle" x="844" y="-344.5" font-family="Sans" font-size="10.00" fill="#ffffff">SnowPi</text>
</g>
<!-- SnowPi&#45;&gt;LEDBoard -->
<g id="edge56" class="edge"><title>SnowPi&#45;&gt;LEDBoard</title>
<path fill="none" stroke="black" d="M816.628,-332.565C810.337,-328.749 803.776,-324.445 798,-320 780.315,-306.391 778.056,-300.498 762,-285 755.048,-278.289 747.509,-271.048 740.511,-264.341"/>
<polygon fill="black" stroke="black" points="742.826,-261.712 733.183,-257.323 737.985,-266.768 742.826,-261.712"/>
</g>
<!-- PiTraffic -->
<g id="node54" class="node"><title>PiTraffic</title>
<polygon fill="#2980b9" stroke="#2980b9" points="990.5,-230 936.5,-230 936.5,-194 990.5,-194 990.5,-230"/>
<text text-anchor="middle" x="963.5" y="-209.5" font-family="Sans" font-size="10.00" fill="#ffffff">PiTraffic</text>
</g>
<!-- PiTraffic&#45;&gt;TrafficLights -->
<g id="edge57" class="edge"><title>PiTraffic&#45;&gt;TrafficLights</title>
<path fill="none" stroke="black" d="M936.423,-206.008C922.89,-202.898 905.966,-199.009 890.371,-195.426"/>
<polygon fill="black" stroke="black" points="890.893,-191.955 880.363,-193.126 889.326,-198.777 890.893,-191.955"/>
</g>
<!-- PiStop -->
<g id="node55" class="node"><title>PiStop</title>
<polygon fill="#2980b9" stroke="#2980b9" points="990.5,-176 936.5,-176 936.5,-140 990.5,-140 990.5,-176"/>
<text text-anchor="middle" x="963.5" y="-155.5" font-family="Sans" font-size="10.00" fill="#ffffff">PiStop</text>
</g>
<!-- PiStop&#45;&gt;TrafficLights -->
<g id="edge58" class="edge"><title>PiStop&#45;&gt;TrafficLights</title>
<path fill="none" stroke="black" d="M936.423,-163.992C922.89,-167.102 905.966,-170.991 890.371,-174.574"/>
<polygon fill="black" stroke="black" points="889.326,-171.223 880.363,-176.874 890.893,-178.045 889.326,-171.223"/>
</g>
<!-- TrafficLightsBuzzer -->
<g id="node56" class="node"><title>TrafficLightsBuzzer</title>
<polygon fill="#2980b9" stroke="#2980b9" points="619,-144 514,-144 514,-108 619,-108 619,-144"/>
<text text-anchor="middle" x="566.5" y="-123.5" font-family="Sans" font-size="10.00" fill="#ffffff">TrafficLightsBuzzer</text>
</g>
<!-- TrafficLightsBuzzer&#45;&gt;CompositeOutputDevice -->
<g id="edge59" class="edge"><title>TrafficLightsBuzzer&#45;&gt;CompositeOutputDevice</title>
<path fill="none" stroke="black" d="M517.702,-144.164C513.191,-146.794 508.867,-149.735 505,-153 482.962,-171.61 491.328,-188.738 469,-207 467.616,-208.132 466.179,-209.221 464.698,-210.271"/>
<polygon fill="black" stroke="black" points="462.427,-207.564 455.816,-215.843 466.147,-213.493 462.427,-207.564"/>
</g>
<!-- StatusBoard -->
<g id="node57" class="node"><title>StatusBoard</title>
<polygon fill="#2980b9" stroke="#2980b9" points="605,-252 528,-252 528,-216 605,-216 605,-252"/>
<text text-anchor="middle" x="566.5" y="-231.5" font-family="Sans" font-size="10.00" fill="#ffffff">StatusBoard</text>
</g>
<!-- StatusBoard&#45;&gt;CompositeOutputDevice -->
<g id="edge60" class="edge"><title>StatusBoard&#45;&gt;CompositeOutputDevice</title>
<path fill="none" stroke="black" d="M527.811,-234C513.369,-234 496.321,-234 479.541,-234"/>
<polygon fill="black" stroke="black" points="479.154,-230.5 469.154,-234 479.154,-237.5 479.154,-230.5"/>
</g>
<!-- FishDish -->
<g id="node58" class="node"><title>FishDish</title>
<polygon fill="#2980b9" stroke="#2980b9" points="741,-144 685,-144 685,-108 741,-108 741,-144"/>
<text text-anchor="middle" x="713" y="-123.5" font-family="Sans" font-size="10.00" fill="#ffffff">FishDish</text>
</g>
<!-- FishDish&#45;&gt;TrafficLightsBuzzer -->
<g id="edge61" class="edge"><title>FishDish&#45;&gt;TrafficLightsBuzzer</title>
<path fill="none" stroke="black" d="M684.821,-126C669.087,-126 648.605,-126 629.168,-126"/>
<polygon fill="black" stroke="black" points="629.129,-122.5 619.129,-126 629.129,-129.5 629.129,-122.5"/>
</g>
<!-- TrafficHat -->
<g id="node59" class="node"><title>TrafficHat</title>
<polygon fill="#2980b9" stroke="#2980b9" points="743.5,-90 682.5,-90 682.5,-54 743.5,-54 743.5,-90"/>
<text text-anchor="middle" x="713" y="-69.5" font-family="Sans" font-size="10.00" fill="#ffffff">TrafficHat</text>
</g>
<!-- TrafficHat&#45;&gt;TrafficLightsBuzzer -->
<g id="edge62" class="edge"><title>TrafficHat&#45;&gt;TrafficLightsBuzzer</title>
<path fill="none" stroke="black" d="M682.41,-83.058C665.947,-89.21 644.882,-97.0823 625.294,-104.402"/>
<polygon fill="black" stroke="black" points="623.966,-101.162 615.824,-107.941 626.416,-107.719 623.966,-101.162"/>
</g>
<!-- Robot -->
<g id="node60" class="node"><title>Robot</title>
<polygon fill="#2980b9" stroke="#2980b9" points="429,-198 375,-198 375,-162 429,-162 429,-198"/>
<text text-anchor="middle" x="402" y="-177.5" font-family="Sans" font-size="10.00" fill="#ffffff">Robot</text>
</g>
<!-- Robot&#45;&gt;SourceMixin -->
<g id="edge64" class="edge"><title>Robot&#45;&gt;SourceMixin</title>
<path fill="none" stroke="black" d="M374.925,-185.291C361.437,-189.234 345.62,-195.915 335,-207 302.32,-241.108 329.737,-271.131 299,-307 297.473,-308.782 295.798,-310.466 294.017,-312.057"/>
<polygon fill="black" stroke="black" points="291.481,-309.588 285.648,-318.432 295.723,-315.156 291.481,-309.588"/>
</g>
<!-- Robot&#45;&gt;CompositeDevice -->
<g id="edge63" class="edge"><title>Robot&#45;&gt;CompositeDevice</title>
<path fill="none" stroke="black" d="M374.695,-188.567C362.216,-193.172 347.367,-199.46 335,-207 312.945,-220.447 290.843,-239.5 274.637,-254.769"/>
<polygon fill="black" stroke="black" points="271.976,-252.472 267.181,-261.92 276.821,-257.524 271.976,-252.472"/>
</g>
<!-- Energenie -->
<g id="node61" class="node"><title>Energenie</title>
<polygon fill="#2980b9" stroke="#2980b9" points="434.5,-144 369.5,-144 369.5,-108 434.5,-108 434.5,-144"/>
<text text-anchor="middle" x="402" y="-123.5" font-family="Sans" font-size="10.00" fill="#ffffff">Energenie</text>
</g>
<!-- Energenie&#45;&gt;SourceMixin -->
<g id="edge66" class="edge"><title>Energenie&#45;&gt;SourceMixin</title>
<path fill="none" stroke="black" d="M369.367,-132.327C357.02,-136.313 343.756,-142.732 335,-153 289.393,-206.485 341.569,-251.067 299,-307 297.444,-309.045 295.686,-310.954 293.785,-312.734"/>
<polygon fill="black" stroke="black" points="291.553,-310.037 285.862,-318.973 295.884,-315.536 291.553,-310.037"/>
</g>
<!-- Energenie&#45;&gt;Device -->
<g id="edge65" class="edge"><title>Energenie&#45;&gt;Device</title>
<path fill="none" stroke="black" d="M369.35,-136.362C323.571,-153.105 239.795,-190.68 198,-253 150.639,-323.619 139.413,-427.073 136.783,-476.569"/>
<polygon fill="black" stroke="black" points="133.274,-476.689 136.321,-486.836 140.267,-477.003 133.274,-476.689"/>
</g>
<!-- RyanteckRobot -->
<g id="node62" class="node"><title>RyanteckRobot</title>
<polygon fill="#2980b9" stroke="#2980b9" points="609.5,-36 523.5,-36 523.5,-0 609.5,-0 609.5,-36"/>
<text text-anchor="middle" x="566.5" y="-15.5" font-family="Sans" font-size="10.00" fill="#ffffff">RyanteckRobot</text>
</g>
<!-- RyanteckRobot&#45;&gt;Robot -->
<g id="edge67" class="edge"><title>RyanteckRobot&#45;&gt;Robot</title>
<path fill="none" stroke="black" d="M523.416,-31.2471C516.589,-34.8567 510.098,-39.3756 505,-45 471.018,-82.4866 503.567,-116.052 469,-153 460.97,-161.583 449.819,-167.513 438.966,-171.578"/>
<polygon fill="black" stroke="black" points="437.58,-168.35 429.181,-174.809 439.774,-174.997 437.58,-168.35"/>
</g>
<!-- CamJamKitRobot -->
<g id="node63" class="node"><title>CamJamKitRobot</title>
<polygon fill="#2980b9" stroke="#2980b9" points="614.5,-90 518.5,-90 518.5,-54 614.5,-54 614.5,-90"/>
<text text-anchor="middle" x="566.5" y="-69.5" font-family="Sans" font-size="10.00" fill="#ffffff">CamJamKitRobot</text>
</g>
<!-- CamJamKitRobot&#45;&gt;Robot -->
<g id="edge68" class="edge"><title>CamJamKitRobot&#45;&gt;Robot</title>
<path fill="none" stroke="black" d="M518.319,-89.8067C513.585,-92.5277 509.042,-95.5863 505,-99 482.962,-117.61 491.328,-134.738 469,-153 460.122,-160.261 449.027,-165.803 438.481,-169.918"/>
<polygon fill="black" stroke="black" points="437.263,-166.637 429.031,-173.306 439.625,-173.226 437.263,-166.637"/>
</g>
<!-- Motor -->
<g id="node64" class="node"><title>Motor</title>
<polygon fill="#2980b9" stroke="#2980b9" points="429,-344 375,-344 375,-308 429,-308 429,-344"/>
<text text-anchor="middle" x="402" y="-323.5" font-family="Sans" font-size="10.00" fill="#ffffff">Motor</text>
</g>
<!-- Motor&#45;&gt;SourceMixin -->
<g id="edge70" class="edge"><title>Motor&#45;&gt;SourceMixin</title>
<path fill="none" stroke="black" d="M374.956,-327.375C353.222,-328.523 321.714,-330.187 295.712,-331.56"/>
<polygon fill="black" stroke="black" points="295.485,-328.067 285.683,-332.089 295.854,-335.057 295.485,-328.067"/>
</g>
<!-- Motor&#45;&gt;CompositeDevice -->
<g id="edge69" class="edge"><title>Motor&#45;&gt;CompositeDevice</title>
<path fill="none" stroke="black" d="M374.956,-318.092C356.746,-312.563 331.673,-304.95 308.727,-297.983"/>
<polygon fill="black" stroke="black" points="309.635,-294.601 299.049,-295.045 307.601,-301.299 309.635,-294.601"/>
</g>
<!-- Servo -->
<g id="node65" class="node"><title>Servo</title>
<polygon fill="#2980b9" stroke="#2980b9" points="429,-398 375,-398 375,-362 429,-362 429,-398"/>
<text text-anchor="middle" x="402" y="-377.5" font-family="Sans" font-size="10.00" fill="#ffffff">Servo</text>
</g>
<!-- Servo&#45;&gt;SourceMixin -->
<g id="edge72" class="edge"><title>Servo&#45;&gt;SourceMixin</title>
<path fill="none" stroke="black" d="M374.956,-372.092C353.126,-365.464 321.435,-355.842 295.367,-347.927"/>
<polygon fill="black" stroke="black" points="296.269,-344.543 285.683,-344.986 294.235,-351.241 296.269,-344.543"/>
</g>
<!-- Servo&#45;&gt;CompositeDevice -->
<g id="edge71" class="edge"><title>Servo&#45;&gt;CompositeDevice</title>
<path fill="none" stroke="black" d="M374.942,-372.824C362.091,-368.454 346.849,-361.962 335,-353 314.294,-337.34 318.805,-323.785 299,-307 297.691,-305.89 296.329,-304.806 294.927,-303.749"/>
<polygon fill="black" stroke="black" points="296.787,-300.78 286.562,-298.003 292.823,-306.55 296.787,-300.78"/>
</g>
<!-- AngularServo -->
<g id="node66" class="node"><title>AngularServo</title>
<polygon fill="#2980b9" stroke="#2980b9" points="607,-344 526,-344 526,-308 607,-308 607,-344"/>
<text text-anchor="middle" x="566.5" y="-323.5" font-family="Sans" font-size="10.00" fill="#ffffff">AngularServo</text>
</g>
<!-- AngularServo&#45;&gt;Servo -->
<g id="edge73" class="edge"><title>AngularServo&#45;&gt;Servo</title>
<path fill="none" stroke="black" d="M525.748,-339.21C499.204,-348.031 464.583,-359.536 438.879,-368.077"/>
<polygon fill="black" stroke="black" points="437.54,-364.834 429.154,-371.309 439.747,-371.477 437.54,-364.834"/>
</g>
<!-- TimeOfDay -->
<g id="node67" class="node"><title>TimeOfDay</title>
<polygon fill="#2980b9" stroke="#2980b9" points="747.5,-879 678.5,-879 678.5,-843 747.5,-843 747.5,-879"/>
<text text-anchor="middle" x="713" y="-858.5" font-family="Sans" font-size="10.00" fill="#ffffff">TimeOfDay</text>
</g>
<!-- TimeOfDay&#45;&gt;InternalDevice -->
<g id="edge76" class="edge"><title>TimeOfDay&#45;&gt;InternalDevice</title>
<path fill="none" stroke="black" d="M678.486,-848.476C660.717,-841.835 638.51,-833.537 618.639,-826.111"/>
<polygon fill="black" stroke="black" points="619.694,-822.769 609.102,-822.547 617.244,-829.326 619.694,-822.769"/>
</g>
<!-- PingServer -->
<g id="node68" class="node"><title>PingServer</title>
<polygon fill="#2980b9" stroke="#2980b9" points="747,-825 679,-825 679,-789 747,-789 747,-825"/>
<text text-anchor="middle" x="713" y="-804.5" font-family="Sans" font-size="10.00" fill="#ffffff">PingServer</text>
</g>
<!-- PingServer&#45;&gt;InternalDevice -->
<g id="edge77" class="edge"><title>PingServer&#45;&gt;InternalDevice</title>
<path fill="none" stroke="black" d="M678.849,-807C661.181,-807 639.05,-807 619.182,-807"/>
<polygon fill="black" stroke="black" points="619.034,-803.5 609.034,-807 619.034,-810.5 619.034,-803.5"/>
</g>
<!-- CPUTemperature -->
<g id="node69" class="node"><title>CPUTemperature</title>
<polygon fill="#2980b9" stroke="#2980b9" points="762,-933 664,-933 664,-897 762,-897 762,-933"/>
<text text-anchor="middle" x="713" y="-912.5" font-family="Sans" font-size="10.00" fill="#ffffff">CPUTemperature</text>
</g>
<!-- CPUTemperature&#45;&gt;InternalDevice -->
<g id="edge78" class="edge"><title>CPUTemperature&#45;&gt;InternalDevice</title>
<path fill="none" stroke="black" d="M677.948,-896.89C673.176,-894.053 668.403,-891.047 664,-888 639.291,-870.901 613.313,-848.829 594.542,-832.044"/>
<polygon fill="black" stroke="black" points="596.732,-829.306 586.964,-825.204 592.042,-834.503 596.732,-829.306"/>
</g>
</g>
</svg>