{
  "patches": {
    "@/002-simulate": {
      "links": {
        "HkzE6HMaPV": {
          "id": "HkzE6HMaPV",
          "input": {
            "nodeId": "ryZVTSM6vE",
            "pinKey": "HkXK-dGob"
          },
          "output": {
            "nodeId": "H1lV6HGTvE",
            "pinKey": "r1yhZRd8W"
          }
        },
        "SyXEaSz6vN": {
          "id": "SyXEaSz6vN",
          "input": {
            "nodeId": "H1lV6HGTvE",
            "pinKey": "HJAq-A_8-"
          },
          "output": {
            "nodeId": "Hy4przaDV",
            "pinKey": "HJU8CE2lW"
          }
        }
      },
      "nodes": {
        "H1lV6HGTvE": {
          "id": "H1lV6HGTvE",
          "position": {
            "x": 8,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/core/count"
        },
        "Hy4przaDV": {
          "id": "Hy4przaDV",
          "position": {
            "x": 9,
            "y": 0,
            "units": "slots"
          },
          "type": "xod/core/clock"
        },
        "ryZVTSM6vE": {
          "size": {
            "height": 1,
            "width": 2,
            "units": "slots"
          },
          "id": "ryZVTSM6vE",
          "position": {
            "x": 8,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/debug/watch"
        }
      },
      "comments": {
        "HkT2f6bcN": {
          "content": "## 👆 Shortcut\n\nUse the button with a *gamepad* icon on the deployment pane to run the simulation with a single click. The deployment pane is at the bottom of the IDE window.",
          "id": "HkT2f6bcN",
          "position": {
            "x": 8,
            "y": 3,
            "units": "slots"
          },
          "size": {
            "height": 2,
            "width": 6,
            "units": "slots"
          }
        },
        "rkDASa1dN": {
          "content": "# Running Simulation\n\nEventually, you will want deploy to some real hardware. But for the start, XOD also offers a simulation mode that allows running a program right inside the IDE.\n\nIt's useful to quickly test some ideas or just play around.\n\n## Exercise\n\nLet's learn how to run our program!\n\n1. Hit Deploy → Simulate from the main menu.\n2. Observe how your current patch opens in a special “Debugger” tab, and the `watch` node becomes alive demonstrating the current counter value.\n3. To finish the simulation session press the “Stop” button in the upper right corner or close the debugger tab.\n",
          "id": "rkDASa1dN",
          "position": {
            "x": -2,
            "y": -1,
            "units": "slots"
          },
          "size": {
            "height": 4,
            "width": 8,
            "units": "slots"
          }
        }
      },
      "path": "@/002-simulate"
    },
    "@/004-patching": {
      "links": {
        "BJ9BguYdE": {
          "id": "BJ9BguYdE",
          "input": {
            "nodeId": "HJgDCDMpPV",
            "pinKey": "HJAq-A_8-"
          },
          "output": {
            "nodeId": "ByP0vzTPE",
            "pinKey": "HJU8CE2lW"
          }
        },
        "HkGDRDG6DN": {
          "id": "HkGDRDG6DN",
          "input": {
            "nodeId": "Sk-PRvGpDV",
            "pinKey": "HkXK-dGob"
          },
          "output": {
            "nodeId": "HJgDCDMpPV",
            "pinKey": "r1yhZRd8W"
          }
        }
      },
      "nodes": {
        "ByP0vzTPE": {
          "id": "ByP0vzTPE",
          "position": {
            "x": 9,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/core/clock"
        },
        "HJgDCDMpPV": {
          "id": "HJgDCDMpPV",
          "position": {
            "x": 8,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/core/count"
        },
        "Sk-PRvGpDV": {
          "size": {
            "height": 1,
            "width": 2,
            "units": "slots"
          },
          "id": "Sk-PRvGpDV",
          "position": {
            "x": 8,
            "y": 3,
            "units": "slots"
          },
          "type": "xod/debug/watch"
        }
      },
      "comments": {
        "BJJH5p-cV": {
          "content": "## 👆 Ways to add node\n\nAlternatively to double-clicking you can also press the “I” key or hit Edit → Insert Node.\n\nIf you don’t remember the name of a node, try to find it in Project Browser. Once you spot it there, drag’n’drop the item to the patch board or hit Place in its context menu.",
          "id": "BJJH5p-cV",
          "position": {
            "x": -2,
            "y": 6,
            "units": "slots"
          },
          "size": {
            "height": 2,
            "width": 8,
            "units": "slots"
          }
        },
        "Hy-6APFO4": {
          "content": "# Patching\n\nYou guessed correctly, you may add nodes and link them to build brand new programs and improve existing ones.\n\n## Exercise\n\nLet's extend our counting program so that we'll have two independent counters.\n\n1. Double-click on some empty space on the patch; the suggester line will appear.\n2. Start typing “clock” into it and press Enter once you see `xod/core/clock`.\n3. A new `clock` node will appear where you have double-clicked.\n4. Move the node around by dragging it.\n5. Repeat steps 1-4 to add `count` and `watch` nodes.\n6. Create a link between `clock`'s `TICK` pin and `count`'s `INC` pin by clicking on one pin, then the other.\n7. Create a link between `count`'s output pin and `watch`'s input pin.\n\nRun the simulation to see how the counters work in parallel. Try to set different `IVAL` parameters and see how it changes the behavior.",
          "id": "Hy-6APFO4",
          "position": {
            "x": -2,
            "y": 0,
            "units": "slots"
          },
          "size": {
            "height": 6,
            "width": 8,
            "units": "slots"
          }
        },
        "rkOBIOtO4": {
          "content": "## 👆 Copy/paste\n\nAnother way of duplicating a group of nodes and links is selecting them by drawing a frame around to select multiple nodes at once and then copy/paste using the Edit menu or keyboard shortcuts traditional for your OS.\n\nIf you draw the selection frame from left to right, a node is selected only if fits inside completely; if you draw from right to left, the nodes which intersect the frame are also selected.",
          "id": "rkOBIOtO4",
          "position": {
            "x": 8,
            "y": 4,
            "units": "slots"
          },
          "size": {
            "height": 3,
            "width": 7,
            "units": "slots"
          }
        }
      },
      "path": "@/004-patching"
    },
    "@/005-tweaks": {
      "links": {
        "S1m_w9GawV": {
          "id": "S1m_w9GawV",
          "input": {
            "nodeId": "H1eOP5GpPE",
            "pinKey": "HJAq-A_8-"
          },
          "output": {
            "nodeId": "SkdPczaD4",
            "pinKey": "HJU8CE2lW"
          }
        },
        "SkLFcGpDV": {
          "id": "SkLFcGpDV",
          "input": {
            "nodeId": "SkdPczaD4",
            "pinKey": "B13SCNhl-"
          },
          "output": {
            "nodeId": "r1NYczTwN",
            "pinKey": "ByfGSDjQE"
          }
        },
        "SkM_DczawE": {
          "id": "SkM_DczawE",
          "input": {
            "nodeId": "rJWuDqG6DV",
            "pinKey": "HkXK-dGob"
          },
          "output": {
            "nodeId": "H1eOP5GpPE",
            "pinKey": "r1yhZRd8W"
          }
        }
      },
      "nodes": {
        "H1eOP5GpPE": {
          "id": "H1eOP5GpPE",
          "position": {
            "x": 10,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/core/count"
        },
        "SkdPczaD4": {
          "id": "SkdPczaD4",
          "position": {
            "x": 11,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/core/clock"
        },
        "r1NYczTwN": {
          "boundLiterals": {
            "ByfGSDjQE": "1.6"
          },
          "id": "r1NYczTwN",
          "position": {
            "x": 12,
            "y": 0,
            "units": "slots"
          },
          "type": "xod/debug/tweak-number"
        },
        "rJWuDqG6DV": {
          "size": {
            "height": 1,
            "width": 2,
            "units": "slots"
          },
          "id": "rJWuDqG6DV",
          "position": {
            "x": 10,
            "y": 3,
            "units": "slots"
          },
          "type": "xod/debug/watch"
        }
      },
      "comments": {
        "Bk86OdKuN": {
          "content": "# Tweaks\n\nRestarting a program every time you change a value in the Inspector is inconvenient.\nWith `tweak-*` nodes, you can adjust values while the program is running.\n\nOn the current patch we added a `tweak-number` linked to `IVAL` already.\n\n## Exercise\n\nLet’s learn how to add new tweaks to your program and control them in runtime.\n\n1. Add `tweak-number` node to the patch.\n2. Link `tweak-number`'s output pin to `count`'s `STEP` pin.\n3. Start the simulation.\n4. Double click the tweak node; the text box for tweak value will focus in Inspector.\n5. Change the value to `2.0` and press Enter.\n6. Adjust the value of the tweak linked to `clock`'s `IVAL` pin.\n\nTake a note how the changes are immediately applied while you are in the simulation mode. Try some other values and see how they behave.",
          "id": "Bk86OdKuN",
          "position": {
            "x": 0,
            "y": 0,
            "units": "slots"
          },
          "size": {
            "height": 5,
            "width": 8,
            "units": "slots"
          }
        },
        "H1mAsFFdE": {
          "content": "## 👆 Save some typing\n\nUse Up/Down keyboard keys in the Inspector to adjust numeric values by 0.1. Hold Shift to adjust by 1.0.",
          "id": "H1mAsFFdE",
          "position": {
            "x": 10,
            "y": 4,
            "units": "slots"
          },
          "size": {
            "height": 2,
            "width": 7,
            "units": "slots"
          }
        }
      },
      "path": "@/005-tweaks"
    },
    "@/006-help": {
      "links": {
        "Hk6RlJWFV": {
          "id": "Hk6RlJWFV",
          "input": {
            "nodeId": "SJ-T9u0u4",
            "pinKey": "HkXK-dGob"
          },
          "output": {
            "nodeId": "H1qCxJbKV",
            "pinKey": "BJRURA1nW"
          }
        },
        "ryR0xyZKN": {
          "id": "ryR0xyZKN",
          "input": {
            "nodeId": "H1qCxJbKV",
            "pinKey": "Hk2H0A13-"
          },
          "output": {
            "nodeId": "SyfhqOR_4",
            "pinKey": "ByfGSDjQE"
          }
        }
      },
      "nodes": {
        "H1qCxJbKV": {
          "boundLiterals": {
            "H1WURCknW": "1",
            "Hy_U0013b": "5"
          },
          "id": "H1qCxJbKV",
          "position": {
            "x": 10,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/math/clip"
        },
        "SJ-T9u0u4": {
          "size": {
            "height": 1,
            "width": 2,
            "units": "slots"
          },
          "id": "SJ-T9u0u4",
          "position": {
            "x": 10,
            "y": 3,
            "units": "slots"
          },
          "type": "xod/debug/watch"
        },
        "SyfhqOR_4": {
          "boundLiterals": {
            "ByfGSDjQE": "9"
          },
          "id": "SyfhqOR_4",
          "position": {
            "x": 10,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/debug/tweak-number"
        }
      },
      "comments": {
        "Hy25Dd0wE": {
          "content": "# Getting Help\n\nBy now you should be a bit bored by the `clock` and `counter`. XOD offers many more nodes to work with and yet more [nodes are shared by the community](https://xod.io/libs/?utm_source=ide&utm_medium=ide_comment&utm_campaign=tutorial) members. What a node does is described with a short annotation carried with the node. Your discovery starts with reading these descriptions.\n\n## Exercise\n\nLet's learn a few ways to see nodes’ descriptions.\n\n1. Scroll to the `xod/math` section in the Project Browser and click to expand it.\n2. Click on the `clip` patch, and then press the H key. A help box with the description will appear.\n3. Click on another patch. Help panel will move and show a description for it.\n4. Select some node on the patch board and press the H key. Quick Help panel will appear at the right side of the patch board.\n\nDiscover a few more nodes bundled within the XOD standard library.",
          "id": "Hy25Dd0wE",
          "position": {
            "x": 0,
            "y": 1,
            "units": "slots"
          },
          "size": {
            "height": 6,
            "width": 7,
            "units": "slots"
          }
        },
        "SycXweWYV": {
          "content": "## 👆 Help while searching\n\nAs you probably noticed from previous lessons, the help boxes also automatically appear when using Suggester.",
          "id": "SycXweWYV",
          "position": {
            "x": 8,
            "y": 5,
            "units": "slots"
          },
          "size": {
            "height": 2,
            "width": 7,
            "units": "slots"
          }
        },
        "rJdie0Z9E": {
          "content": "## Extra exercise\n\nUsing all the knowledge you have up to this moment, try to make a program which shows a cosine of a continuously increasing angle. Math is beautiful!",
          "id": "rJdie0Z9E",
          "position": {
            "x": 16,
            "y": 5,
            "units": "slots"
          },
          "size": {
            "height": 2,
            "width": 7,
            "units": "slots"
          }
        }
      },
      "path": "@/006-help"
    },
    "@/007-booleans": {
      "links": {
        "BJcjW7pidV": {
          "id": "BJcjW7pidV",
          "input": {
            "nodeId": "HysWmajdV",
            "pinKey": "SJMVU0urvkZ"
          },
          "output": {
            "nodeId": "B1gj-mTod4",
            "pinKey": "SJyXI0OrD1-"
          }
        },
        "BktjWXaoON": {
          "id": "BktjWXaoON",
          "input": {
            "nodeId": "B1gj-mTod4",
            "pinKey": "HJCfI0dBDkb"
          },
          "output": {
            "nodeId": "S1zibm6o_V",
            "pinKey": "Sk1e_NIVE"
          }
        },
        "H1vsZQaoO4": {
          "id": "H1vsZQaoO4",
          "input": {
            "nodeId": "B1SoZ76iuN",
            "pinKey": "HkXK-dGob"
          },
          "output": {
            "nodeId": "HysWmajdV",
            "pinKey": "B1gN80uHvk-"
          }
        },
        "HJIo-7TsdV": {
          "id": "HJIo-7TsdV",
          "input": {
            "nodeId": "Sy4s-76i_E",
            "pinKey": "ry3zLA_Bv1Z"
          },
          "output": {
            "nodeId": "By7i-majON",
            "pinKey": "Sk1e_NIVE"
          }
        },
        "HydjbXajuV": {
          "id": "HydjbXajuV",
          "input": {
            "nodeId": "B1gj-mTod4",
            "pinKey": "BJaG80urD1-"
          },
          "output": {
            "nodeId": "rkbi-mTouN",
            "pinKey": "Sk1e_NIVE"
          }
        },
        "rkjsZX6o_V": {
          "id": "rkjsZX6o_V",
          "input": {
            "nodeId": "HysWmajdV",
            "pinKey": "r1bVLR_BPJW"
          },
          "output": {
            "nodeId": "Sy4s-76i_E",
            "pinKey": "r1if8ROSDJ-"
          }
        }
      },
      "nodes": {
        "B1SoZ76iuN": {
          "size": {
            "height": 1,
            "width": 4,
            "units": "slots"
          },
          "id": "B1SoZ76iuN",
          "position": {
            "x": 10,
            "y": 4,
            "units": "slots"
          },
          "type": "xod/debug/watch"
        },
        "B1gj-mTod4": {
          "id": "B1gj-mTod4",
          "position": {
            "x": 9,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/core/or"
        },
        "By7i-majON": {
          "id": "By7i-majON",
          "position": {
            "x": 12,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/debug/tweak-boolean"
        },
        "HysWmajdV": {
          "id": "HysWmajdV",
          "position": {
            "x": 10,
            "y": 3,
            "units": "slots"
          },
          "type": "xod/core/and"
        },
        "S1zibm6o_V": {
          "id": "S1zibm6o_V",
          "position": {
            "x": 10,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/debug/tweak-boolean"
        },
        "Sy4s-76i_E": {
          "id": "Sy4s-76i_E",
          "position": {
            "x": 12,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/core/not"
        },
        "rkbi-mTouN": {
          "id": "rkbi-mTouN",
          "position": {
            "x": 9,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/debug/tweak-boolean"
        }
      },
      "comments": {
        "ByANvORwN": {
          "content": "# Booleans\n\nIn previous lessons we mostly dealt with numbers adjusting counter step and clock interval. Now let's talk about *booleans*. They have only two possible values:\n\n- *True* (aka logic one, high signal)\n- *False* (aka logic zero, low signal)\n\nBooleans are extremely useful and common. They may be used to indicate whether some condition is met, should a device be on or off, did some operation succeed, etc.\n\n## Exercise\n\nLet’s learn how boolean values can be combined.\n\n1. Read the descriptions for `and`, `or` and `not` nodes.\n2. Guess what the output value of `and` will be.\n3. Run the simulation to confirm it.\n4. Use `tweak-boolean` nodes to change it to the opposite value.\n\nCheck out descriptions for `nand`, `nor` and `xor` nodes. Add them onto the patch along with some additional tweaks to make a more complex processing.",
          "id": "ByANvORwN",
          "position": {
            "x": 0,
            "y": 0,
            "units": "slots"
          },
          "size": {
            "height": 6,
            "width": 7,
            "units": "slots"
          }
        },
        "SJgSLRb9V": {
          "content": "## 👆 Ladder logic\n\nIf one would use binary sensors like buttons or mechanic switches as a source of boolean values and relays instead of watches, he can use XOD to program PLC devices resembling the ladder programming which is common in industrial applications.",
          "id": "SJgSLRb9V",
          "position": {
            "x": 9,
            "y": 5,
            "units": "slots"
          },
          "size": {
            "height": 2,
            "width": 7,
            "units": "slots"
          }
        }
      },
      "path": "@/007-booleans"
    },
    "@/008-variadics": {
      "links": {
        "B1RAndRO4": {
          "id": "B1RAndRO4",
          "input": {
            "nodeId": "BylRnd0_E",
            "pinKey": "HJCfI0dBDkb-$2"
          },
          "output": {
            "nodeId": "rkZOj_CuV",
            "pinKey": "Sk1e_NIVE"
          }
        },
        "BJXdQajON": {
          "id": "BJXdQajON",
          "input": {
            "nodeId": "Hysgh7pD4",
            "pinKey": "BJnQUR_BwyZ"
          },
          "output": {
            "nodeId": "HkeuXpodV",
            "pinKey": "ByfGSDjQE"
          }
        },
        "HkSCnuR_N": {
          "id": "HkSCnuR_N",
          "input": {
            "nodeId": "SyePjO0ON",
            "pinKey": "HkXK-dGob"
          },
          "output": {
            "nodeId": "BylRnd0_E",
            "pinKey": "SJyXI0OrD1-"
          }
        },
        "S1JSz4pD4": {
          "id": "S1JSz4pD4",
          "input": {
            "nodeId": "Hysgh7pD4",
            "pinKey": "HkqmLAOrD1W"
          },
          "output": {
            "nodeId": "rkadWN6vN",
            "pinKey": "ByfGSDjQE"
          }
        },
        "SyNChdR_E": {
          "id": "SyNChdR_E",
          "input": {
            "nodeId": "BylRnd0_E",
            "pinKey": "BJaG80urD1-"
          },
          "output": {
            "nodeId": "S1yOoOAu4",
            "pinKey": "Sk1e_NIVE"
          }
        },
        "rkL02_0OE": {
          "id": "rkL02_0OE",
          "input": {
            "nodeId": "BylRnd0_E",
            "pinKey": "HJCfI0dBDkb"
          },
          "output": {
            "nodeId": "r1x_jOC_E",
            "pinKey": "Sk1e_NIVE"
          }
        },
        "ryxbhmTwN": {
          "id": "ryxbhmTwN",
          "input": {
            "nodeId": "B1-4xh7pvV",
            "pinKey": "HkXK-dGob"
          },
          "output": {
            "nodeId": "Hysgh7pD4",
            "pinKey": "SyomIRurDJ-"
          }
        }
      },
      "nodes": {
        "B1-4xh7pvV": {
          "size": {
            "height": 1,
            "width": 4,
            "units": "slots"
          },
          "id": "B1-4xh7pvV",
          "position": {
            "x": 13,
            "y": 3,
            "units": "slots"
          },
          "type": "xod/debug/watch"
        },
        "BJKFQao_4": {
          "boundLiterals": {
            "ByfGSDjQE": "11"
          },
          "id": "BJKFQao_4",
          "position": {
            "x": 16,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/debug/tweak-number"
        },
        "BylRnd0_E": {
          "arityLevel": 3,
          "id": "BylRnd0_E",
          "position": {
            "x": 8,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/core/or"
        },
        "HkeuXpodV": {
          "boundLiterals": {
            "ByfGSDjQE": "42"
          },
          "id": "HkeuXpodV",
          "position": {
            "x": 13,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/debug/tweak-number"
        },
        "Hysgh7pD4": {
          "id": "Hysgh7pD4",
          "position": {
            "x": 13,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/core/add"
        },
        "S1yOoOAu4": {
          "id": "S1yOoOAu4",
          "position": {
            "x": 8,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/debug/tweak-boolean"
        },
        "SyePjO0ON": {
          "size": {
            "height": 1,
            "width": 2,
            "units": "slots"
          },
          "id": "SyePjO0ON",
          "position": {
            "x": 8,
            "y": 3,
            "units": "slots"
          },
          "type": "xod/debug/watch"
        },
        "r1x_jOC_E": {
          "boundLiterals": {
            "Sk1e_NIVE": "False"
          },
          "id": "r1x_jOC_E",
          "position": {
            "x": 9,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/debug/tweak-boolean"
        },
        "rkZOj_CuV": {
          "boundLiterals": {
            "Sk1e_NIVE": "True"
          },
          "id": "rkZOj_CuV",
          "position": {
            "x": 11,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/debug/tweak-boolean"
        },
        "rkadWN6vN": {
          "boundLiterals": {
            "ByfGSDjQE": "0.5"
          },
          "id": "rkadWN6vN",
          "position": {
            "x": 14,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/debug/tweak-number"
        }
      },
      "comments": {
        "H19EghQpvE": {
          "content": "# Variadic Nodes\n\nCheck out the `or` node on this patch. In the previous lesson we saw that it has just two inputs, but now it has four! That's because some of the nodes in XOD are *variadic* — you can change their number of inputs.\n\nVariadic nodes can be recognized by the handle on the right side. Also, their pins are marked as “variadic” in the help panels.\n\n## Exercise\n\nLet’s learn how to adjust the number of inputs.\n\n1. Hover over the right side of the `add` node. Your cursor should become a double arrow.\n2. Click and drag to the right to add more inputs.\n3. Use the new inputs to link the “11” `tweak-number`, bind some values to others.\n\nAs you guess, `add` will sum all the inputs it got. Run the simulation to verify.",
          "id": "H19EghQpvE",
          "position": {
            "x": 0,
            "y": 0,
            "units": "slots"
          },
          "size": {
            "height": 6,
            "width": 7,
            "units": "slots"
          }
        }
      },
      "path": "@/008-variadics"
    },
    "@/009-pulses": {
      "links": {
        "BJdSjYQaPV": {
          "id": "BJdSjYQaPV",
          "input": {
            "nodeId": "SJxBoK7pP4",
            "pinKey": "HJAq-A_8-"
          },
          "output": {
            "nodeId": "B1BjYmTw4",
            "pinKey": "HJU8CE2lW"
          }
        },
        "HkvBsYQpPN": {
          "id": "HkvBsYQpPN",
          "input": {
            "nodeId": "SkbSsYX6PN",
            "pinKey": "HkXK-dGob"
          },
          "output": {
            "nodeId": "SJxBoK7pP4",
            "pinKey": "r1yhZRd8W"
          }
        },
        "rJKhKQavV": {
          "id": "rJKhKQavV",
          "input": {
            "nodeId": "SJxBoK7pP4",
            "pinKey": "SkUjZA_L-"
          },
          "output": {
            "nodeId": "S1unYQ6DE",
            "pinKey": "Bkf4BDsmV"
          }
        }
      },
      "nodes": {
        "B1BjYmTw4": {
          "id": "B1BjYmTw4",
          "position": {
            "x": 8,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/core/clock"
        },
        "S1unYQ6DE": {
          "size": {
            "height": 1,
            "width": 2,
            "units": "slots"
          },
          "id": "S1unYQ6DE",
          "position": {
            "x": 9,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/debug/tweak-pulse"
        },
        "SJxBoK7pP4": {
          "id": "SJxBoK7pP4",
          "position": {
            "x": 7,
            "y": 3,
            "units": "slots"
          },
          "type": "xod/core/count"
        },
        "SkbSsYX6PN": {
          "size": {
            "height": 1,
            "width": 2,
            "units": "slots"
          },
          "id": "SkbSsYX6PN",
          "position": {
            "x": 7,
            "y": 4,
            "units": "slots"
          },
          "type": "xod/debug/watch"
        }
      },
      "comments": {
        "B1BIP_AwN": {
          "content": "# Pulses\n\nIn previous lessons, we told that the `clock` node ticks. To be more precise, the node outputs *pulses*.\n\nThis data type is very different from all the others like numbers and booleans. Values ​​in the XOD are transferred to the links continuously, even if they don’t change. They are like voltage. The pulse data type is different. Imagine something like a flash. It’s basically a message to trigger something else. It does not transmit any data. Howerver, it is useful when you need to convey that an event has occurred or tell something else to work.\n\nAnd of course, XOD offers a `tweak-pulse` node to send pulses manually during simulation.\n\n## Exercice\n\nLet’s play with pulses using `tweak-pulse`.\n\n1. Run the simulation.\n2. Select the `tweak-pulse` node.\n3. Press the “pulse” button in the Inspector; the counter will reset back to 0.\n4. Replace the `clock` node with an another `tweak-pulse` and restart the simulation.\n5. Increment the counter by manually sending pulses to `INC` pin.\n",
          "id": "B1BIP_AwN",
          "position": {
            "x": -1,
            "y": 0,
            "units": "slots"
          },
          "size": {
            "height": 7,
            "width": 7,
            "units": "slots"
          }
        }
      },
      "path": "@/009-pulses"
    },
    "@/010-flip-flop": {
      "links": {
        "HkhyP4pDV": {
          "id": "HkhyP4pDV",
          "input": {
            "nodeId": "Hys1vVpDV",
            "pinKey": "ryTIROHwkW"
          },
          "output": {
            "nodeId": "BJMpR8VTwV",
            "pinKey": "HJU8CE2lW"
          }
        },
        "SJR1PVaPV": {
          "id": "SJR1PVaPV",
          "input": {
            "nodeId": "r1baCUE6w4",
            "pinKey": "HkXK-dGob"
          },
          "output": {
            "nodeId": "Hys1vVpDV",
            "pinKey": "HkyxURuSPyW"
          }
        }
      },
      "nodes": {
        "BJMpR8VTwV": {
          "id": "BJMpR8VTwV",
          "position": {
            "x": 10,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/core/clock"
        },
        "Hys1vVpDV": {
          "id": "Hys1vVpDV",
          "position": {
            "x": 9,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/core/flip-flop"
        },
        "r1baCUE6w4": {
          "id": "r1baCUE6w4",
          "position": {
            "x": 9,
            "y": 3,
            "units": "slots"
          },
          "type": "xod/debug/watch"
        }
      },
      "comments": {
        "SyRmtuAw4": {
          "content": "# Flip-flops\n\nYou can control the behavior of many nodes with pulses. A very useful node is `flip-flop`. It acts like a virtual switch, whose states can be controlled by pulses. A pulse on `SET` turns the stored `MEM` value to true. `RST` resets `MEM` to false. And a pulse on `TGL` inverses the `MEM` value.\n\nThe patch shown here toggles the output boolean value each second.\n\n## Exercise\n\nLet’s experiment with the `flip-flop` node.\n\n1. Replace `clock` node with `tweak-pulse` node.\n2. Add a couple more `tweak-pulse`s and connect them to `flip-flop`'s `SET` and `RST` pins.\n3. Run the simulation, and send pulses to each pin\n\nObserve how the `MEM` value changes when sending several pulses to the same pin in a row.\n",
          "id": "SyRmtuAw4",
          "position": {
            "x": 0,
            "y": 0,
            "units": "slots"
          },
          "size": {
            "height": 5,
            "width": 7,
            "units": "slots"
          }
        }
      },
      "path": "@/010-flip-flop"
    },
    "@/011-branching": {
      "links": {
        "BkC8FNpDN": {
          "id": "BkC8FNpDN",
          "input": {
            "nodeId": "rkiIt4aP4",
            "pinKey": "HJAq-A_8-"
          },
          "output": {
            "nodeId": "rJg54K4TDN",
            "pinKey": "HJU8CE2lW"
          }
        },
        "H1WEDYE6PN": {
          "id": "H1WEDYE6PN",
          "input": {
            "nodeId": "B1gEvFVawV",
            "pinKey": "HJAq-A_8-"
          },
          "output": {
            "nodeId": "rJ4DFVpvE",
            "pinKey": "HJU8CE2lW"
          }
        },
        "HyAHYE6w4": {
          "id": "HyAHYE6w4",
          "input": {
            "nodeId": "ry9NK46v4",
            "pinKey": "HkXK-dGob"
          },
          "output": {
            "nodeId": "BysSt4TPE",
            "pinKey": "S13xLCuHvkW"
          }
        },
        "HyevK4TPE": {
          "id": "HyevK4TPE",
          "input": {
            "nodeId": "BysSt4TPE",
            "pinKey": "ryTeUROHD1b"
          },
          "output": {
            "nodeId": "rkiIt4aP4",
            "pinKey": "r1yhZRd8W"
          }
        },
        "S178FVaPV": {
          "id": "S178FVaPV",
          "input": {
            "nodeId": "BysSt4TPE",
            "pinKey": "S1yZIA_rDJZ"
          },
          "output": {
            "nodeId": "SkzLFNpwE",
            "pinKey": "Sk1e_NIVE"
          }
        },
        "ryIwF4pP4": {
          "id": "ryIwF4pP4",
          "input": {
            "nodeId": "BysSt4TPE",
            "pinKey": "r1AgIROHDJW"
          },
          "output": {
            "nodeId": "B1gEvFVawV",
            "pinKey": "r1yhZRd8W"
          }
        }
      },
      "nodes": {
        "B1gEvFVawV": {
          "boundLiterals": {
            "HJvqZ0dLZ": "-1"
          },
          "id": "B1gEvFVawV",
          "position": {
            "x": 15,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/core/count"
        },
        "BysSt4TPE": {
          "id": "BysSt4TPE",
          "position": {
            "x": 11,
            "y": 4,
            "units": "slots"
          },
          "type": "xod/core/if-else"
        },
        "SkzLFNpwE": {
          "boundLiterals": {
            "Sk1e_NIVE": "True"
          },
          "id": "SkzLFNpwE",
          "position": {
            "x": 11,
            "y": 3,
            "units": "slots"
          },
          "type": "xod/debug/tweak-boolean"
        },
        "rJ4DFVpvE": {
          "boundLiterals": {
            "B13SCNhl-": "2"
          },
          "id": "rJ4DFVpvE",
          "position": {
            "x": 15,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/core/clock"
        },
        "rJg54K4TDN": {
          "boundLiterals": {
            "B13SCNhl-": "0.5"
          },
          "id": "rJg54K4TDN",
          "position": {
            "x": 12,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/core/clock"
        },
        "rkiIt4aP4": {
          "id": "rkiIt4aP4",
          "position": {
            "x": 12,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/core/count"
        },
        "ry9NK46v4": {
          "size": {
            "height": 1,
            "width": 3,
            "units": "slots"
          },
          "id": "ry9NK46v4",
          "position": {
            "x": 11,
            "y": 5,
            "units": "slots"
          },
          "type": "xod/debug/watch"
        }
      },
      "comments": {
        "Sy45VFVpPV": {
          "content": "# Branching\n\nChoosing between values based on some condition is a common task. For this, there is an `if-else` node in `xod/core`.\n\nThe `COND` pin of this node checks the boolean input value. If `COND` receives true, the node sets the value from the `T` pin to the `R` pin. When it receives false, it sets the value from the `F` pin to the `R` pin.\n\n## Exercise\n\nLearn how `if-else` behaves.\n\n1. Run the simulation.\n2. Change the value of the `tweak-boolean` node, observe how `if-else` output chenges.\n3. Replace `tweak-boolean` with a `flop-flop` with `TGL` pin connected to a `clock`.",
          "id": "Sy45VFVpPV",
          "position": {
            "x": 0,
            "y": 0,
            "units": "slots"
          },
          "size": {
            "height": 4,
            "width": 8,
            "units": "slots"
          }
        }
      },
      "path": "@/011-branching"
    },
    "@/012-strings": {
      "links": {
        "ByE2GGWKV": {
          "id": "ByE2GGWKV",
          "input": {
            "nodeId": "H1f3GfWFV",
            "pinKey": "BkeKcj6ZZ"
          },
          "output": {
            "nodeId": "SyZoTKVpDN",
            "pinKey": "S13xLCuHvkW"
          }
        },
        "HypAY46v4": {
          "id": "HypAY46v4",
          "input": {
            "nodeId": "Bkh0FNTDV",
            "pinKey": "ryTIROHwkW"
          },
          "output": {
            "nodeId": "rklsaYEpPN",
            "pinKey": "HJU8CE2lW"
          }
        },
        "SyOurBRD4": {
          "id": "SyOurBRD4",
          "input": {
            "nodeId": "SyZoTKVpDN",
            "pinKey": "r1AgIROHDJW"
          },
          "output": {
            "nodeId": "S15HrHRDE",
            "pinKey": "H1wh06BEV"
          }
        },
        "r1DOBHRDE": {
          "id": "r1DOBHRDE",
          "input": {
            "nodeId": "SyZoTKVpDN",
            "pinKey": "ryTeUROHD1b"
          },
          "output": {
            "nodeId": "rJVSrHCwN",
            "pinKey": "H1wh06BEV"
          }
        },
        "rJHnGfbYN": {
          "id": "rJHnGfbYN",
          "input": {
            "nodeId": "Hyi6FEpPV",
            "pinKey": "HkXK-dGob"
          },
          "output": {
            "nodeId": "H1f3GfWFV",
            "pinKey": "rksccsp-W"
          }
        },
        "rkZJ5VavV": {
          "id": "rkZJ5VavV",
          "input": {
            "nodeId": "SyZoTKVpDN",
            "pinKey": "S1yZIA_rDJZ"
          },
          "output": {
            "nodeId": "Bkh0FNTDV",
            "pinKey": "HkyxURuSPyW"
          }
        }
      },
      "nodes": {
        "Bkh0FNTDV": {
          "id": "Bkh0FNTDV",
          "position": {
            "x": 9,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/core/flip-flop"
        },
        "H1f3GfWFV": {
          "boundLiterals": {
            "Hkqu9oaWb": "\"Hello \""
          },
          "id": "H1f3GfWFV",
          "position": {
            "x": 9,
            "y": 4,
            "units": "slots"
          },
          "type": "xod/core/concat"
        },
        "Hyi6FEpPV": {
          "size": {
            "height": 1,
            "width": 4,
            "units": "slots"
          },
          "id": "Hyi6FEpPV",
          "position": {
            "x": 9,
            "y": 5,
            "units": "slots"
          },
          "type": "xod/debug/watch"
        },
        "S15HrHRDE": {
          "boundLiterals": {
            "H1wh06BEV": "\"World\""
          },
          "id": "S15HrHRDE",
          "position": {
            "x": 14,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/debug/tweak-string-16"
        },
        "SyZoTKVpDN": {
          "id": "SyZoTKVpDN",
          "position": {
            "x": 10,
            "y": 3,
            "units": "slots"
          },
          "type": "xod/core/if-else"
        },
        "rJVSrHCwN": {
          "boundLiterals": {
            "H1wh06BEV": "\"XOD\""
          },
          "id": "rJVSrHCwN",
          "position": {
            "x": 13,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/debug/tweak-string-16"
        },
        "rklsaYEpPN": {
          "boundLiterals": {
            "B13SCNhl-": "1"
          },
          "id": "rklsaYEpPN",
          "position": {
            "x": 10,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/core/clock"
        }
      },
      "comments": {
        "BkFwA0Z9V": {
          "content": "## 👆 Generics\n\nNote, the `if-else` node can work with numbers *or* strings depending on the incoming value type. The pins which accept various types are called *generic*. You can spot them by the little dot in the center.\n\nIf you want to bind a string value to a generic pin, you should enquote it because the number `3.14` and the string `\"3.14\"` are different things. The quotes explicitly tell XOD you’ve meant a string value.",
          "id": "BkFwA0Z9V",
          "position": {
            "x": 14,
            "y": 4,
            "units": "slots"
          },
          "size": {
            "height": 3,
            "width": 7,
            "units": "slots"
          }
        },
        "H12oaYV6PN": {
          "content": "# Strings\n\nAnother important data type is a *string*. Strings represent pieces of text like “Hello World!” or \"[https://xod.io](https://xod.io/?utm_source=ide&utm_medium=ide_comment&utm_campaign=tutorial)\". XOD depicts the string type in yellow.\n\nTweak nodes for strings are a bit special. For optimisation purposes XOD needs to know the maximum length of the tweaked string, so there are several ones available. When you want to add a string tweak, choose the smallest one necessary.\n\nThe standard library contains a few nodes to work with strings and text. One useful node is `concat`. It joins several parts into a single one. This allows creating a message out of several data sources.\n\n## Exercise\n\nTry strings in runtime.\n\n1. Run the Simulation.\n2. Observe how the message alternates between \"Hello World\" and \"Hello XOD\".\n3. Change values of `tweak-string-16`s to change the message.\n4. Add a third pin to `concat` and bind an exclamation point to it.",
          "id": "H12oaYV6PN",
          "position": {
            "x": 0,
            "y": 1,
            "units": "slots"
          },
          "size": {
            "height": 6,
            "width": 7,
            "units": "slots"
          }
        }
      },
      "path": "@/012-strings"
    },
    "@/013-custom-types": {
      "links": {
        "H1c0s5L2L": {
          "id": "H1c0s5L2L",
          "input": {
            "nodeId": "Bk5TsqI2U",
            "pinKey": "HJRLHWQw7"
          },
          "output": {
            "nodeId": "HJwCjcL28",
            "pinKey": "BkQzLCurwJZ"
          }
        },
        "HyHu2cLh8": {
          "id": "HyHu2cLh8",
          "input": {
            "nodeId": "rkV_hc8hU",
            "pinKey": "Hy_D4G0JOX"
          },
          "output": {
            "nodeId": "Bk5TsqI2U",
            "pinKey": "Sk18BWmwX"
          }
        },
        "Hysaj5I3U": {
          "id": "Hysaj5I3U",
          "input": {
            "nodeId": "Bk5TsqI2U",
            "pinKey": "Syb8BW7wm"
          },
          "output": {
            "nodeId": "rJM499I3L",
            "pinKey": "r1ZqKlXPX"
          }
        },
        "SydCj5Ln8": {
          "id": "SydCj5Ln8",
          "input": {
            "nodeId": "HJwCjcL28",
            "pinKey": "B1GfLR_SPk-"
          },
          "output": {
            "nodeId": "Bye0sqL3U",
            "pinKey": "ByfGSDjQE"
          }
        },
        "SyqOhq8hI": {
          "id": "SyqOhq8hI",
          "input": {
            "nodeId": "S1Ddh5L2L",
            "pinKey": "HkXK-dGob"
          },
          "output": {
            "nodeId": "rkV_hc8hU",
            "pinKey": "BkvDEzR1Om"
          }
        }
      },
      "nodes": {
        "Bk5TsqI2U": {
          "id": "Bk5TsqI2U",
          "position": {
            "x": 9,
            "y": 3,
            "units": "slots"
          },
          "type": "xod/datetime/add-seconds"
        },
        "Bye0sqL3U": {
          "size": {
            "height": 1,
            "width": 3,
            "units": "slots"
          },
          "id": "Bye0sqL3U",
          "position": {
            "x": 10,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/debug/tweak-number"
        },
        "HJwCjcL28": {
          "boundLiterals": {
            "SJ4zUC_BD1-": "3600"
          },
          "id": "HJwCjcL28",
          "position": {
            "x": 10,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/core/multiply"
        },
        "S1Ddh5L2L": {
          "size": {
            "height": 1,
            "width": 4,
            "units": "slots"
          },
          "id": "S1Ddh5L2L",
          "position": {
            "x": 9,
            "y": 6,
            "units": "slots"
          },
          "type": "xod/debug/watch"
        },
        "rJM499I3L": {
          "boundLiterals": {
            "r1f2FeXP7": "1",
            "ryjoteXwm": "1970"
          },
          "id": "rJM499I3L",
          "position": {
            "x": 9,
            "y": 0,
            "units": "slots"
          },
          "type": "xod/datetime/datetime"
        },
        "rkV_hc8hU": {
          "id": "rkV_hc8hU",
          "position": {
            "x": 9,
            "y": 4,
            "units": "slots"
          },
          "type": "xod/datetime/format-timestamp"
        }
      },
      "comments": {
        "B1DHY9UnL": {
          "content": "# Custom Types\n\nIn addition to the primitive data types, XOD has more complicated _custom_ types. Custom types can consist of other types or wrap C++ classes.\n\nConsider custom type values like black boxes that can't do anything on their own. An author of the custom type always puts some nodes which operate on such custom type values. Use these to perform actions on custom type value, query the custom type data, or create and update the custom type values.\n\n## Datetime\n\nOn this patch, you see the `datetime` node, which takes few numbers and outputs a value of a custom type `xod/datetime/datetime`.\n\nThis type contains a so-called POSIX timestamp inside. The `xod/datetime` library provides nodes to manipulate the `datetime` and format it to in arbitrary way.\n\n- The `datetime` node is one of the *type constructors*. Note that the minimum value is 1st January of the 1970 year. It's a starting point of the Unix epoch.\n- The `add-seconds` node shifts the date by adding some number of seconds.\n- The `format-timestamp` node outputs the datetime in the default format.\n\nBind the current time and start the simulation.",
          "id": "B1DHY9UnL",
          "position": {
            "x": 0,
            "y": 0,
            "units": "slots"
          },
          "size": {
            "height": 8,
            "width": 7,
            "units": "slots"
          }
        },
        "H1_-AcInI": {
          "content": "## Excercise\n\nFormat the same datetime as \"24.03.2019 9:47 am\".\n\n1. Replace `format-timestamp` with the `unpack-datetime` node.\n2. Place an `am-pm` node and link it with the `HOUR` output.\n3. Place `if-else` node, link it with `AM` output and bind strings: \"am\"  for `T` and \"pm\" for `F`.\n4. Construct a new datetime format using `concat` nodes as it is inside the `format-timestamp` node, including the \"am\"/\"pm\" suffix feature. \n\nRun the simulation and check it out.\n\nAdd or subtract some hours using the `tweak-number` node that is already on the patch, to ensure that \"am\" and \"pm\" suffix works.\n\n---\n\nYou'll discover that XOD uses custom types extensivelly. They encapsulate different hardware devices, interfaces, protocols, and so on.\n\nIf you want to learn how to implement your custom type, read the guide: \"[Defining Custom Types](https://xod.io/docs/guide/custom-types/)\".",
          "id": "H1_-AcInI",
          "position": {
            "x": 17,
            "y": 0,
            "units": "slots"
          },
          "size": {
            "height": 6,
            "width": 7,
            "units": "slots"
          }
        },
        "S1rbyi8h8": {
          "content": "^\nAdd/Subtract hours",
          "id": "S1rbyi8h8",
          "position": {
            "x": 12,
            "y": 2,
            "units": "slots"
          },
          "size": {
            "height": 1,
            "width": 4,
            "units": "slots"
          }
        }
      },
      "path": "@/013-custom-types"
    },
    "@/014-internet-tethering": {
      "links": {
        "Ska3H5DCL": {
          "id": "Ska3H5DCL",
          "input": {
            "nodeId": "H1Bjn28h8",
            "pinKey": "r1lFErc828"
          },
          "output": {
            "nodeId": "HyhhS5wR8",
            "pinKey": "SyveJHHBL"
          }
        },
        "r1Mpo-_TI": {
          "id": "r1Mpo-_TI",
          "input": {
            "nodeId": "SkxnjWOp8",
            "pinKey": "S10qrR6UZ"
          },
          "output": {
            "nodeId": "H1v2hnL3L",
            "pinKey": "BkvDEzR1Om"
          }
        },
        "rJX6sWdpU": {
          "id": "rJX6sWdpU",
          "input": {
            "nodeId": "SkxnjWOp8",
            "pinKey": "rkmiHCaIZ"
          },
          "output": {
            "nodeId": "H1Bjn28h8",
            "pinKey": "Sk0OelypI"
          }
        },
        "ry9nn2Lh8": {
          "id": "ry9nn2Lh8",
          "input": {
            "nodeId": "H1v2hnL3L",
            "pinKey": "Hy_D4G0JOX"
          },
          "output": {
            "nodeId": "H1Bjn28h8",
            "pinKey": "ryFe8qI3U"
          }
        },
        "ryH3oW_68": {
          "id": "ryH3oW_68",
          "input": {
            "nodeId": "B1an3hU3L",
            "pinKey": "HkXK-dGob"
          },
          "output": {
            "nodeId": "SkxnjWOp8",
            "pinKey": "S1yaHC6UW"
          }
        }
      },
      "nodes": {
        "B1an3hU3L": {
          "size": {
            "height": 1,
            "width": 5,
            "units": "slots"
          },
          "id": "B1an3hU3L",
          "position": {
            "x": 10,
            "y": 4,
            "units": "slots"
          },
          "type": "xod/debug/watch"
        },
        "H1Bjn28h8": {
          "boundLiterals": {
            "HyF4Hq828": "On Boot"
          },
          "id": "H1Bjn28h8",
          "position": {
            "x": 10,
            "y": 1,
            "units": "slots"
          },
          "type": "xod-cloud/basics/now"
        },
        "H1v2hnL3L": {
          "id": "H1v2hnL3L",
          "position": {
            "x": 10,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/datetime/format-timestamp"
        },
        "HyhhS5wR8": {
          "id": "HyhhS5wR8",
          "position": {
            "x": 10,
            "y": 0,
            "units": "slots"
          },
          "type": "xod/debug/tethering-inet"
        },
        "SkxnjWOp8": {
          "boundLiterals": {
            "rJUjrCTUb": "On Boot",
            "rygjH06LW": "\"Fetching...\""
          },
          "id": "SkxnjWOp8",
          "position": {
            "x": 10,
            "y": 3,
            "units": "slots"
          },
          "type": "xod/core/select"
        }
      },
      "comments": {
        "HyGHq2IhU": {
          "content": "# Internet Tethering\n\nThere is a large class of applications known as IoT (Internet of Things) when the hardware connects to the Internet to send or receive data from some server. For example, log the temperature and moisture for smart greenhouses, get the current time, weather, send third-party service API request, and so on.\n\nIn this chapter, we are going to fetch the current date/time from the XOD Cloud API.\n\nThe `xod-cloud/basics/now` node sends a request to the XOD Cloud, parses the response, and outputs it as a `datetime` type value.\n\nThis node has an input pin `INET`. This pin has to be connected to an internet provider. The Internet can be provided:\n\n- by the controller board\n  (such as ESP8266)\n- by an extension module\n  (such as W5500 Ethernet Shield)\n- **by your PC**. This trick is known as Internet tethering and works in simulation and debug modes",
          "id": "HyGHq2IhU",
          "position": {
            "x": 1,
            "y": 0,
            "units": "slots"
          },
          "size": {
            "height": 6,
            "width": 7,
            "units": "slots"
          }
        },
        "S1aXcWd6U": {
          "content": "Note, we’ve placed a `select` node here to get a reasonable value until we receive the result from the cloud. Otherwise, we would get a default datetime value, which is equal to `1970-01-01 00:00:00`, and it might be confusing.\n\n## Excercise\nUpdate the current datetime value by sending pulses.\n1. Place a `tweak-pulse` node.\n2. Link it to the `INIT` pin\n3. To make a value in the `watch` node properly, you need to provide the third possible value `\"Waiting pulse\"`. Drag the handle of the `select` node to the right to add one more pair of input pins\n4. Bind `\"Waiting pulse\"` and \"On Boot\" to the latest pair of pins.\n5. Link `tweak-pulse` to the `S2` pin\n6. Simulate the patch and send pulse using the `tweak-pulse` node.",
          "id": "S1aXcWd6U",
          "position": {
            "x": 16,
            "y": 1,
            "units": "slots"
          },
          "size": {
            "height": 5,
            "width": 7,
            "units": "slots"
          }
        }
      },
      "path": "@/014-internet-tethering"
    },
    "@/015-xod-cloud-feeds": {
      "links": {
        "BJQitEpnI": {
          "id": "BJQitEpnI",
          "input": {
            "nodeId": "HyMoFEThU",
            "pinKey": "BkjI-COLb"
          },
          "output": {
            "nodeId": "Hyg5KV63I",
            "pinKey": "ByfGSDjQE"
          }
        },
        "BkB0-mRnL": {
          "id": "BkB0-mRnL",
          "input": {
            "nodeId": "SyDrb703I",
            "pinKey": "r1m2IKiY5r"
          },
          "output": {
            "nodeId": "HyMoFEThU",
            "pinKey": "ByAIWR_UZ"
          }
        },
        "HJ5BWXA2I": {
          "id": "HJ5BWXA2I",
          "input": {
            "nodeId": "SyDrb703I",
            "pinKey": "rJfEHhF5r"
          },
          "output": {
            "nodeId": "Hyg5KV63I",
            "pinKey": "ByfGSDjQE"
          }
        },
        "SkKr-7ChI": {
          "id": "SkKr-7ChI",
          "input": {
            "nodeId": "SyDrb703I",
            "pinKey": "rJgh8tjF9r"
          },
          "output": {
            "nodeId": "ryCXuTIn8",
            "pinKey": "SyveJHHBL"
          }
        }
      },
      "nodes": {
        "HyMoFEThU": {
          "id": "HyMoFEThU",
          "position": {
            "x": 12,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/core/pulse-on-change"
        },
        "Hyg5KV63I": {
          "boundLiterals": {
            "ByfGSDjQE": "1"
          },
          "size": {
            "height": 1,
            "width": 2,
            "units": "slots"
          },
          "id": "Hyg5KV63I",
          "position": {
            "x": 11,
            "y": 0,
            "units": "slots"
          },
          "type": "xod/debug/tweak-number"
        },
        "SyDrb703I": {
          "boundLiterals": {
            "ryZ28tst5B": "\"moisture\""
          },
          "id": "SyDrb703I",
          "position": {
            "x": 9,
            "y": 2,
            "units": "slots"
          },
          "type": "xod-cloud/feeds/cloud-store"
        },
        "ryCXuTIn8": {
          "id": "ryCXuTIn8",
          "position": {
            "x": 9,
            "y": 0,
            "units": "slots"
          },
          "type": "xod/debug/tethering-inet"
        }
      },
      "comments": {
        "S1Xo6Npn8": {
          "content": "Now we’re going to store data in the cloud. In one of the next sections of the tutorial, we’ll retrieve the data and react to it.\n\nYou can see a `cloud-store` node here. This node stores data to your private feed. The feed is log-like storage of your data. The name of the feed is a path, like a path in URL or your filesystem. For example, `bob/smart-home-project/room1/temperature`.\nThe `cloud-store` node prepends the username and project name automatically to the path. That's why we bound the `\"moisture\"` value to the `FEED` input instead of a full path.\n\nThe program is ready, but to make it work, you have to do a few things related to authorization.\n\n## Excercise\n\n1. Log in into your XOD account in the Account Pane (hit View → Toggle Account Pane).\n2. Open Project Preferences (hit Edit → Project Preferences). Ensure that the project has a name and click the \"Generate\" button next to the \"XOD Cloud API Key\" input.\n3. Run a simulation and change the value of a `tweak-number` node several times.\n4. Open the [feeds](https://xod.io/feeds/?utm_source=ide&utm_medium=ide_comment&utm_campaign=tutorial) page and check out the data stored in the feed named `YOUR_USERNAME/welcome-to-xod/moisture`.",
          "id": "S1Xo6Npn8",
          "position": {
            "x": 14,
            "y": 0,
            "units": "slots"
          },
          "size": {
            "height": 7,
            "width": 7,
            "units": "slots"
          }
        },
        "SJ9QOpLnU": {
          "content": "# XOD Cloud Feeds\n\nThe basic Internet-of-Things applications is mostly about collecting some data and storing it in the cloud, or reacting to the data changes.\n\nIt can improve a production process on factories, lower the defect rate, and so on. Also, it integrates into a life of ordinary people: smart fridges, homes, greenhouses, wearable electronics, etc.\n\nSome systems have their servers to collect the data. Still, for the individuals, maintaining such infrastructure is too complicated and expensive. Here comes the [XOD Cloud](https://xod.io/docs/guide/getting-started-with-feeds/?utm_source=ide&utm_medium=ide_comment&utm_campaign=tutorial) service. Using it you can store and retrieve any data.\n\nXOD provides the standard library called `xod-cloud/feeds` to work with cloud feeds easily. It has nodes to store and retrieve data.\n\nYou can see all your stored data at [https://xod.io/feeds/](https://xod.io/feeds/?utm_source=ide&utm_medium=ide_comment&utm_campaign=tutorial)",
          "id": "SJ9QOpLnU",
          "position": {
            "x": 1,
            "y": 0,
            "units": "slots"
          },
          "size": {
            "height": 5,
            "width": 7,
            "units": "slots"
          }
        }
      },
      "path": "@/015-xod-cloud-feeds"
    },
    "@/100-hardware": {
      "comments": {
        "S1x6FBAP4": {
          "content": "# Working with Hardware\n\nIn this part of the tutorial, you will learn how to upload programs to your Arduino (or compatible) controller board and work with hardware modules.\n\nTo upload programs to Arduino, you need to [install the desktop version](https://xod.io/downloads/?utm_source=ide&utm_medium=ide_comment&utm_campaign=tutorial) of XOD. The browser version does not have enough permissions to access USB ports. Nevertheless, you can upload XOD programs even from the browser version if you have the original Arduino IDE installed by copying and pasting the generated code.\n\nIf you have no hardware on hand, don’t give up. Skip to the `200-patterns` part and go on replacing hardware nodes with `watch`es and `tweak`s.",
          "id": "S1x6FBAP4",
          "position": {
            "x": 0,
            "y": 0,
            "units": "slots"
          },
          "size": {
            "height": 4,
            "width": 7,
            "units": "slots"
          }
        }
      },
      "path": "@/100-hardware"
    },
    "@/101-upload": {
      "links": {
        "B16rcECPN": {
          "id": "B16rcECPN",
          "input": {
            "nodeId": "H1iH5ERv4",
            "pinKey": "ryTIROHwkW"
          },
          "output": {
            "nodeId": "B1dBcNADN",
            "pinKey": "HJU8CE2lW"
          }
        },
        "BkgLcN0vV": {
          "id": "BkgLcN0vV",
          "input": {
            "nodeId": "HJyLcNCvV",
            "pinKey": "HyYh1a3LZ"
          },
          "output": {
            "nodeId": "H1iH5ERv4",
            "pinKey": "HkyxURuSPyW"
          }
        }
      },
      "nodes": {
        "B1dBcNADN": {
          "id": "B1dBcNADN",
          "position": {
            "x": 8,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/core/clock"
        },
        "H1iH5ERv4": {
          "id": "H1iH5ERv4",
          "position": {
            "x": 7,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/core/flip-flop"
        },
        "HJyLcNCvV": {
          "boundLiterals": {
            "B1oqkTnIb": "D13"
          },
          "id": "HJyLcNCvV",
          "position": {
            "x": 6,
            "y": 3,
            "units": "slots"
          },
          "type": "xod/common-hardware/led"
        }
      },
      "comments": {
        "SkxcsVCvV": {
          "content": "# Uploading Programs\n\nTo make a program work XOD converts it to C++ code, then compiles it to a binary firmware compatible with the board of choice, then pushes the binary to the board itself.\n\nThe process is automated and runs behind the scenes once you hit “Upload”. However, many tools are involved and the initial XOD IDE installation can lack some of them. When you upload to a new kind of a board for the first time, a message will appear asking to Download & Install required tools. Confirm to setup them automatically. Keep in mind, it can consume 200 MB or so of Internet traffic and take up a few minutes.\n\n## Exercise\n\nLet's upload this patch to the Arduino board to see the built-in LED blinking.\n\n1. Connect the Arduino board to your computer with a USB cable.\n2. Upload the program. To do this, hit Deploy → Upload to Arduino from the main menu.\n3. If some tools are missing, confirm the installation by clicking Download & Install in the message appeared.\n\nSee the on-board LED usually marked with the `L` letter blinking.\n\nChange the `IVAL` value on the `clock` node and upload the program again. See how the blinking frequency of the LED changes.",
          "id": "SkxcsVCvV",
          "position": {
            "x": -2,
            "y": 0,
            "units": "slots"
          },
          "size": {
            "height": 7,
            "width": 7,
            "units": "slots"
          }
        },
        "rysUAJz5N": {
          "content": "## 👆 Shortcut\n\nYou can click the button with a lightning icon in the deployment pane at the bottom of the screen instead of using the main menu.",
          "id": "rysUAJz5N",
          "position": {
            "x": 6,
            "y": 4,
            "units": "slots"
          },
          "size": {
            "height": 2,
            "width": 6,
            "units": "slots"
          }
        }
      },
      "path": "@/101-upload"
    },
    "@/102-interactive": {
      "links": {
        "rkLIoHAPE": {
          "id": "rkLIoHAPE",
          "input": {
            "nodeId": "r1ZP7AE0DN",
            "pinKey": "HyYh1a3LZ"
          },
          "output": {
            "nodeId": "SJ78sSRPV",
            "pinKey": "Sk1e_NIVE"
          }
        }
      },
      "nodes": {
        "SJ78sSRPV": {
          "id": "SJ78sSRPV",
          "position": {
            "x": 9,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/debug/tweak-boolean"
        },
        "r1ZP7AE0DN": {
          "boundLiterals": {
            "B1oqkTnIb": "D13"
          },
          "id": "r1ZP7AE0DN",
          "position": {
            "x": 8,
            "y": 3,
            "units": "slots"
          },
          "type": "xod/common-hardware/led"
        }
      },
      "comments": {
        "Bk5hgeM54": {
          "content": "## Debug protocol\n\nDuring interactive sessions XOD IDE and the board keep connection open and exchange with messages about value changes. These message are simple plain-text lines and you can see them in the Serial tab of the Deployment pane.\n\nClick the funnel icon and make sure “Watched Values” is checked. To echo the messages to the log.",
          "id": "Bk5hgeM54",
          "position": {
            "x": 8,
            "y": 5,
            "units": "slots"
          },
          "size": {
            "height": 3,
            "width": 6,
            "units": "slots"
          }
        },
        "H1kTkgf9N": {
          "content": "## 👆 Shortcut\n\nClick the button with a bug icon in the deployment pane below. To quickly access the upload dialog with “Debug after upload” checked.",
          "id": "H1kTkgf9N",
          "position": {
            "x": 0,
            "y": 5,
            "units": "slots"
          },
          "size": {
            "height": 2,
            "width": 6,
            "units": "slots"
          }
        },
        "Syx5p6EAv4": {
          "content": "# Interactive Session\n\nAs you run the simulation, you can run an *interactive session* on the board also known as debugger. Tweaks and watches go live while running the program on physical hardware.\n\n## Exercise\n\nLet’s control our LED in real time.\n\n1. Connect the Arduino board to your computer.\n\n2. Upload the program with the interactive session enabled: hit Deploy → Upload to Arduino and check \"Debug after upload\".\n\n3. Once the interactive session has been started, select `tweak-boolean` and change its value; see how the built-in LED on the board reacts to these changes.\n\nTo stop the interactive session press \"Stop\" button on the green panel above. To start the interactive session again, you have to re-upload the program.",
          "id": "Syx5p6EAv4",
          "position": {
            "x": 0,
            "y": 0,
            "units": "slots"
          },
          "size": {
            "height": 5,
            "width": 7,
            "units": "slots"
          }
        }
      },
      "path": "@/102-interactive"
    },
    "@/103-led": {
      "links": {
        "BybD5nH0wN": {
          "id": "BybD5nH0wN",
          "input": {
            "nodeId": "Byw5hBADE",
            "pinKey": "HyYh1a3LZ"
          },
          "output": {
            "nodeId": "B1xDqnBCvV",
            "pinKey": "Sk1e_NIVE"
          }
        }
      },
      "nodes": {
        "B1xDqnBCvV": {
          "id": "B1xDqnBCvV",
          "position": {
            "x": 9,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/debug/tweak-boolean"
        },
        "Byw5hBADE": {
          "boundLiterals": {
            "B1oqkTnIb": "D13"
          },
          "id": "Byw5hBADE",
          "position": {
            "x": 8,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/common-hardware/led"
        }
      },
      "comments": {
        "BJfDq3B0DE": {
          "content": "# LED Node\n\nYou already made a blinking LED and controlled it in the interactive session. But you have only feed it with the values of true and false. The false value auto-converts to 0 and represents no glow at all, whereas the true value converts to 1 and denotes the full brightness.\n\nYou can also set an intermediate brightness level by setting values *between* 0 and 1.\n\n## Exercise\n\nLet’s fine-tune LED brightness.\n\n1. Assemble a circuit according to the [scheme](https://xod.io/docs/tutorial/103-led/?utm_source=ide&utm_medium=ide_comment&utm_campaign=tutorial#circuit), and connect the board to your computer.\n\n2. Set the value of the `PORT` pin to `D11`. Leading \"D\" means that it's a digital port.\n\n3. Replace the `tweak-boolean` node with `tweak-number`.\n\n4. Upload the program with the interactive session enabled.\n\n5. Change the value of `tweak-number` in the range from 0 to 1 and see how the brightness of the LED changes.",
          "id": "BJfDq3B0DE",
          "position": {
            "x": 0,
            "y": 0,
            "units": "slots"
          },
          "size": {
            "height": 6,
            "width": 7,
            "units": "slots"
          }
        },
        "rkpiXeMqE": {
          "content": "## 👆 PWM feature\n\nAn LED can change the brightness only if connected to a board pin which supports PWM. If you have an Arduino board, find out the port number with the leading \"~\" symbol.\n\nMany board models have no PWM on D13, so we wire the LED to another pin.",
          "id": "rkpiXeMqE",
          "position": {
            "x": 8,
            "y": 4,
            "units": "slots"
          },
          "size": {
            "height": 2,
            "width": 7,
            "units": "slots"
          }
        }
      },
      "path": "@/103-led"
    },
    "@/104-button": {
      "links": {
        "SJTd6_J_N": {
          "id": "SJTd6_J_N",
          "input": {
            "nodeId": "Hyn_aukuV",
            "pinKey": "HkXK-dGob"
          },
          "output": {
            "nodeId": "ryITdiRwN",
            "pinKey": "BJ--G1tI-"
          }
        }
      },
      "nodes": {
        "Hyn_aukuV": {
          "id": "Hyn_aukuV",
          "position": {
            "x": 8,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/debug/watch"
        },
        "S1Sbc50w4": {
          "boundLiterals": {
            "B1oqkTnIb": "D11"
          },
          "id": "S1Sbc50w4",
          "position": {
            "x": 8,
            "y": 3,
            "units": "slots"
          },
          "type": "xod/common-hardware/led"
        },
        "ryITdiRwN": {
          "id": "ryITdiRwN",
          "position": {
            "x": 8,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/common-hardware/button"
        }
      },
      "comments": {
        "HJzSJTKCwV": {
          "content": "# Buttons\n\nHere is a `button` node from `xod/common-hardware`.\n\nTake a look at button outputs. It has a `PRS` pin, which is true whenever it is pressed. And `DONE` pin, which pulses when reading is done, wherever the button is pressed or not.\n\nThis is a standard idiom for side-effect nodes representing hardware or, for example, the Internet.\n\n## Exercise\n\nLet's make the LED glow while the button is pressed.\n\n1. Assemble the [circuit with a button and LED](https://xod.io/docs/tutorial/104-button/?utm_source=ide&utm_medium=ide_comment&utm_campaign=tutorial#circuit).\n2. Set the `PORT` value of the `button` node to `D13` because it’s connected to the board's digital port 13.\n3. Link `PRS` to `LUM`.\n4. Upload your patch.\n\nHold the button to turn the LED on.",
          "id": "HJzSJTKCwV",
          "position": {
            "x": 0,
            "y": 0,
            "units": "slots"
          },
          "size": {
            "height": 6,
            "width": 7,
            "units": "slots"
          }
        },
        "r1Ha3O1ON": {
          "content": "## Additional exercise\n\nPlace the already familiar node `flip-flop` between `button` and `led` to switch the LED on or off on each press.",
          "id": "r1Ha3O1ON",
          "position": {
            "x": 13,
            "y": 4,
            "units": "slots"
          },
          "size": {
            "height": 2,
            "width": 5,
            "units": "slots"
          }
        }
      },
      "path": "@/104-button"
    },
    "@/105-pot": {
      "links": {
        "SJXRYJZOV": {
          "id": "SJXRYJZOV",
          "input": {
            "nodeId": "HkETeKkO4",
            "pinKey": "HkXK-dGob"
          },
          "output": {
            "nodeId": "SyZzltkdE",
            "pinKey": "H1sM2A12-"
          }
        }
      },
      "nodes": {
        "HJBU6_1uV": {
          "boundLiterals": {
            "B1oqkTnIb": "D11"
          },
          "id": "HJBU6_1uV",
          "position": {
            "x": 8,
            "y": 3,
            "units": "slots"
          },
          "type": "xod/common-hardware/led"
        },
        "HkETeKkO4": {
          "id": "HkETeKkO4",
          "position": {
            "x": 8,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/debug/watch"
        },
        "SyZzltkdE": {
          "boundLiterals": {
            "Hkry2AJhW": "A9"
          },
          "id": "SyZzltkdE",
          "position": {
            "x": 8,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/common-hardware/pot"
        }
      },
      "comments": {
        "ryWrUpd1uN": {
          "content": "# Potentiometer\n\nThe potentiometer reads an analog value from the hardware port and outputs a normalized result in the range from `0.0` to `1.0`, depending on the angle of the knob.\n\nIt brings an easy solution to control LEDs, servos, and system coefficients.\n\n## Exercise\n\nLet's control the brightness of the LED with a potentiometer.\n\n1. Connect a potentiometer to the Arduino  board according to the [scheme](https://xod.io/docs/tutorial/105-pot/?utm_source=ide&utm_medium=ide_comment&utm_campaign=tutorial#circuit).\n\n2. Set the `PORT` pin value on the `pot` node to `A0` because it’s connected to the analog board port A0.\n\n3. Link the `pot` node `VAL` pin to the `LUM` pin on the `led` node.\n\n4. Upload your patch.\n\nRotate the knob and see how the LED reacts to it. Cool, eh?",
          "id": "ryWrUpd1uN",
          "position": {
            "x": 0,
            "y": 0,
            "units": "slots"
          },
          "size": {
            "height": 5,
            "width": 7,
            "units": "slots"
          }
        }
      },
      "path": "@/105-pot"
    },
    "@/106-servo": {
      "links": {
        "BkfaMKVZOE": {
          "id": "BkfaMKVZOE",
          "input": {
            "nodeId": "HybpMFEWuE",
            "pinKey": "HkXK-dGob"
          },
          "output": {
            "nodeId": "Ske6MK4-uV",
            "pinKey": "H1sM2A12-"
          }
        },
        "r1X5wxMqN": {
          "id": "r1X5wxMqN",
          "input": {
            "nodeId": "SyN7WQRKV",
            "pinKey": "Bk5lexBtE"
          },
          "output": {
            "nodeId": "r1b5Dlz5E",
            "pinKey": "ByfGSDjQE"
          }
        }
      },
      "nodes": {
        "HybpMFEWuE": {
          "id": "HybpMFEWuE",
          "position": {
            "x": 8,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/debug/watch"
        },
        "Ske6MK4-uV": {
          "id": "Ske6MK4-uV",
          "position": {
            "x": 8,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/common-hardware/pot"
        },
        "SyN7WQRKV": {
          "boundLiterals": {
            "BkXK1eBYV": "D9"
          },
          "id": "SyN7WQRKV",
          "position": {
            "x": 8,
            "y": 4,
            "units": "slots"
          },
          "type": "xod-dev/servo/servo"
        },
        "r1b5Dlz5E": {
          "boundLiterals": {
            "ByfGSDjQE": "0.5"
          },
          "id": "r1b5Dlz5E",
          "position": {
            "x": 9,
            "y": 3,
            "units": "slots"
          },
          "type": "xod/debug/tweak-number"
        }
      },
      "comments": {
        "BJcJOxG5E": {
          "content": "## 👆 Motors are power hogs\n\nIf you wiggle the potentiometer fast enough you can encounter board reboots. It is because motors consume a lot of power when accelerate and if powered from the same power line as the microcontroller, the latter is left with no power at all.\n\nTo fight the effect in hardware, decouple digital parts of the circuit with capacitors and DC/DC converters. Use efficient power supplies along with (or instead of) your PC USB.\n\nTo deal with it in software, start and stop motors slowly. `206-fade` gives one possible way to acheive it.",
          "id": "BJcJOxG5E",
          "position": {
            "x": 13,
            "y": 1,
            "units": "slots"
          },
          "size": {
            "height": 4,
            "width": 6,
            "units": "slots"
          }
        },
        "HymTfYNZ_N": {
          "content": "# Servo\n\nControlling servos in XOD is just as easy as controlling LEDs. There is a node called `servo`. Find it in `xod-dev/servo`.\n\nThe `servo` node accepts a number in the range from 0.0 to 1.0 and maps it to the rated arm rotation limits of the servo motor.\n\n## Exercise\n\nLet's link `pot` with `servo` to control the servo angle with the potentiometer.\n\n1. Connect a servo to the Arduino board as shown on the [scheme](https://xod.io/docs/tutorial/106-servo/?utm_source=ide&utm_medium=ide_comment&utm_campaign=tutorial#circuit).\n\n2. Link the `VAL` pin of the `pot` node to the `VAL` pin of the `servo` node.\n\n3. Upload the patch to the board.\n\nTurn the potentiometer knob, and watch the servo turns.\n",
          "id": "HymTfYNZ_N",
          "position": {
            "x": 0,
            "y": 0,
            "units": "slots"
          },
          "size": {
            "height": 5,
            "width": 7,
            "units": "slots"
          }
        }
      },
      "path": "@/106-servo"
    },
    "@/107-manipulator": {
      "links": {
        "HkvZIeXCKV": {
          "id": "HkvZIeXCKV",
          "input": {
            "nodeId": "B17bLx70Y4",
            "pinKey": "r11svP4H4"
          },
          "output": {
            "nodeId": "ByM-LgQ0FV",
            "pinKey": "ryCUDDES4"
          }
        },
        "S15ZIemRtV": {
          "id": "S15ZIemRtV",
          "input": {
            "nodeId": "ByM-LgQ0FV",
            "pinKey": "r11svP4H4"
          },
          "output": {
            "nodeId": "B1Z8gQAYE",
            "pinKey": "BJ--G1tI-"
          }
        },
        "SJIZ8lmRYN": {
          "id": "SJIZ8lmRYN",
          "input": {
            "nodeId": "B17bLx70Y4",
            "pinKey": "SkC4wvEr4"
          },
          "output": {
            "nodeId": "ByM-LgQ0FV",
            "pinKey": "HJuBDDNSV"
          }
        },
        "rJBIxQRKE": {
          "id": "rJBIxQRKE",
          "input": {
            "nodeId": "ByM-LgQ0FV",
            "pinKey": "SkC4wvEr4"
          },
          "output": {
            "nodeId": "SJ7d0fRFV",
            "pinKey": "HJmZvD4SE"
          }
        },
        "rJR-UlX0K4": {
          "id": "rJR-UlX0K4",
          "input": {
            "nodeId": "B17bLx70Y4",
            "pinKey": "Sykbxl5Y4"
          },
          "output": {
            "nodeId": "ByM-LgQ0FV",
            "pinKey": "HJIWegcFE"
          }
        }
      },
      "nodes": {
        "B17bLx70Y4": {
          "boundLiterals": {
            "HkvdPw4S4": "0",
            "S1n9Yv4r4": "0.6"
          },
          "id": "B17bLx70Y4",
          "position": {
            "x": 10,
            "y": 3,
            "units": "slots"
          },
          "type": "xod-dev/servo/rotate-slow"
        },
        "B1Z8gQAYE": {
          "boundLiterals": {
            "ByNiWkt8Z": "D13"
          },
          "id": "B1Z8gQAYE",
          "position": {
            "x": 14,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/common-hardware/button"
        },
        "ByM-LgQ0FV": {
          "boundLiterals": {
            "HkvdPw4S4": "1",
            "S1n9Yv4r4": "0.3",
            "r11svP4H4": "On Boot"
          },
          "id": "ByM-LgQ0FV",
          "position": {
            "x": 10,
            "y": 2,
            "units": "slots"
          },
          "type": "xod-dev/servo/rotate-slow"
        },
        "SJ7d0fRFV": {
          "boundLiterals": {
            "HyNOLPVB4": "D9"
          },
          "id": "SJ7d0fRFV",
          "position": {
            "x": 10,
            "y": 1,
            "units": "slots"
          },
          "type": "xod-dev/servo/servo-device"
        }
      },
      "comments": {
        "Hk40r24-_N": {
          "content": "# Manipulator\n\nControlling the servo with a potentiometer or another analog sensor is easy. However, what if we want to make some complex movements with servos?\n\nOn the patch board, you see `servo-device`. This node defines a servo for the further usage: the port, minimum, and maximum pulse widths which correspond to the operating limits of the servo.\n\nThe `servo-device` node links to nodes that work with servos: `rotate-slow` in this example. The `rotate-slow` node rotates the servo to the angle specified in `VAL` with the `RATE` speed when a `DO` pulse is received. You may chain these nodes to make a sequential movement.\n\nYou may notice that `rotate-slow` have `MUX` pins. It's another custom type called `mutex` that allows only one node to act at the same time.\n\nThis program rotates the servo to the maximum angle slowly and then turn it back twice as fast on a button press. The button is ignored until rotation completes.\n\nUpload the program and check it out.\n\n## Exercise\n\nLet's change the servo trajectory.\n\n1. Add two more `rotate-slow` nodes.\n2. Link all nodes in the same way.\n3. Adjust pin values of `rotate-slow`.\n4. Upload the program.\n\nPress the button and see how the servo fulfills your order.",
          "id": "Hk40r24-_N",
          "position": {
            "x": 0,
            "y": 0,
            "units": "slots"
          },
          "size": {
            "height": 8,
            "width": 8,
            "units": "slots"
          }
        },
        "SyhsB70YV": {
          "content": "## 👆 Simple nodes vs device nodes\n\nThe `xod-dev/servo` library also contains a `rotate` node. The main difference between it and `rotate-slow` that it rotates the servo immediately ignoring `MUX`.\n\nAnd if you wonder how the simple `servo` node used in the previous chapter works: under the hood, it is a trivial composition of `servo-device` and `rotate` with a few terminals exposed to you. Simple nodes (also known as quickstart nodes) are enough for basic applications and when you need more, you use raw device nodes along with action nodes like you do in this chapter.\n\nThis idiom is applicable to other hardware as well.",
          "id": "SyhsB70YV",
          "position": {
            "x": 17,
            "y": 3,
            "units": "slots"
          },
          "size": {
            "height": 4,
            "width": 7,
            "units": "slots"
          }
        }
      },
      "path": "@/107-manipulator"
    },
    "@/108-text-lcd": {
      "nodes": {
        "HkL8cbZFV": {
          "id": "HkL8cbZFV",
          "position": {
            "x": 15,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/debug/tweak-string-16"
        },
        "r12fwKgQr": {
          "boundLiterals": {
            "BJ3DAE1QS": "\"Hello\"",
            "rJgnw0417B": "\"World\""
          },
          "id": "r12fwKgQr",
          "position": {
            "x": 8,
            "y": 4,
            "units": "slots"
          },
          "type": "xod-dev/text-lcd/text-lcd-i2c-16x2"
        },
        "r1G7wFeXB": {
          "boundLiterals": {
            "BJxIhfrk7B": "D6",
            "HJInzryQr": "\"Hello\"",
            "HJbIhGB1XB": "\"World\"",
            "SkzI2fBkmH": "D4",
            "r1QLnzH1mr": "D5",
            "rk8I2fHkXH": "D3",
            "rkVLnGSJQS": "D7",
            "ryHL2GHyQS": "D8"
          },
          "id": "r1G7wFeXB",
          "position": {
            "x": 8,
            "y": 3,
            "units": "slots"
          },
          "type": "xod-dev/text-lcd/text-lcd-parallel-16x2"
        }
      },
      "comments": {
        "By72G_HbdN": {
          "content": "# Display Text on LCD\n\nThere are many variants of liquid crystal displays (LCD). Among them, text displays are simplest to communicate with. A text LCD can expose either of physical interfaces:\n\n- I2C\n- Parallel\n\nXOD supports both.\n\n## Exercise\n\nLet’s show some text on an LCD.\n\n1. Examine your LCD and decide which node fits it. Remove another one.\n2. Assemble the [circuit](https://xod.io/docs/tutorial/108-text-lcd/?utm_source=ide&utm_medium=ide_comment&utm_campaign=tutorial#circuit) that matches your LCD model.\n3. Bind pins or set the I2C address.\n4. Bind \"Wuzzup!\" to the `L1` pin.\n5. Link `tweak-string` with `L2`.\n6. Upload the patch with the interactive session enabled.\n7. Select `tweak-string`.\n8. Type some text and press the Enter key.",
          "id": "By72G_HbdN",
          "position": {
            "x": 0,
            "y": 0,
            "units": "slots"
          },
          "size": {
            "height": 6,
            "width": 7,
            "units": "slots"
          }
        },
        "H1UzTgf9N": {
          "content": "## 👆 Too many variations\n\nThe world of text LCDs is too wide to guess your LCD pinout and parameters. The provided circuit will work for some models, but not for others. Refer to your particular display documentation to precisely determine its address, data pinout, contrast pin wiring, digital and backlight powering scheme.\n\nFor the rest of the tutorial we assume you have an I²C LCD listening on 27h address. Adjust patches accordingly if you’ve got another model.",
          "id": "H1UzTgf9N",
          "position": {
            "x": 18,
            "y": 2,
            "units": "slots"
          },
          "size": {
            "height": 3,
            "width": 7,
            "units": "slots"
          }
        }
      },
      "path": "@/108-text-lcd"
    },
    "@/109-thermometer": {
      "links": {
        "SyZtEYkOE": {
          "id": "SyZtEYkOE",
          "input": {
            "nodeId": "SJOT7K1dE",
            "pinKey": "HkXK-dGob"
          },
          "output": {
            "nodeId": "SJm37Fkd4",
            "pinKey": "rkFgMITM-"
          }
        }
      },
      "nodes": {
        "SJOT7K1dE": {
          "id": "SJOT7K1dE",
          "position": {
            "x": 8,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/debug/watch"
        },
        "SJm37Fkd4": {
          "boundLiterals": {
            "H1s0WI6MZ": "A1"
          },
          "id": "SJm37Fkd4",
          "position": {
            "x": 8,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/common-hardware/thermometer-tmp36"
        },
        "Sk_FPKxQr": {
          "id": "Sk_FPKxQr",
          "position": {
            "x": 8,
            "y": 4,
            "units": "slots"
          },
          "type": "xod-dev/text-lcd/text-lcd-i2c-16x2"
        }
      },
      "comments": {
        "BykL9xbYV": {
          "content": "## 👆 Output formatting\n\nYou can convert Celsius to Fahrenheit using `xod/units/c-to-f` node.\n\nMoreover, you can add a `concat` node and show the temperature on the display like \"22C\" instead of a plain number. See `210-string-formatting` for more details.",
          "id": "BykL9xbYV",
          "position": {
            "x": 14,
            "y": 1,
            "units": "slots"
          },
          "size": {
            "height": 3,
            "width": 6,
            "units": "slots"
          }
        },
        "ryQEf7FyO4": {
          "content": "# Thermometer\n\nWhat if you need to control the ambient air temperature?\n\nA popular chip to measure temperature is TMP36 thermometer. XOD has a node `thermometer-tmp36` for this IC in `xod/common-hardware`. It outputs the temperature in degrees Celsius.\n\n## Exercise\n\nShowing static text on the LCD is boring. So let's make a smarter device and show the temperature on the LCD.\n\n1. Add a thermometer to your [circuit as shown](https://xod.io/docs/tutorial/109-thermometer/?utm_source=ide&utm_medium=ide_comment&utm_campaign=tutorial#circuit).\n\n2. Ensure the correct `PORT` for the `thermometer-tmp36` node.\n\n3. Link `Tc` of `thermometer-tmp36` with `L1` of `text-lcd-i2c-16x2`.\n\n4. Upload your patch.\n\nNow you have a portable thermometer.",
          "id": "ryQEf7FyO4",
          "position": {
            "x": 0,
            "y": 0,
            "units": "slots"
          },
          "size": {
            "height": 5,
            "width": 7,
            "units": "slots"
          }
        }
      },
      "path": "@/109-thermometer"
    },
    "@/110-ldr": {
      "links": {
        "S19OIF1dV": {
          "id": "S19OIF1dV",
          "input": {
            "nodeId": "S1v_8tJ_N",
            "pinKey": "HkXK-dGob"
          },
          "output": {
            "nodeId": "SkSOIt1ON",
            "pinKey": "BkoeN9Ay7"
          }
        }
      },
      "nodes": {
        "S1v_8tJ_N": {
          "id": "S1v_8tJ_N",
          "position": {
            "x": 8,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/debug/watch"
        },
        "SkSOIt1ON": {
          "boundLiterals": {
            "r1l3XcR17": "A2"
          },
          "id": "SkSOIt1ON",
          "position": {
            "x": 8,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/common-hardware/analog-sensor"
        },
        "rJJbwKy_E": {
          "boundLiterals": {
            "B1oqkTnIb": "D11"
          },
          "id": "rJJbwKy_E",
          "position": {
            "x": 8,
            "y": 4,
            "units": "slots"
          },
          "type": "xod/common-hardware/led"
        }
      },
      "comments": {
        "S1GHxUKyON": {
          "content": "# Ambient Light Sensor\n\nLet’s introduce a new sensor to measure the ambient light level. A photoresistor (aka light dependent resistor or LDR) will do a great job of measuring the parameter. However, there is a small problem: we do not have a photoresistor node in XOD.\n\nWe have basic nodes for working with digital and analog ports though. The photoresistor is a pretty primitive device, and all we need to do is read its value from the analog port. To do so, use an `analog-sensor` node.\n\n## Exercise\n\nLet’s make a smart (or dumb) light bulb.\n\n1. Assemble the [circuit with an LDR and LED](https://xod.io/docs/tutorial/110-ldr/?utm_source=ide&utm_medium=ide_comment&utm_campaign=tutorial#circuit).\n\n2. Link the `VAL` output pin of the `analog-sensor` node to the `LUM` pin of the `led` node.\n\n3. Upload the patch to the board.\n\nCover the photoresistor with your hand and watch how the brightness of the LED changes.",
          "id": "S1GHxUKyON",
          "position": {
            "x": 0,
            "y": 0,
            "units": "slots"
          },
          "size": {
            "height": 6,
            "width": 7,
            "units": "slots"
          }
        }
      },
      "path": "@/110-ldr"
    },
    "@/111-feed-messaging": {
      "links": {
        "B1BWr57RhU": {
          "id": "B1BWr57RhU",
          "input": {
            "nodeId": "BkM-rq702I",
            "pinKey": "rJfEHhF5r"
          },
          "output": {
            "nodeId": "SJxbH97AnL",
            "pinKey": "ByfGSDjQE"
          }
        },
        "ByG9CqwRU": {
          "id": "ByG9CqwRU",
          "input": {
            "nodeId": "Hk_Aq9DAU",
            "pinKey": "r1bBAVNAh8"
          },
          "output": {
            "nodeId": "S1dnUITnL",
            "pinKey": "SyveJHHBL"
          }
        },
        "ByXbH5XR38": {
          "id": "ByXbH5XR38",
          "input": {
            "nodeId": "BkWS5mCn8",
            "pinKey": "BkjI-COLb"
          },
          "output": {
            "nodeId": "SJxbH97AnL",
            "pinKey": "ByfGSDjQE"
          }
        },
        "S1I-r5X0h8": {
          "id": "S1I-r5X0h8",
          "input": {
            "nodeId": "BkM-rq702I",
            "pinKey": "r1m2IKiY5r"
          },
          "output": {
            "nodeId": "BkWS5mCn8",
            "pinKey": "ByAIWR_UZ"
          }
        },
        "S1_oC9PCI": {
          "id": "S1_oC9PCI",
          "input": {
            "nodeId": "Hk_Aq9DAU",
            "pinKey": "S1rCENRnL"
          },
          "output": {
            "nodeId": "rJPiAqPCI",
            "pinKey": "ByHmL0uHPk-"
          }
        },
        "SJtiRqwRL": {
          "id": "SJtiRqwRL",
          "input": {
            "nodeId": "rJPiAqPCI",
            "pinKey": "ryv7IRdSP1b"
          },
          "output": {
            "nodeId": "S1co57ChU",
            "pinKey": "HJU8CE2lW"
          }
        },
        "SkCt05wRL": {
          "id": "SkCt05wRL",
          "input": {
            "nodeId": "SySEqQA28",
            "pinKey": "Bk5lexBtE"
          },
          "output": {
            "nodeId": "Hk_Aq9DAU",
            "pinKey": "BJHJB4R2U"
          }
        },
        "rJ4ZS57RhU": {
          "id": "rJ4ZS57RhU",
          "input": {
            "nodeId": "BkM-rq702I",
            "pinKey": "rJgh8tjF9r"
          },
          "output": {
            "nodeId": "Hy-WB9Q038",
            "pinKey": "SyveJHHBL"
          }
        }
      },
      "nodes": {
        "BkM-rq702I": {
          "boundLiterals": {
            "ryZ28tst5B": "\"moisture\""
          },
          "id": "BkM-rq702I",
          "position": {
            "x": 15,
            "y": 4,
            "units": "slots"
          },
          "type": "xod-cloud/feeds/cloud-store"
        },
        "BkWS5mCn8": {
          "id": "BkWS5mCn8",
          "position": {
            "x": 18,
            "y": 3,
            "units": "slots"
          },
          "type": "xod/core/pulse-on-change"
        },
        "Hk_Aq9DAU": {
          "boundLiterals": {
            "H1GSAN40nI": "\"moisture\""
          },
          "id": "Hk_Aq9DAU",
          "position": {
            "x": 9,
            "y": 3,
            "units": "slots"
          },
          "type": "xod-cloud/feeds/cloud-number"
        },
        "Hy-WB9Q038": {
          "id": "Hy-WB9Q038",
          "position": {
            "x": 15,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/debug/tethering-inet"
        },
        "S1co57ChU": {
          "boundLiterals": {
            "B13SCNhl-": "30"
          },
          "id": "S1co57ChU",
          "position": {
            "x": 11,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/core/clock"
        },
        "S1dnUITnL": {
          "id": "S1dnUITnL",
          "position": {
            "x": 9,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/debug/tethering-inet"
        },
        "SJxbH97AnL": {
          "boundLiterals": {
            "ByfGSDjQE": "0.25"
          },
          "size": {
            "height": 1,
            "width": 2,
            "units": "slots"
          },
          "id": "SJxbH97AnL",
          "position": {
            "x": 17,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/debug/tweak-number"
        },
        "SySEqQA28": {
          "id": "SySEqQA28",
          "position": {
            "x": 8,
            "y": 4,
            "units": "slots"
          },
          "type": "xod-dev/servo/servo"
        },
        "rJPiAqPCI": {
          "boundLiterals": {
            "ByU7LRuSPkW": "On Boot"
          },
          "id": "rJPiAqPCI",
          "position": {
            "x": 11,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/core/any"
        }
      },
      "comments": {
        "SyoB37C3I": {
          "content": "Now you got a remote analog gauge for the data that you send to the cloud. You can place it on your desktop and watch for the moisture in your greenhouse located far away.\n\nYou might build another device to switch a water pump in response to the same data feed changes. Moreover, you could send the status of the water pump to the cloud to see if the pump is working.",
          "id": "SyoB37C3I",
          "position": {
            "x": 11,
            "y": 5,
            "units": "slots"
          },
          "size": {
            "height": 2,
            "width": 8,
            "units": "slots"
          }
        },
        "r1z3ULah8": {
          "content": "# Feed Messaging\n\nIn this chapter, we’ll make an analog gauge for the data that is pushed to the cloud in the same way you already saw in one of the previous chapters.\n\nThe `xod-cloud/feeds` standard library provides nodes to retrieve the last value from your feed with different types: `cloud-boolean`, `cloud-string`, and `cloud-number`. Since we're sending number values, we pick `cloud-number`.\n\nOn the left side, nodes react to the data changes by rotating a servo. On the right side, you see nodes to update the value and check out how your servo responds.\n\nNote that on both sides, we named the feed as \"moisture\", they should match. Usually, the moisture is measured as a percentage. So we expect values in a range from 0.00 to 1.00. If you use another range, place the `map` node before the `VAL` input of a `servo` node.\n\n## Excercise\n\n1. Bind a proper `PORT` to the `servo` node\n2. Upload the program with the debug mode turned on.\n3. Update `tweak-number` value and check out how your servo responds.\n4. Place a `map` node between `cloud-number` and `servo` if needed.",
          "id": "r1z3ULah8",
          "position": {
            "x": 0,
            "y": 0,
            "units": "slots"
          },
          "size": {
            "height": 7,
            "width": 7,
            "units": "slots"
          }
        },
        "rJ8BqQR2L": {
          "content": "Use the `tweak-number` node to update the value.",
          "id": "rJ8BqQR2L",
          "position": {
            "x": 15,
            "y": 1,
            "units": "slots"
          },
          "size": {
            "height": 1,
            "width": 4,
            "units": "slots"
          }
        }
      },
      "path": "@/111-feed-messaging"
    },
    "@/112-standalone-internet": {
      "links": {
        "BJlOvpA2U": {
          "id": "BJlOvpA2U",
          "input": {
            "nodeId": "r1KwvpChI",
            "pinKey": "r1bBAVNAh8"
          },
          "output": {
            "nodeId": "BJZ3lNAh8",
            "pinKey": "SyveJHHBL"
          }
        },
        "SknPwaChL": {
          "id": "SknPwaChL",
          "input": {
            "nodeId": "Bkg-heN028",
            "pinKey": "Bk5lexBtE"
          },
          "output": {
            "nodeId": "r1KwvpChI",
            "pinKey": "BJHJB4R2U"
          }
        },
        "SyUuwTRnL": {
          "id": "SyUuwTRnL",
          "input": {
            "nodeId": "r1KwvpChI",
            "pinKey": "S1rCENRnL"
          },
          "output": {
            "nodeId": "HJbZ2eN03U",
            "pinKey": "HJU8CE2lW"
          }
        }
      },
      "nodes": {
        "BJZ3lNAh8": {
          "id": "BJZ3lNAh8",
          "position": {
            "x": 9,
            "y": 0,
            "units": "slots"
          },
          "type": "xod/debug/tethering-inet"
        },
        "Bkg-heN028": {
          "boundLiterals": {
            "BkXK1eBYV": "D5"
          },
          "id": "Bkg-heN028",
          "position": {
            "x": 8,
            "y": 3,
            "units": "slots"
          },
          "type": "xod-dev/servo/servo"
        },
        "HJbZ2eN03U": {
          "boundLiterals": {
            "B13SCNhl-": "5"
          },
          "id": "HJbZ2eN03U",
          "position": {
            "x": 11,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/core/clock"
        },
        "r1KwvpChI": {
          "boundLiterals": {
            "H1GSAN40nI": "\"moisture\""
          },
          "id": "r1KwvpChI",
          "position": {
            "x": 9,
            "y": 2,
            "units": "slots"
          },
          "type": "xod-cloud/feeds/cloud-number"
        }
      },
      "comments": {
        "S1CmLCCh8": {
          "content": "Here are these nodes:\n\n- `xod-dev/esp8266-mcu/connect`\n- `xod-dev/esp8266/connect`\n- `xod-dev/w5500/ethernet-shield`\n\n## Excercise\n\n1.  Replace the `tethering-inet` node with a suitable one from the list above.\n2. Bind the appropriate values to the node inputs such as the name of your WiFi access point and password.\n3. Bind the `PORT` value to `servo` node.\n4. Upload the patch without debug mode.\n\nNote that you need to log in and generate a XOD Cloud API key for the project if you haven't done it before (hit Edit → Project Preferences).\n\nThe servo rotates to the angle that corresponds to the latest \"moisture\" value. Now you can open the chapter `015-xod-cloud` again, run the simulation and control your gauge from XOD IDE over the cloud. Or you can make another device, which updates this value automatically.\n\n---\n\nIn some cases, you might need to make an advanced configuration of the connected module or ethernet-shield. Check out examples in the library or read an article about [ethernet-shield advanced configuration](https://xod.io/docs/guide/w5500-advanced/?utm_source=ide&utm_medium=ide_comment&utm_campaign=tutorial).",
          "id": "S1CmLCCh8",
          "position": {
            "x": 15,
            "y": 0,
            "units": "slots"
          },
          "size": {
            "height": 7,
            "width": 7,
            "units": "slots"
          }
        },
        "rkMW2eVC28": {
          "content": "# Stand-alone Internet\n\nIt's time to make your device autonomous. \n\nHere is the program from the previous chapter. The program has a `tethering-inet` node that depends on PC and works only in the debug mode. To make a stand-alone device, replace it with another node that provides the internet using some hardware module, shield, or the native microcontroller features.\n\nFor such purposes XOD has a few standard libraries:\n\n- [`xod-dev/esp8266-mcu`](https://xod.io/libs/xod-dev/esp8266-mcu/?utm_source=ide&utm_medium=ide_comment&utm_campaign=tutorial) — if you run the program on ESP8266,\n- [`xod-dev/esp8266`](https://xod.io/libs/xod-dev/esp8266/?utm_source=ide&utm_medium=ide_comment&utm_campaign=tutorial) — if you run the program on the microcontroller without onboard WiFi module, but using an ESP8266 as an AT command modem,\n- [`xod-dev/w5500`](https://xod.io/libs/xod-dev/w5500/?utm_source=ide&utm_medium=ide_comment&utm_campaign=tutorial) — if you have an ethernet shield based on W5500 chipset.\n\nEach of the libraries has a set of some low-level networking nodes. But for the current case, you only need the internet provider node.",
          "id": "rkMW2eVC28",
          "position": {
            "x": 0,
            "y": 0,
            "units": "slots"
          },
          "size": {
            "height": 6,
            "width": 7,
            "units": "slots"
          }
        }
      },
      "path": "@/112-standalone-internet"
    },
    "@/200-patterns": {
      "comments": {
        "H1ILK61_E": {
          "content": "# Patterns\n\nIn this part of the tutorial you meet the most popular and useful patterns of doing something more complex than a blinking LED. Learn how to deal with loops, keep and change state, make smooth transitions and so on.\n\nThis part of the tutorial is a handbook that can be useful for your projects in the future. So don't be shy to come back.",
          "id": "H1ILK61_E",
          "position": {
            "x": 0,
            "y": 0,
            "units": "slots"
          },
          "size": {
            "height": 3,
            "width": 7,
            "units": "slots"
          }
        }
      },
      "path": "@/200-patterns"
    },
    "@/201-matching-ranges": {
      "links": {
        "ByKdDmf9V": {
          "id": "ByKdDmf9V",
          "input": {
            "nodeId": "r1Zdv7z94",
            "pinKey": "Bk5lexBtE"
          },
          "output": {
            "nodeId": "H1zoryb_E",
            "pinKey": "H12bIR_SPyZ"
          }
        },
        "HJFADybON": {
          "id": "HJFADybON",
          "input": {
            "nodeId": "BysnwJ-dN",
            "pinKey": "HkXK-dGob"
          },
          "output": {
            "nodeId": "H1zoryb_E",
            "pinKey": "H12bIR_SPyZ"
          }
        },
        "HyOkUyWdV": {
          "id": "HyOkUyWdV",
          "input": {
            "nodeId": "H1zoryb_E",
            "pinKey": "BJlzICOSv1-"
          },
          "output": {
            "nodeId": "Hy6crJbuE",
            "pinKey": "rkFgMITM-"
          }
        }
      },
      "nodes": {
        "BysnwJ-dN": {
          "id": "BysnwJ-dN",
          "position": {
            "x": 8,
            "y": 3,
            "units": "slots"
          },
          "type": "xod/debug/watch"
        },
        "H1zoryb_E": {
          "boundLiterals": {
            "HJCWLAdSwyW": "30",
            "rkpbU0OrwyZ": "1",
            "ry1z8CuBDy-": "15"
          },
          "id": "H1zoryb_E",
          "position": {
            "x": 9,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/math/map"
        },
        "Hy6crJbuE": {
          "boundLiterals": {
            "H1s0WI6MZ": "A1"
          },
          "id": "Hy6crJbuE",
          "position": {
            "x": 9,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/common-hardware/thermometer-tmp36"
        },
        "r1Zdv7z94": {
          "boundLiterals": {
            "BkXK1eBYV": "D9"
          },
          "id": "r1Zdv7z94",
          "position": {
            "x": 8,
            "y": 4,
            "units": "slots"
          },
          "type": "xod-dev/servo/servo"
        }
      },
      "comments": {
        "Hy7-DWAyuV": {
          "content": "## Clipping ranges\n\nThe `map` node will now linearly map the 20–50 °C range to 0–90°. Let’s raise the sensitivity. Say, we want to map 15–30 °C to 0–90° rotation.\n\nWhat happens if the `X` pin of the `map` receives data that is outside the input range (10 or 42, for example)? The output value which is the servo angle proportionally falls outside the desired range too.\n\nFor such cases, there is a sibling node called `map-clip`. It works the same way, but any input that is out of the range rounds to the nearest limit. Thus, if `X` receives the value of 10, the `map-clip` node accepts it as 15, and 42 as 30.\n\n## Extra exercise\n\nReplace the `map` node with `map-clip` and try the out-of-range values.\n\nReplace the thermometer with `analog-sensor` for LDR and play with values.\n\nDraw a gauge on the paper and attach it to the servo.",
          "id": "Hy7-DWAyuV",
          "position": {
            "x": 15,
            "y": 0,
            "units": "slots"
          },
          "size": {
            "height": 7,
            "width": 5,
            "units": "slots"
          }
        },
        "rJGWw-CJdE": {
          "content": "# Matching Ranges\n\nIf you have finished `109-thermometer`, you have noticed that the thermometer node outputs the temperature value to the `Tc` pin in degrees Celsius.\n\nThe practical task is to make the servo rotate smoothly from 0 to 90°, reflecting a temperature change from 20 °C to 50 °C.\n\nThe `servo` node can work only with values ranging from 0 to 1. You can match the ranges using a few math nodes, but XOD gives a special node for such cases. This node is called `map`.\n\n## Exercise\n\nMake a device which shows the temperature with an arrow glued to the servo shaft.\n\n1. Connect a TMP36 thermometer to the board as shown on the [scheme](https://xod.io/docs/tutorial/201-matching-ranges/?utm_source=ide&utm_medium=ide_comment&utm_campaign=tutorial#circuit).\n\n2. Link the `Tc` pin to the `X` pin on the `map` node.\n\n3. Define the input range: open the Inspector for `map`, and then set `Smin` to 20 and `Smax` to 50.\n\n4. Define the output range: set the `Tmin` to 0 and `Tmax` to 0.5 (which corresponds to ~90°).\n\n5. Link the `Xm` output to the `VAL` servo input.\n\nTry to heat the thermometer with a hot object (e.g., a paper knife heated with a lighter). At the temperature of 35 °C (half the input range), the servo should rotate to 45°, which is the midpoint of the output range.",
          "id": "rJGWw-CJdE",
          "position": {
            "x": 0,
            "y": 0,
            "units": "slots"
          },
          "size": {
            "height": 8,
            "width": 7,
            "units": "slots"
          }
        }
      },
      "path": "@/201-matching-ranges"
    },
    "@/202-alarm": {
      "links": {
        "B1tsKyWdV": {
          "id": "B1tsKyWdV",
          "input": {
            "nodeId": "SyOoFJZuV",
            "pinKey": "HkXK-dGob"
          },
          "output": {
            "nodeId": "rkn_YJWOE",
            "pinKey": "B19RYS3lW"
          }
        },
        "BJNKsPqdE": {
          "id": "BJNKsPqdE",
          "input": {
            "nodeId": "rkn_YJWOE",
            "pinKey": "rJg00Nhe-"
          },
          "output": {
            "nodeId": "Bk1uu1bO4",
            "pinKey": "rkFgMITM-"
          }
        },
        "BkitKkbdE": {
          "id": "BkitKkbdE",
          "input": {
            "nodeId": "HkFtYJb_N",
            "pinKey": "HyYh1a3LZ"
          },
          "output": {
            "nodeId": "rkn_YJWOE",
            "pinKey": "B19RYS3lW"
          }
        }
      },
      "nodes": {
        "Bk1uu1bO4": {
          "boundLiterals": {
            "H1s0WI6MZ": "A1"
          },
          "id": "Bk1uu1bO4",
          "position": {
            "x": 10,
            "y": 0,
            "units": "slots"
          },
          "type": "xod/common-hardware/thermometer-tmp36"
        },
        "HkFtYJb_N": {
          "boundLiterals": {
            "B1oqkTnIb": "D11"
          },
          "id": "HkFtYJb_N",
          "position": {
            "x": 9,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/common-hardware/led"
        },
        "SyOoFJZuV": {
          "id": "SyOoFJZuV",
          "position": {
            "x": 13,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/debug/watch"
        },
        "rkn_YJWOE": {
          "boundLiterals": {
            "HJbACN3gb": "30"
          },
          "id": "rkn_YJWOE",
          "position": {
            "x": 10,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/core/greater"
        }
      },
      "comments": {
        "rJIJ_OybOE": {
          "content": "# Alarm\n\nHere is the program of a simple alarm device, which turns the LED on when the temperature gets higher than the desired value.\n\nAs you can note, we use the `greater` node, one of the comparison nodes from the XOD standard library.\n\n## Exercise\n\nChange the logic to make the alarm working whenever the temperature gets *lower* than the threshold. Let the user to set this value using a potentiometer.\n\n1. Replace the `greater` node with `less`.\n\n2. Place the `map` node and bind values to map 0.0...1.0 range to 15...30 degrees Celsius.\n\n3. Place `pot` and bind the corresponding `PORT`.\n\n4. Link `pot`, `map`, and `less` nodes.\n\n5. Upload the program.\n\nRotate the potentiometer knob to set the threshold. Heat and cool down the thermometer to see how it works.",
          "id": "rJIJ_OybOE",
          "position": {
            "x": 0,
            "y": 0,
            "units": "slots"
          },
          "size": {
            "height": 6,
            "width": 7,
            "units": "slots"
          }
        },
        "rJp5G-G5E": {
          "content": "## Additional exercise\n\nUse both `greater` and `less` nodes to alarm only when the temperature is out of the range. Hint: you need the `or` node.",
          "id": "rJp5G-G5E",
          "position": {
            "x": 9,
            "y": 4,
            "units": "slots"
          },
          "size": {
            "height": 2,
            "width": 7,
            "units": "slots"
          }
        }
      },
      "path": "@/202-alarm"
    },
    "@/203-permanent-alarm": {
      "links": {
        "BJe0TwcdE": {
          "id": "BJe0TwcdE",
          "input": {
            "nodeId": "SyAp6P9_N",
            "pinKey": "HkXK-dGob"
          },
          "output": {
            "nodeId": "BkejTPcd4",
            "pinKey": "HkyxURuSPyW"
          }
        },
        "SJAWU_Ld4": {
          "id": "SJAWU_Ld4",
          "input": {
            "nodeId": "Byje8OL_4",
            "pinKey": "HJCfI0dBDkb"
          },
          "output": {
            "nodeId": "Hkxu3dvzuN",
            "pinKey": "B19RYS3lW"
          }
        },
        "SJEg8uL_4": {
          "id": "SJEg8uL_4",
          "input": {
            "nodeId": "BkblI_8O4",
            "pinKey": "HJjZLRdBw1-"
          },
          "output": {
            "nodeId": "Hkd2ODfu4",
            "pinKey": "rkFgMITM-"
          }
        },
        "SkViTvquE": {
          "id": "SkViTvquE",
          "input": {
            "nodeId": "ryZ_3dvM_E",
            "pinKey": "HyYh1a3LZ"
          },
          "output": {
            "nodeId": "BkejTPcd4",
            "pinKey": "HkyxURuSPyW"
          }
        },
        "r1Xx8u8OV": {
          "id": "r1Xx8u8OV",
          "input": {
            "nodeId": "Hkxu3dvzuN",
            "pinKey": "rJg00Nhe-"
          },
          "output": {
            "nodeId": "Hkd2ODfu4",
            "pinKey": "rkFgMITM-"
          }
        },
        "rkRZCPq_V": {
          "id": "rkRZCPq_V",
          "input": {
            "nodeId": "BkejTPcd4",
            "pinKey": "Bkh8A_Sv1-"
          },
          "output": {
            "nodeId": "Byje8OL_4",
            "pinKey": "SJyXI0OrD1-"
          }
        },
        "rkhZId8u4": {
          "id": "rkhZId8u4",
          "input": {
            "nodeId": "Byje8OL_4",
            "pinKey": "BJaG80urD1-"
          },
          "output": {
            "nodeId": "BkblI_8O4",
            "pinKey": "HktZUCdrPkZ"
          }
        }
      },
      "nodes": {
        "BkblI_8O4": {
          "boundLiterals": {
            "SJqZ8COrDkW": "18"
          },
          "id": "BkblI_8O4",
          "position": {
            "x": 10,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/core/less"
        },
        "BkejTPcd4": {
          "id": "BkejTPcd4",
          "position": {
            "x": 9,
            "y": 3,
            "units": "slots"
          },
          "type": "xod/core/flip-flop"
        },
        "Byje8OL_4": {
          "id": "Byje8OL_4",
          "position": {
            "x": 10,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/core/or"
        },
        "Hkd2ODfu4": {
          "boundLiterals": {
            "H1s0WI6MZ": "A1"
          },
          "id": "Hkd2ODfu4",
          "position": {
            "x": 10,
            "y": 0,
            "units": "slots"
          },
          "type": "xod/common-hardware/thermometer-tmp36"
        },
        "Hkxu3dvzuN": {
          "boundLiterals": {
            "HJbACN3gb": "26"
          },
          "id": "Hkxu3dvzuN",
          "position": {
            "x": 13,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/core/greater"
        },
        "SyAp6P9_N": {
          "id": "SyAp6P9_N",
          "position": {
            "x": 11,
            "y": 4,
            "units": "slots"
          },
          "type": "xod/debug/watch"
        },
        "ryZ_3dvM_E": {
          "boundLiterals": {
            "B1oqkTnIb": "D11"
          },
          "id": "ryZ_3dvM_E",
          "position": {
            "x": 8,
            "y": 4,
            "units": "slots"
          },
          "type": "xod/common-hardware/led"
        }
      },
      "comments": {
        "By-2_Dz_V": {
          "content": "# Permanent Alarm\n\nLet's extend the alarm device and make the LED stay enabled after trigerring even after the condition is no longer met. This is useful to signalize that something gone wrong even if it was not observed immediatelly.\n\nWhen the value gets out of the range, the `or` node sends a pulse to the `SET` pin of the `flip-flop` node. So `MEM` returns `True` until we reset it, toggle it, or reboot the board.\n\n## Instructions\n\nLet's make the alarm resettable.\n\n1. Add a `button` node.\n2. Set the corresponding `PORT`.\n3. Link `PRS` with the `RST` pin.\n4. Upload the program.\n\nHeat or cool down the thermometer. Use the new button to turn the alarm off until the new trigger event is encountered.",
          "id": "By-2_Dz_V",
          "position": {
            "x": 0,
            "y": 0,
            "units": "slots"
          },
          "size": {
            "height": 5,
            "width": 7,
            "units": "slots"
          }
        }
      },
      "path": "@/203-permanent-alarm"
    },
    "@/204-run-for-x-seconds": {
      "links": {
        "HJSUXFL_E": {
          "id": "HJSUXFL_E",
          "input": {
            "nodeId": "Sy-Cfmt8uE",
            "pinKey": "HkXK-dGob"
          },
          "output": {
            "nodeId": "BJTSmtLOV",
            "pinKey": "HkU3vNoTW"
          }
        },
        "SkDUmKUuV": {
          "id": "SkDUmKUuV",
          "input": {
            "nodeId": "r1xAGQFI_V",
            "pinKey": "HyYh1a3LZ"
          },
          "output": {
            "nodeId": "BJTSmtLOV",
            "pinKey": "HkU3vNoTW"
          }
        },
        "SyyCVWZt4": {
          "id": "SyyCVWZt4",
          "input": {
            "nodeId": "BJTSmtLOV",
            "pinKey": "SkSuD6LMb"
          },
          "output": {
            "nodeId": "SkAaV-bYE",
            "pinKey": "ryVmUAOrvkb"
          }
        }
      },
      "nodes": {
        "BJTSmtLOV": {
          "boundLiterals": {
            "SkSuD6LMb": "On Boot",
            "Skre8ROSv1-": "10"
          },
          "id": "BJTSmtLOV",
          "position": {
            "x": 8,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/core/delay"
        },
        "SkAaV-bYE": {
          "id": "SkAaV-bYE",
          "position": {
            "x": 9,
            "y": 0,
            "units": "slots"
          },
          "type": "xod/core/boot"
        },
        "Sy-Cfmt8uE": {
          "id": "Sy-Cfmt8uE",
          "position": {
            "x": 12,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/debug/watch"
        },
        "r1xAGQFI_V": {
          "boundLiterals": {
            "B1oqkTnIb": "D11"
          },
          "id": "r1xAGQFI_V",
          "position": {
            "x": 8,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/common-hardware/led"
        }
      },
      "comments": {
        "Hy82VbGqN": {
          "content": "## Additional excercise\n\nCombine a few `delay` nodes by chaining `DONE` and `SET` pins to get a custom pattern of the blinking LED. Use the `or` node to combine `ACT` values as necessary.",
          "id": "Hy82VbGqN",
          "position": {
            "x": 14,
            "y": 2,
            "units": "slots"
          },
          "size": {
            "height": 2,
            "width": 7,
            "units": "slots"
          }
        },
        "SJr0M7FU_E": {
          "content": "# Run for X Seconds\n\nHere is a device that turns on the LED for ten seconds on boot.\n\nThe `delay` node helps us with this task. Generally, this node is used to postpone a pulse for some time, but when the `delay` node is activated it also outputs `True` value on the `ACT` pin. That's what we need.\n\n## Exercise\n\nLet’s modify the device so that the LED turns on for three seconds on a button press.\n\n1. Replace `boot` with the a `button` node and bind the corresponding `PORT`.\n2. Link it with the `SET` pin of the `delay` node.\n3. Change the `T` value to 3.\n4. Upload the program\n\nPress the button and see how the LED behaves. Try to press the button many times while the LED glows and see how each press postpones the delay to be elapsed three seconds after the *last* press.\n\n",
          "id": "SJr0M7FU_E",
          "position": {
            "x": 0,
            "y": 0,
            "units": "slots"
          },
          "size": {
            "height": 6,
            "width": 7,
            "units": "slots"
          }
        }
      },
      "path": "@/204-run-for-x-seconds"
    },
    "@/205-loops": {
      "links": {
        "BJvk0cv_E": {
          "id": "BJvk0cv_E",
          "input": {
            "nodeId": "ByH1C9w_V",
            "pinKey": "SkSuD6LMb"
          },
          "output": {
            "nodeId": "ryPnaqwON",
            "pinKey": "Bk4gU0drwJ-"
          }
        },
        "Bkqn65wOE": {
          "id": "Bkqn65wOE",
          "input": {
            "nodeId": "ryPnaqwON",
            "pinKey": "SkSuD6LMb"
          },
          "output": {
            "nodeId": "ByZs_TqvOV",
            "pinKey": "Bk4gU0drwJ-"
          }
        },
        "HkHpDWWtE": {
          "id": "HkHpDWWtE",
          "input": {
            "nodeId": "Hy2dZdq_E",
            "pinKey": "ryv7IRdSP1b"
          },
          "output": {
            "nodeId": "BJrt-u5dV",
            "pinKey": "HJhXDIY9-"
          }
        },
        "HkUIvbZK4": {
          "id": "HkUIvbZK4",
          "input": {
            "nodeId": "BJrt-u5dV",
            "pinKey": "BJI7P8t9Z"
          },
          "output": {
            "nodeId": "ByH1C9w_V",
            "pinKey": "Bk4gU0drwJ-"
          }
        },
        "HynbvzbYN": {
          "id": "HynbvzbYN",
          "input": {
            "nodeId": "Hy2dZdq_E",
            "pinKey": "ByU7LRuSPkW"
          },
          "output": {
            "nodeId": "HycWDzbY4",
            "pinKey": "ryVmUAOrvkb"
          }
        },
        "r1Yoq2oO4": {
          "id": "r1Yoq2oO4",
          "input": {
            "nodeId": "ByZs_TqvOV",
            "pinKey": "SkSuD6LMb"
          },
          "output": {
            "nodeId": "Hy2dZdq_E",
            "pinKey": "ByHmL0uHPk-"
          }
        },
        "rkLuvbbYE": {
          "id": "rkLuvbbYE",
          "input": {
            "nodeId": "H1ZdvbWK4",
            "pinKey": "HyYh1a3LZ"
          },
          "output": {
            "nodeId": "ryPnaqwON",
            "pinKey": "HkU3vNoTW"
          }
        },
        "rySdv-WYE": {
          "id": "rySdv-WYE",
          "input": {
            "nodeId": "BJGdPZWtV",
            "pinKey": "HyYh1a3LZ"
          },
          "output": {
            "nodeId": "ByH1C9w_V",
            "pinKey": "HkU3vNoTW"
          }
        },
        "rydvD-Wt4": {
          "id": "rydvD-Wt4",
          "input": {
            "nodeId": "SkBPDWZYN",
            "pinKey": "HyYh1a3LZ"
          },
          "output": {
            "nodeId": "ByZs_TqvOV",
            "pinKey": "HkU3vNoTW"
          }
        }
      },
      "nodes": {
        "BJGdPZWtV": {
          "boundLiterals": {
            "B1oqkTnIb": "D11"
          },
          "label": "Red LED",
          "id": "BJGdPZWtV",
          "position": {
            "x": 16,
            "y": 4,
            "units": "slots"
          },
          "type": "xod/common-hardware/led"
        },
        "BJrt-u5dV": {
          "id": "BJrt-u5dV",
          "position": {
            "x": 8,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/core/defer"
        },
        "ByH1C9w_V": {
          "boundLiterals": {
            "SkSuD6LMb": "On Boot",
            "Skre8ROSv1-": "5"
          },
          "id": "ByH1C9w_V",
          "position": {
            "x": 13,
            "y": 4,
            "units": "slots"
          },
          "type": "xod/core/delay"
        },
        "ByZs_TqvOV": {
          "boundLiterals": {
            "SkSuD6LMb": "On Boot",
            "Skre8ROSv1-": "3"
          },
          "id": "ByZs_TqvOV",
          "position": {
            "x": 13,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/core/delay"
        },
        "H1ZdvbWK4": {
          "boundLiterals": {
            "B1oqkTnIb": "D12"
          },
          "label": "Yellow LED",
          "id": "H1ZdvbWK4",
          "position": {
            "x": 16,
            "y": 3,
            "units": "slots"
          },
          "type": "xod/common-hardware/led"
        },
        "Hy2dZdq_E": {
          "boundLiterals": {
            "ByU7LRuSPkW": "On Boot",
            "ryv7IRdSP1b": "On Boot"
          },
          "id": "Hy2dZdq_E",
          "position": {
            "x": 14,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/core/any"
        },
        "HycWDzbY4": {
          "id": "HycWDzbY4",
          "position": {
            "x": 15,
            "y": 0,
            "units": "slots"
          },
          "type": "xod/core/boot"
        },
        "SkBPDWZYN": {
          "boundLiterals": {
            "B1oqkTnIb": "D13"
          },
          "label": "Green LED",
          "id": "SkBPDWZYN",
          "position": {
            "x": 16,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/common-hardware/led"
        },
        "ryPnaqwON": {
          "boundLiterals": {
            "SkSuD6LMb": "On Boot",
            "Skre8ROSv1-": "2"
          },
          "id": "ryPnaqwON",
          "position": {
            "x": 13,
            "y": 3,
            "units": "slots"
          },
          "type": "xod/core/delay"
        }
      },
      "comments": {
        "S1Noua9DuN": {
          "content": "# Loops\n\nLet's make a simple traffic light. Each light is activated by the `delay` node. When the latest one finishes it sends a pulse to the begining and our traffic light starts over.\n\nTo make the loop we need a special `defer` node. When `defer` node receives some value or pulse it postpones downstream nodes evaluation until the next transaction.\n\nThe `defer` node is always required when you make a loop to avoid deadlocks. For now, you can remember to place `defer` nodes right in the places where you want to complete a feedback loop. Read the guide to better understand the [execution model](https://xod.io/docs/guide/execution-model/#feedback-loops-handling?utm_source=ide&utm_medium=ide_comment&utm_campaign=tutorial).\n\nProgram begins with the initial `boot` pulse. Then each delay node triggers the next one. The latest one pulses back to the beginning, and it works continuously.\n\n## Exercise\n\nLet's bring the button back and make the device start with the button press.\n\n1. Assemble a circuit according to the [scheme](https://xod.io/docs/tutorial/205-loops/?utm_source=ide&utm_medium=ide_comment&utm_campaign=tutorial#circuit).\n2. Replace `boot` with the `button` node and bind the corresponding `PORT` value.\n3. Link with a free pin of the `any` node.\n4. Upload the program.\n\nPress the button to run the chain.",
          "id": "S1Noua9DuN",
          "position": {
            "x": 0,
            "y": 0,
            "units": "slots"
          },
          "size": {
            "height": 7,
            "width": 7,
            "units": "slots"
          }
        }
      },
      "path": "@/205-loops"
    },
    "@/206-fade": {
      "links": {
        "BkzT6D1FN": {
          "id": "BkzT6D1FN",
          "input": {
            "nodeId": "BJLhH5vJY4",
            "pinKey": "HkXK-dGob"
          },
          "output": {
            "nodeId": "HJTd9D1Y4",
            "pinKey": "BJ0M5JKUW"
          }
        },
        "Sk4cwZfKV": {
          "id": "Sk4cwZfKV",
          "input": {
            "nodeId": "HJTd9D1Y4",
            "pinKey": "HyYJqJFLZ"
          },
          "output": {
            "nodeId": "Sk8i4WMYV",
            "pinKey": "BJ--G1tI-"
          }
        },
        "rybppvkYN": {
          "id": "rybppvkYN",
          "input": {
            "nodeId": "HyV2r5vJKN",
            "pinKey": "HyYh1a3LZ"
          },
          "output": {
            "nodeId": "HJTd9D1Y4",
            "pinKey": "BJ0M5JKUW"
          }
        }
      },
      "nodes": {
        "BJLhH5vJY4": {
          "id": "BJLhH5vJY4",
          "position": {
            "x": 11,
            "y": 3,
            "units": "slots"
          },
          "type": "xod/debug/watch"
        },
        "HJTd9D1Y4": {
          "boundLiterals": {
            "BJ0M5JKUW": "0",
            "BkweckF8-": "1"
          },
          "id": "HJTd9D1Y4",
          "position": {
            "x": 9,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/core/fade"
        },
        "HyV2r5vJKN": {
          "boundLiterals": {
            "B1oqkTnIb": "D11"
          },
          "id": "HyV2r5vJKN",
          "position": {
            "x": 8,
            "y": 3,
            "units": "slots"
          },
          "type": "xod/common-hardware/led"
        },
        "Sk8i4WMYV": {
          "boundLiterals": {
            "ByNiWkt8Z": "D13"
          },
          "id": "Sk8i4WMYV",
          "position": {
            "x": 9,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/common-hardware/button"
        }
      },
      "comments": {
        "rkUlhBcDkYV": {
          "content": "# Fade\n\nHere is a program with the LED that turns on smoothly while the button is pressed.\n\nTo make a smooth transition from 0 to 1 and vice versa we use the `fade` node from the XOD standard library. It transforms its output value toward the target value with the rate specified.\n\nIn some cases this node helps to reduce bouncing or power bursts. For example, when you rotate a motor without smooth acceleration, it can cause a voltage drop and whole device reboot.\n\n## Exercise\n\nTest the `fade` node with `servo`.\n\n1. Add a `servo` next to `led` and link it with `fade` too.\n\n2. Bind 2.0 to the `RATE` pin to get a faster transition.\n\n3. Upload the program.\n\nPress and hold the button a few times. Observe how `fade` smoothens the transition and changes the direction if the re-targeted in the middle of the process.\n\nRemove the `fade` node, link to `button` directly, and take a look at the board. When the motor starts moving you can see board LEDs are dimming; the board even can reboot.",
          "id": "rkUlhBcDkYV",
          "position": {
            "x": 0,
            "y": 0,
            "units": "slots"
          },
          "size": {
            "height": 7,
            "width": 7,
            "units": "slots"
          }
        }
      },
      "path": "@/206-fade"
    },
    "@/207-buses": {
      "links": {
        "B1xGj9bzK4": {
          "id": "B1xGj9bzK4",
          "input": {
            "nodeId": "S1d_cZzKN",
            "pinKey": "SkUjZA_L-"
          },
          "output": {
            "nodeId": "rJfjcWztE",
            "pinKey": "__out__"
          }
        },
        "Hy_32bGFE": {
          "id": "Hy_32bGFE",
          "input": {
            "nodeId": "rJLnh-Mt4",
            "pinKey": "HkXK-dGob"
          },
          "output": {
            "nodeId": "S1d_cZzKN",
            "pinKey": "r1yhZRd8W"
          }
        },
        "Hyj5qbfYE": {
          "id": "Hyj5qbfYE",
          "input": {
            "nodeId": "SyF9qZfKN",
            "pinKey": "BJI7P8t9Z"
          },
          "output": {
            "nodeId": "SykcqZztN",
            "pinKey": "H1E8AuSPkZ"
          }
        },
        "SkGFqWzY4": {
          "id": "SkGFqWzY4",
          "input": {
            "nodeId": "S1d_cZzKN",
            "pinKey": "HJAq-A_8-"
          },
          "output": {
            "nodeId": "HJeYcbzKN",
            "pinKey": "HJU8CE2lW"
          }
        },
        "rkb9c-ftN": {
          "id": "rkb9c-ftN",
          "input": {
            "nodeId": "SykcqZztN",
            "pinKey": "rJXICuSwyW"
          },
          "output": {
            "nodeId": "S1d_cZzKN",
            "pinKey": "r1yhZRd8W"
          }
        },
        "rylRcc-fFE": {
          "id": "rylRcc-fFE",
          "input": {
            "nodeId": "rJRqcZzK4",
            "pinKey": "__in__"
          },
          "output": {
            "nodeId": "SyF9qZfKN",
            "pinKey": "HJhXDIY9-"
          }
        }
      },
      "nodes": {
        "HJeYcbzKN": {
          "id": "HJeYcbzKN",
          "position": {
            "x": 10,
            "y": 0,
            "units": "slots"
          },
          "type": "xod/core/clock"
        },
        "S1d_cZzKN": {
          "boundLiterals": {
            "r1yhZRd8W": "0"
          },
          "id": "S1d_cZzKN",
          "position": {
            "x": 9,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/core/count"
        },
        "SyF9qZfKN": {
          "id": "SyF9qZfKN",
          "position": {
            "x": 11,
            "y": 3,
            "units": "slots"
          },
          "type": "xod/core/defer"
        },
        "SykcqZztN": {
          "boundLiterals": {
            "HJG8C_SPkb": "10"
          },
          "id": "SykcqZztN",
          "position": {
            "x": 9,
            "y": 3,
            "units": "slots"
          },
          "type": "xod/core/equal"
        },
        "rJLnh-Mt4": {
          "size": {
            "height": 1,
            "width": 2,
            "units": "slots"
          },
          "id": "rJLnh-Mt4",
          "position": {
            "x": 13,
            "y": 3,
            "units": "slots"
          },
          "type": "xod/debug/watch"
        },
        "rJRqcZzK4": {
          "label": "RST",
          "id": "rJRqcZzK4",
          "position": {
            "x": 11,
            "y": 4,
            "units": "slots"
          },
          "type": "xod/patch-nodes/to-bus"
        },
        "rJfjcWztE": {
          "label": "RST",
          "id": "rJfjcWztE",
          "position": {
            "x": 11,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/patch-nodes/from-bus"
        }
      },
      "comments": {
        "SJJLDWfqE": {
          "content": "## 👆 Shortcut\n\nAnother fast way to create a bus is from an existing link. Select a link and press \"B\". XOD breaks the link and adds bus nodes instead.",
          "id": "SJJLDWfqE",
          "position": {
            "x": 9,
            "y": 5,
            "units": "slots"
          },
          "size": {
            "height": 2,
            "width": 6,
            "units": "slots"
          }
        },
        "SJpHCJF8O4": {
          "content": "# Buses\n\nIt's time to learn how to keep the program clean and get rid of link intersections.\n\nYou can see triangle nodes on the patch. These nodes are called *buses*.\n\nIt's an alternative way to link nodes' pins. They create “invisible” links. There are two node types in `xod/patch-nodes` that work in tandem:\n\n- `to-bus` — defines a new bus\n\n- `from-bus` — sources data from an existing bus\n\nBus nodes with the same label are considered to be implicitly interconnected by XOD. You can make a few `from-bus` nodes with the same label.\n\n## Exercise\n\nLink the `IVAL` pin with the counter output using bus nodes.\n\n1. First of all, we'll make a loop. So place a `defer` node.\n2. Place `to-bus`.\n3. Label it \"IVAL\".\n4. Link these nodes.\n5. Click on the `IVAL` pin of the `clock` node and the press the \"B\" key on your keyboard. The label automatically sets from the linking pin label.\n6. Upload the program.",
          "id": "SJpHCJF8O4",
          "position": {
            "x": 0,
            "y": -1,
            "units": "slots"
          },
          "size": {
            "height": 7,
            "width": 7,
            "units": "slots"
          }
        }
      },
      "path": "@/207-buses"
    },
    "@/208-accumulator": {
      "links": {
        "B1qjTsoOE": {
          "id": "B1qjTsoOE",
          "input": {
            "nodeId": "rk_ipoo_E",
            "pinKey": "__in__"
          },
          "output": {
            "nodeId": "ByVoajjuN",
            "pinKey": "HJhXDIY9-"
          }
        },
        "ByiqpjouN": {
          "id": "ByiqpjouN",
          "input": {
            "nodeId": "BkY4OiiON",
            "pinKey": "HkXm80uHPyb"
          },
          "output": {
            "nodeId": "ryrvujjd4",
            "pinKey": "S1yaHC6UW"
          }
        },
        "H1WOdsjuN": {
          "id": "H1WOdsjuN",
          "input": {
            "nodeId": "BkCE_ijO4",
            "pinKey": "HkqmLAOrD1W"
          },
          "output": {
            "nodeId": "BJ3m_ij_V",
            "pinKey": "ByfGSDjQE"
          }
        },
        "S1Staii_N": {
          "id": "S1Staii_N",
          "input": {
            "nodeId": "BkCE_ijO4",
            "pinKey": "BJnQUR_BwyZ"
          },
          "output": {
            "nodeId": "rJVF6sjdN",
            "pinKey": "__out__"
          }
        },
        "SJgjTsi_4": {
          "id": "SJgjTsi_4",
          "input": {
            "nodeId": "r1IEdsodV",
            "pinKey": "HkXK-dGob"
          },
          "output": {
            "nodeId": "BkY4OiiON",
            "pinKey": "r1lQLAOBwJb"
          }
        },
        "SkYFasj_4": {
          "id": "SkYFasj_4",
          "input": {
            "nodeId": "ryrvujjd4",
            "pinKey": "S10qrR6UZ"
          },
          "output": {
            "nodeId": "BkCE_ijO4",
            "pinKey": "SyomIRurDJ-"
          }
        },
        "rkFwusi_N": {
          "id": "rkFwusi_N",
          "input": {
            "nodeId": "ryrvujjd4",
            "pinKey": "rkmiHCaIZ"
          },
          "output": {
            "nodeId": "Hk-VOooON",
            "pinKey": "Bkf4BDsmV"
          }
        },
        "ry6qajoO4": {
          "id": "ry6qajoO4",
          "input": {
            "nodeId": "BkY4OiiON",
            "pinKey": "Hy-QUR_BPkZ"
          },
          "output": {
            "nodeId": "ryrvujjd4",
            "pinKey": "rkWHDAW_f"
          }
        },
        "ryIqTooOE": {
          "id": "ryIqTooOE",
          "input": {
            "nodeId": "ryrvujjd4",
            "pinKey": "rJUjrCTUb"
          },
          "output": {
            "nodeId": "H1-c6siuN",
            "pinKey": "Bkf4BDsmV"
          }
        },
        "ryrsaso_N": {
          "id": "ryrsaso_N",
          "input": {
            "nodeId": "ByVoajjuN",
            "pinKey": "BJI7P8t9Z"
          },
          "output": {
            "nodeId": "BkY4OiiON",
            "pinKey": "r1lQLAOBwJb"
          }
        }
      },
      "nodes": {
        "BJ3m_ij_V": {
          "boundLiterals": {
            "ByfGSDjQE": "0"
          },
          "size": {
            "height": 1,
            "width": 2,
            "units": "slots"
          },
          "id": "BJ3m_ij_V",
          "position": {
            "x": 9,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/debug/tweak-number"
        },
        "BkCE_ijO4": {
          "id": "BkCE_ijO4",
          "position": {
            "x": 8,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/core/add"
        },
        "BkY4OiiON": {
          "id": "BkY4OiiON",
          "position": {
            "x": 8,
            "y": 4,
            "units": "slots"
          },
          "type": "xod/core/buffer"
        },
        "ByVoajjuN": {
          "id": "ByVoajjuN",
          "position": {
            "x": 10,
            "y": 4,
            "units": "slots"
          },
          "type": "xod/core/defer"
        },
        "H1-c6siuN": {
          "label": "RESET",
          "id": "H1-c6siuN",
          "position": {
            "x": 13,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/debug/tweak-pulse"
        },
        "Hk-VOooON": {
          "label": "ADD",
          "id": "Hk-VOooON",
          "position": {
            "x": 11,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/debug/tweak-pulse"
        },
        "r1IEdsodV": {
          "id": "r1IEdsodV",
          "position": {
            "x": 8,
            "y": 5,
            "units": "slots"
          },
          "type": "xod/debug/watch"
        },
        "rJVF6sjdN": {
          "label": "VAL",
          "id": "rJVF6sjdN",
          "position": {
            "x": 8,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/patch-nodes/from-bus"
        },
        "rk_ipoo_E": {
          "label": "VAL",
          "id": "rk_ipoo_E",
          "position": {
            "x": 10,
            "y": 5,
            "units": "slots"
          },
          "type": "xod/patch-nodes/to-bus"
        },
        "ryrvujjd4": {
          "boundLiterals": {
            "rygjH06LW": "0"
          },
          "id": "ryrvujjd4",
          "position": {
            "x": 8,
            "y": 3,
            "units": "slots"
          },
          "type": "xod/core/select"
        }
      },
      "comments": {
        "Sy6ZBBij_E": {
          "content": "# Accumulator\n\nLet's make a device which helps us in adding numbers. We will learn how to memorize values and update them.\n\nThe XOD standard library contains a `buffer` node which memorizes the input value when it receives a pulse.\n\nTo make some calculations and apply them to a stored value we should make a loop from the buffer output to the calculations and back to the buffer input.\n\nTo avoid limitless calculations and make it possible to reset the buffer we need a `select` node. It feeds the calculation result to the `buffer` node on a pulse.\n\nIn this example we're using the `add` node, but the calculation may be arbitrary complex.\n\n## Exercise\n\nExamine how the input value and pulses affect the stored result.\n\n1. Upload the program.\n2. Change the `tweak-number` value.\n3. Send pulse from the \"ADD\" node.\n4. Repeat the second and third steps a few times.\n5. Send pulse from \"RESET\".\n\nReplace tweak nodes with a coin acceptor and button to make a ticket system or photo booth.",
          "id": "Sy6ZBBij_E",
          "position": {
            "x": 0,
            "y": 0,
            "units": "slots"
          },
          "size": {
            "height": 7,
            "width": 7,
            "units": "slots"
          }
        }
      },
      "path": "@/208-accumulator"
    },
    "@/209-slow-down": {
      "links": {
        "HJCaDtlQr": {
          "id": "HJCaDtlQr",
          "input": {
            "nodeId": "Hy66vKe7B",
            "pinKey": "rJgnw0417B"
          },
          "output": {
            "nodeId": "B1JqY9JYE",
            "pinKey": "rkFgMITM-"
          }
        }
      },
      "nodes": {
        "B1JqY9JYE": {
          "id": "B1JqY9JYE",
          "position": {
            "x": 12,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/common-hardware/thermometer-tmp36"
        },
        "Hy66vKe7B": {
          "id": "Hy66vKe7B",
          "position": {
            "x": 9,
            "y": 3,
            "units": "slots"
          },
          "type": "xod-dev/text-lcd/text-lcd-i2c-16x2"
        }
      },
      "comments": {
        "rkzvF9ytV": {
          "content": "# Slow Down\n\nYou often see the \"Loop\" value bound to `UPD` pins.\n\n\"Loop\" (also known as \"Continuously\") means that XOD tries to pulse these nodes as fast as it can. These nodes evaluate themselves on each transaction.\n\nSometimes it's excessive and may lead to slowing the program performance. Especially if you're working with sensors that depend on timing like an ultrasonic range meter.\n\nTo avoid this, you can replace the \"Continuously\" with another source that pulses with the desired interval or only when necessary. For example, a `clock` node.\n\n## Exercise\n\nMake the temperature display less sporadic.\n\n1. Place a `clock` node.\n2. Link it with the `UPD` pin of the `thermometer-tmp36` node.\n3. Upload the program.\n\nHeat and cool down the thermometer and observe the incremental changes of the data shown.",
          "id": "rkzvF9ytV",
          "position": {
            "x": 0,
            "y": 0,
            "units": "slots"
          },
          "size": {
            "height": 7,
            "width": 7,
            "units": "slots"
          }
        }
      },
      "path": "@/209-slow-down"
    },
    "@/210-string-formatting": {
      "links": {
        "Bk0RuFxXB": {
          "id": "Bk0RuFxXB",
          "input": {
            "nodeId": "H1i0dFl7r",
            "pinKey": "BJ3DAE1QS"
          },
          "output": {
            "nodeId": "HkNkC5yKV",
            "pinKey": "rksccsp-W"
          }
        },
        "SJCmOrfFV": {
          "id": "SJCmOrfFV",
          "input": {
            "nodeId": "HkT0TcyFE",
            "pinKey": "BJlHojaWZ"
          },
          "output": {
            "nodeId": "HyY0RjktV",
            "pinKey": "rkFgMITM-"
          }
        },
        "SkBBTBGtN": {
          "id": "SkBBTBGtN",
          "input": {
            "nodeId": "HkNkC5yKV",
            "pinKey": "BkeKcj6ZZ"
          },
          "output": {
            "nodeId": "HkT0TcyFE",
            "pinKey": "r1H_oipZb"
          }
        },
        "r1V8k31tE": {
          "id": "r1V8k31tE",
          "input": {
            "nodeId": "HyY0RjktV",
            "pinKey": "Hk_1fUaMW"
          },
          "output": {
            "nodeId": "SkGApqJKV",
            "pinKey": "HJU8CE2lW"
          }
        }
      },
      "nodes": {
        "H1i0dFl7r": {
          "id": "H1i0dFl7r",
          "position": {
            "x": 8,
            "y": 4,
            "units": "slots"
          },
          "type": "xod-dev/text-lcd/text-lcd-i2c-16x2"
        },
        "HkNkC5yKV": {
          "boundLiterals": {
            "BkeKcj6ZZ-$1": "\"C\"",
            "BkeKcj6ZZ-$2": "\"\"",
            "Hkqu9oaWb": "\"Temp:\""
          },
          "arityLevel": 2,
          "id": "HkNkC5yKV",
          "position": {
            "x": 8,
            "y": 3,
            "units": "slots"
          },
          "type": "xod/core/concat"
        },
        "HkT0TcyFE": {
          "boundLiterals": {
            "HJTIija-W": "1"
          },
          "id": "HkT0TcyFE",
          "position": {
            "x": 9,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/core/format-number"
        },
        "HyY0RjktV": {
          "id": "HyY0RjktV",
          "position": {
            "x": 9,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/common-hardware/thermometer-tmp36"
        },
        "SkGApqJKV": {
          "id": "SkGApqJKV",
          "position": {
            "x": 10,
            "y": 0,
            "units": "slots"
          },
          "type": "xod/core/clock"
        }
      },
      "comments": {
        "rJBpp5JKV": {
          "content": "# String Formatting\n\nHere is a program with a text LCD that shows the temperature. We already formatted the thermometers output to get a human readable string on the LCD like \"Temp: 14.3C\".\n\nThe `format-number` node transforms the number value to a string with a desired precision.\n\nThe `concat` node concatenates a three parts of the string that we want to see on the display.\n\nTo show non-ASCII characters you should specify its hexadecimal character code in the special \"\\x\" notation. Codes differ on various LCD models. For example, if you have an MT-16S2H, the degree character is \"\\x99\". Check out character tables for your model in its datasheet.\n\n## Instructions\n\nLet's improve the thermometer to show the degree character on the LCD.\n\n1. Bind 2 to `DIG`.\n2. Add one more input pin for the `concat` node by grabbing the handle.\n3. Bind \"\\x99\" instead of \"C\".\n4. Bind \"C\" to the latest pin of `concat`.\n5. Upload the program.",
          "id": "rJBpp5JKV",
          "position": {
            "x": 0,
            "y": 0,
            "units": "slots"
          },
          "size": {
            "height": 7,
            "width": 7,
            "units": "slots"
          }
        }
      },
      "path": "@/210-string-formatting"
    },
    "@/211-units-of-measure": {
      "links": {
        "Bk9usEzYV": {
          "id": "Bk9usEzYV",
          "input": {
            "nodeId": "H1E_oNGF4",
            "pinKey": "Skd9Qa_8W"
          },
          "output": {
            "nodeId": "SyeS9M2kt4",
            "pinKey": "rkFgMITM-"
          }
        },
        "S1ketFxXH": {
          "id": "S1ketFxXH",
          "input": {
            "nodeId": "Skn1YFx7r",
            "pinKey": "BJ3DAE1QS"
          },
          "output": {
            "nodeId": "Hk_2f3yYV",
            "pinKey": "rksccsp-W"
          }
        },
        "rJBFiNGtN": {
          "id": "rJBFiNGtN",
          "input": {
            "nodeId": "Hk_2f3yYV",
            "pinKey": "BkeKcj6ZZ"
          },
          "output": {
            "nodeId": "H1E_oNGF4",
            "pinKey": "H1kiQaO8W"
          }
        }
      },
      "nodes": {
        "H1E_oNGF4": {
          "id": "H1E_oNGF4",
          "position": {
            "x": 9,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/units/c-to-f"
        },
        "HkRTG31KE": {
          "boundLiterals": {
            "ByNiWkt8Z": "D13"
          },
          "id": "HkRTG31KE",
          "position": {
            "x": 13,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/common-hardware/button"
        },
        "Hk_2f3yYV": {
          "boundLiterals": {
            "BkeKcj6ZZ-$1": "\"\\x99\"",
            "BkeKcj6ZZ-$2": "\"C\"",
            "Hkqu9oaWb": "\"Temp: \""
          },
          "arityLevel": 3,
          "id": "Hk_2f3yYV",
          "position": {
            "x": 8,
            "y": 3,
            "units": "slots"
          },
          "type": "xod/core/concat"
        },
        "Skn1YFx7r": {
          "id": "Skn1YFx7r",
          "position": {
            "x": 8,
            "y": 4,
            "units": "slots"
          },
          "type": "xod-dev/text-lcd/text-lcd-i2c-16x2"
        },
        "SyeS9M2kt4": {
          "id": "SyeS9M2kt4",
          "position": {
            "x": 9,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/common-hardware/thermometer-tmp36"
        }
      },
      "comments": {
        "ByAtz2JY4": {
          "content": "# Units of Measure\n\nThe standard `xod/units` library contains a few nodes for converting some popular units. For example, Celsius to Fahrenheit, degrees to radians and so on.\n\nOne of these nodes (`c-to-f`) is already on the patch and the program shows temperature in Fahrenheit.\n\n## Exercise\n\nLet's improve the program to see a temperature in Fahrenheit only when the button is pressed.\n\n1. Add `if-else` below `button`.\n2. Link `PRS` with `COND`.\n3. Link `Tc` with `F`.\n4. Link output from `c-to-f` with `T`.\n5. Link `R` with the second pin of `concat`.\n6. Upload the program.\n\nGreat! However, we still get a \"C\" on the LCD, even when the temperature converted to the Fahrenheit. Let's fix it.\n\n1. Add one more `if-else`.\n2. Link `PRS` to the new `COND` pin.\n3. Bind `\"F\"` to the `T` pin, and `\"C\"` to the `F` pin.\n4. Link `R` with the latest pin of the `concat` node.\n5. Upload the program again.",
          "id": "ByAtz2JY4",
          "position": {
            "x": 0,
            "y": 0,
            "units": "slots"
          },
          "size": {
            "height": 7,
            "width": 7,
            "units": "slots"
          }
        },
        "S19HjZfcV": {
          "content": "## 👆 Remember the quotes\n\nAs was mentioned, the `if-else` node can work with numbers *and* strings depending on the incoming value type. The `\"F\"` and `\"C\"` values you bind have to be put in quotes so that XOD knows what data type do you mean.\n\nSee the [generic nodes guide](https://xod.io/docs/guide/generics/?utm_source=ide&utm_medium=ide_comment&utm_campaign=tutorial) for better understanding.",
          "id": "S19HjZfcV",
          "position": {
            "x": 16,
            "y": 3,
            "units": "slots"
          },
          "size": {
            "height": 3,
            "width": 7,
            "units": "slots"
          }
        }
      },
      "path": "@/211-units-of-measure"
    },
    "@/300-creating-nodes": {
      "comments": {
        "HJmjFoNFV": {
          "content": "# Creating Your Own Nodes\n\nIn this part of the tutorial, you will learn how to create your own XOD nodes.\n\nWe will take an existing patch and *extract* a part of it into a separate node with a few input pins to control its parameters.\n\nThen we will add labels and descriptions that will be displayed in the help panel for our node, just like for the XOD standard library.",
          "id": "HJmjFoNFV",
          "position": {
            "x": 1,
            "y": 1,
            "units": "slots"
          },
          "size": {
            "height": 3,
            "width": 7,
            "units": "slots"
          }
        }
      },
      "path": "@/300-creating-nodes"
    },
    "@/301-create-new-patch": {
      "links": {
        "BJosTaOKN": {
          "id": "BJosTaOKN",
          "input": {
            "nodeId": "BktiaTOtV",
            "pinKey": "HkXK-dGob"
          },
          "output": {
            "nodeId": "H1_YaadK4",
            "pinKey": "rJqfIRdHwkW"
          }
        },
        "H1sKTTuKE": {
          "id": "H1sKTTuKE",
          "input": {
            "nodeId": "H1_YaadK4",
            "pinKey": "S1dG8AOBPJW"
          },
          "output": {
            "nodeId": "BJpLTauYE",
            "pinKey": "B19RYS3lW"
          }
        },
        "HkO96adK4": {
          "id": "HkO96adK4",
          "input": {
            "nodeId": "BJpLTauYE",
            "pinKey": "rJg00Nhe-"
          },
          "output": {
            "nodeId": "Hy19pauKN",
            "pinKey": "ByfGSDjQE"
          }
        },
        "SJ5tppdtV": {
          "id": "SJ5tppdtV",
          "input": {
            "nodeId": "H1_YaadK4",
            "pinKey": "r1tz8CdBDkb"
          },
          "output": {
            "nodeId": "Hkh7TTOtN",
            "pinKey": "HktZUCdrPkZ"
          }
        },
        "rkDqaadKE": {
          "id": "rkDqaadKE",
          "input": {
            "nodeId": "Hkh7TTOtN",
            "pinKey": "HJjZLRdBw1-"
          },
          "output": {
            "nodeId": "Hy19pauKN",
            "pinKey": "ByfGSDjQE"
          }
        }
      },
      "nodes": {
        "BJpLTauYE": {
          "boundLiterals": {
            "HJbACN3gb": "0.7"
          },
          "id": "BJpLTauYE",
          "position": {
            "x": 12,
            "y": 4,
            "units": "slots"
          },
          "type": "xod/core/greater"
        },
        "BktiaTOtV": {
          "size": {
            "height": 1,
            "width": 2,
            "units": "slots"
          },
          "id": "BktiaTOtV",
          "position": {
            "x": 9,
            "y": 7,
            "units": "slots"
          },
          "type": "xod/debug/watch"
        },
        "H1_YaadK4": {
          "id": "H1_YaadK4",
          "position": {
            "x": 9,
            "y": 5,
            "units": "slots"
          },
          "type": "xod/core/nor"
        },
        "Hkh7TTOtN": {
          "boundLiterals": {
            "SJqZ8COrDkW": "0.4"
          },
          "id": "Hkh7TTOtN",
          "position": {
            "x": 9,
            "y": 4,
            "units": "slots"
          },
          "type": "xod/core/less"
        },
        "Hy19pauKN": {
          "boundLiterals": {
            "ByfGSDjQE": "0.5"
          },
          "size": {
            "height": 1,
            "width": 2,
            "units": "slots"
          },
          "id": "Hy19pauKN",
          "position": {
            "x": 9,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/debug/tweak-number"
        }
      },
      "comments": {
        "HyUpM3Z5E": {
          "content": "For the rest of this part of the tutorial we’ll evolve the node chapter after the chapter and effectively create many versions of it with incremental improvements. We recommend to mirror the improvements to the sole patch you created just now.",
          "id": "HyUpM3Z5E",
          "position": {
            "x": -1,
            "y": 6,
            "units": "slots"
          },
          "size": {
            "height": 2,
            "width": 8,
            "units": "slots"
          }
        },
        "SkZ6KsEFE": {
          "content": "# Creating a New Patch\n\nHere is a patch that checks if a number is between `0.4` and `0.7`. Let's make it reusable by converting into a node that takes three numbers and outputs a boolean. The first number is the one we want to check and the other two are boundaries instead of the hard-coded `0.4` and `0.7`.\n\n⚠️ Before you proceed, remember the location of this chapter in the Project Browser to come back after you complete the instructions. Keeping the track might be easier if you open [this part of the tutorial in a web-browser](https://xod.io/docs/tutorial/301-create-new-patch/?utm_source=ide&utm_medium=ide_comment&utm_campaign=tutorial).\n\n## Instructions\n\n1. Select `less`, `greater`, and `nor` nodes  and copy them to the clipboard.\n2. Select File -> New Patch... from the main menu.\n3. Choose a name (`between` is a nice one).\n4. Your new patch will open in a new tab. Paste the nodes that you copied earlier there.\n",
          "id": "SkZ6KsEFE",
          "position": {
            "x": -1,
            "y": 1,
            "units": "slots"
          },
          "size": {
            "height": 5,
            "width": 8,
            "units": "slots"
          }
        }
      },
      "path": "@/301-create-new-patch"
    },
    "@/302-check-your-new-patch": {
      "links": {
        "BkXJAVectE": {
          "id": "BkXJAVectE",
          "input": {
            "nodeId": "S1-yRVxqK4",
            "pinKey": "S1dG8AOBPJW"
          },
          "output": {
            "nodeId": "rklyREgqtN",
            "pinKey": "B19RYS3lW"
          }
        },
        "BkfyRNgqFE": {
          "id": "BkfyRNgqFE",
          "input": {
            "nodeId": "S1-yRVxqK4",
            "pinKey": "r1tz8CdBDkb"
          },
          "output": {
            "nodeId": "rJyCNl9YE",
            "pinKey": "HktZUCdrPkZ"
          }
        }
      },
      "nodes": {
        "S1-yRVxqK4": {
          "id": "S1-yRVxqK4",
          "position": {
            "x": 11,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/core/nor"
        },
        "rJyCNl9YE": {
          "boundLiterals": {
            "SJqZ8COrDkW": "0.4"
          },
          "id": "rJyCNl9YE",
          "position": {
            "x": 11,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/core/less"
        },
        "rklyREgqtN": {
          "boundLiterals": {
            "HJbACN3gb": "0.7"
          },
          "id": "rklyREgqtN",
          "position": {
            "x": 14,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/core/greater"
        }
      },
      "comments": {
        "Sys38g5FN": {
          "content": "# Check Your New Patch\n\nIf the `between` patch you’ve created looks like this one, you did everything right!\n\nContinue to the next chapter.\n",
          "id": "Sys38g5FN",
          "position": {
            "x": 0,
            "y": 0,
            "units": "slots"
          },
          "size": {
            "height": 4,
            "width": 9,
            "units": "slots"
          }
        }
      },
      "path": "@/302-check-your-new-patch"
    },
    "@/303-add-terminals": {
      "links": {
        "BJId0a_FV": {
          "id": "BJId0a_FV",
          "input": {
            "nodeId": "r1gT8CaOYE",
            "pinKey": "rJg00Nhe-"
          },
          "output": {
            "nodeId": "SkX_Ca_YV",
            "pinKey": "__out__"
          }
        },
        "HyfaUCp_FE": {
          "id": "HyfaUCp_FE",
          "input": {
            "nodeId": "rk-pLC6uYV",
            "pinKey": "r1tz8CdBDkb"
          },
          "output": {
            "nodeId": "S1T8RTdKV",
            "pinKey": "HktZUCdrPkZ"
          }
        },
        "SJsvAaOFN": {
          "id": "SJsvAaOFN",
          "input": {
            "nodeId": "ByYwA6dKN",
            "pinKey": "__in__"
          },
          "output": {
            "nodeId": "rk-pLC6uYV",
            "pinKey": "rJqfIRdHwkW"
          }
        },
        "ryVOAp_YE": {
          "id": "ryVOAp_YE",
          "input": {
            "nodeId": "S1T8RTdKV",
            "pinKey": "HJjZLRdBw1-"
          },
          "output": {
            "nodeId": "SkX_Ca_YV",
            "pinKey": "__out__"
          }
        },
        "ryma8Cp_t4": {
          "id": "ryma8Cp_t4",
          "input": {
            "nodeId": "rk-pLC6uYV",
            "pinKey": "S1dG8AOBPJW"
          },
          "output": {
            "nodeId": "r1gT8CaOYE",
            "pinKey": "B19RYS3lW"
          }
        }
      },
      "nodes": {
        "ByYwA6dKN": {
          "id": "ByYwA6dKN",
          "position": {
            "x": 10,
            "y": 6,
            "units": "slots"
          },
          "type": "xod/patch-nodes/output-boolean"
        },
        "S1T8RTdKV": {
          "boundLiterals": {
            "SJqZ8COrDkW": "0.4"
          },
          "id": "S1T8RTdKV",
          "position": {
            "x": 10,
            "y": 3,
            "units": "slots"
          },
          "type": "xod/core/less"
        },
        "SkX_Ca_YV": {
          "id": "SkX_Ca_YV",
          "position": {
            "x": 10,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/patch-nodes/input-number"
        },
        "r1gT8CaOYE": {
          "boundLiterals": {
            "HJbACN3gb": "0.7"
          },
          "id": "r1gT8CaOYE",
          "position": {
            "x": 13,
            "y": 3,
            "units": "slots"
          },
          "type": "xod/core/greater"
        },
        "rk-pLC6uYV": {
          "id": "rk-pLC6uYV",
          "position": {
            "x": 10,
            "y": 4,
            "units": "slots"
          },
          "type": "xod/core/nor"
        }
      },
      "comments": {
        "B1nOwhZq4": {
          "content": "## Pin naming convention\n\nConventionally XOD uses pin labels that are similar to IC leg labels. The labels contain at most four characters, and usually, they are mnemonics or abbreviations. The restriction allows rendering patches quite densely.",
          "id": "B1nOwhZq4",
          "position": {
            "x": 13,
            "y": 5,
            "units": "slots"
          },
          "size": {
            "height": 2,
            "width": 8,
            "units": "slots"
          }
        },
        "rkyWciVFV": {
          "content": "# Terminals\n\nWe need a way for the `between` node to get values in and put values out. In XOD patch nodes interact with the outside world using terminal nodes. You can find the terminal nodes in `xod/patch-nodes` library, they are called `input-number`, `input-pulse`, `output-boolean`, etc.\n\nOn this patch, we already placed an `input-number` and `output-boolean` instead of `tweak-number` and `watch`. The terminals give our node one number input pin and one boolean output. You can check it out by invoking the help box for the node in Project Browser.\n\n## Instructions\n\n1. Reflect the changes to your `between` patch: copy/paste the `IN` and `OUT` terminals there and link them accordingly.\n1. Add two more `input-number`s.\n2. Connect them to `less` and `greater`'s pins instead of hardcoded `0.4` and `0.7` values.\n3. Label the new terminals as `MIN` and `MAX` using Inspector.\n4. Check how the node looks now in the help panel.\n\nNote that node's pin order is determined by the order of respective terminals. Try to reorder the input terminals and look how it affects the preview in the help panel.",
          "id": "rkyWciVFV",
          "position": {
            "x": 0,
            "y": 0,
            "units": "slots"
          },
          "size": {
            "height": 5,
            "width": 8,
            "units": "slots"
          }
        }
      },
      "path": "@/303-add-terminals"
    },
    "@/304-use-new-node": {
      "links": {
        "HyVFAaOY4": {
          "id": "HyVFAaOY4",
          "input": {
            "nodeId": "ry4r9sVtV",
            "pinKey": "SkX_Ca_YV"
          },
          "output": {
            "nodeId": "rkZKC6dF4",
            "pinKey": "ByfGSDjQE"
          }
        },
        "Sk65C6uY4": {
          "id": "Sk65C6uY4",
          "input": {
            "nodeId": "HyKqCTOFN",
            "pinKey": "HkXK-dGob"
          },
          "output": {
            "nodeId": "ry4r9sVtV",
            "pinKey": "ByYwA6dKN"
          }
        }
      },
      "nodes": {
        "HyKqCTOFN": {
          "size": {
            "height": 1,
            "width": 2,
            "units": "slots"
          },
          "id": "HyKqCTOFN",
          "position": {
            "x": 14,
            "y": 5,
            "units": "slots"
          },
          "type": "xod/debug/watch"
        },
        "rkZKC6dF4": {
          "boundLiterals": {
            "ByfGSDjQE": "0.5"
          },
          "size": {
            "height": 1,
            "width": 2,
            "units": "slots"
          },
          "id": "rkZKC6dF4",
          "position": {
            "x": 14,
            "y": 3,
            "units": "slots"
          },
          "type": "xod/debug/tweak-number"
        },
        "ry4r9sVtV": {
          "boundLiterals": {
            "SybBlRdtN": "0.7",
            "rygHlRuFV": "0.4"
          },
          "id": "ry4r9sVtV",
          "position": {
            "x": 14,
            "y": 4,
            "units": "slots"
          },
          "type": "@/303-add-terminals"
        }
      },
      "comments": {
        "BkIsFbYY4": {
          "content": "# Using Your New Node\n\nNow you can use the new node just like any other.\n\n## Instructions\n\n1. Drag’n’drop your `between` node from Project Browser to this patch and replace the `303-...` node with it.\n2. Add a few more `between`’s: double click on empty space and type “between”. Your node is here and denoted as `@/between`.\n3. Bind some values to the inputs of new `between` nodes, add some `tweak-number` and `watch` nodes to play.\n4. Run simulation to check how the new node works.",
          "id": "BkIsFbYY4",
          "position": {
            "x": 4,
            "y": 2,
            "units": "slots"
          },
          "size": {
            "height": 4,
            "width": 8,
            "units": "slots"
          }
        },
        "H18QI2Z5E": {
          "content": "### Paths starting with @/\n\nThe at (*@*) symbol in the patch path shown by the quick search suggester denotes “*this project*”. That is, the node is located in the current projects, not in a library.",
          "id": "H18QI2Z5E",
          "position": {
            "x": 5,
            "y": 6,
            "units": "slots"
          },
          "size": {
            "height": 2,
            "width": 7,
            "units": "slots"
          }
        },
        "SkyiV2bcE": {
          "content": "<- Place your `between` node instead",
          "id": "SkyiV2bcE",
          "position": {
            "x": 16,
            "y": 4,
            "units": "slots"
          },
          "size": {
            "height": 1,
            "width": 4,
            "units": "slots"
          }
        }
      },
      "path": "@/304-use-new-node"
    },
    "@/306-next-steps": {
      "comments": {
        "Hkln2lqFV": {
          "content": "# Next Steps\n\nWhat you've just learned about making nodes is totally sufficient for day-to-day xoding.\n\nIf you are interested in a more in-depth guide on creating nodes, check out the [docs on xod.io](https://xod.io/docs/guide/?utm_source=ide&utm_medium=ide_comment&utm_campaign=tutorial#making-your-own-nodes). There you will learn about creating nodes in C++, testing them using tabtests and wrapping existing Arduino libraries.",
          "id": "Hkln2lqFV",
          "position": {
            "x": 0,
            "y": 0,
            "units": "slots"
          },
          "size": {
            "height": 3,
            "width": 10,
            "units": "slots"
          }
        }
      },
      "path": "@/306-next-steps"
    },
    "@/305-document-it": {
      "description": "Checks whether a number falls inside the range specified",
      "links": {
        "H1ASvh-9E": {
          "id": "H1ASvh-9E",
          "input": {
            "nodeId": "ryfnfwh-9V",
            "pinKey": "HJbACN3gb"
          },
          "output": {
            "nodeId": "SkOHvnW94",
            "pinKey": "__out__"
          }
        },
        "HyI3zwh-c4": {
          "id": "HyI3zwh-c4",
          "input": {
            "nodeId": "S1hMvhZq4",
            "pinKey": "__in__"
          },
          "output": {
            "nodeId": "rJX3MDhW5V",
            "pinKey": "rJqfIRdHwkW"
          }
        },
        "SJHhfv3Z9N": {
          "id": "SJHhfv3Z9N",
          "input": {
            "nodeId": "rJX3MDhW5V",
            "pinKey": "r1tz8CdBDkb"
          },
          "output": {
            "nodeId": "rye3zPhZcV",
            "pinKey": "HktZUCdrPkZ"
          }
        },
        "SkDhfDh-5E": {
          "id": "SkDhfDh-5E",
          "input": {
            "nodeId": "rye3zPhZcV",
            "pinKey": "HJjZLRdBw1-"
          },
          "output": {
            "nodeId": "HyWnMvnZqV",
            "pinKey": "__out__"
          }
        },
        "r1LHDn-c4": {
          "id": "r1LHDn-c4",
          "input": {
            "nodeId": "rye3zPhZcV",
            "pinKey": "SJqZ8COrDkW"
          },
          "output": {
            "nodeId": "rJkBDh-qV",
            "pinKey": "__out__"
          }
        },
        "ry42zPhb94": {
          "id": "ry42zPhb94",
          "input": {
            "nodeId": "ryfnfwh-9V",
            "pinKey": "rJg00Nhe-"
          },
          "output": {
            "nodeId": "HyWnMvnZqV",
            "pinKey": "__out__"
          }
        },
        "ryOnfwhb54": {
          "id": "ryOnfwhb54",
          "input": {
            "nodeId": "rJX3MDhW5V",
            "pinKey": "S1dG8AOBPJW"
          },
          "output": {
            "nodeId": "ryfnfwh-9V",
            "pinKey": "B19RYS3lW"
          }
        }
      },
      "nodes": {
        "HyWnMvnZqV": {
          "id": "HyWnMvnZqV",
          "position": {
            "x": 4,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/patch-nodes/input-number"
        },
        "S1hMvhZq4": {
          "id": "S1hMvhZq4",
          "position": {
            "x": 4,
            "y": 6,
            "units": "slots"
          },
          "type": "xod/patch-nodes/output-boolean"
        },
        "SkOHvnW94": {
          "label": "MAX",
          "id": "SkOHvnW94",
          "position": {
            "x": 8,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/patch-nodes/input-number"
        },
        "rJX3MDhW5V": {
          "id": "rJX3MDhW5V",
          "position": {
            "x": 4,
            "y": 4,
            "units": "slots"
          },
          "type": "xod/core/nor"
        },
        "rJkBDh-qV": {
          "description": "The lower boundary of the range. Inclusive.",
          "label": "MIN",
          "id": "rJkBDh-qV",
          "position": {
            "x": 5,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/patch-nodes/input-number"
        },
        "rye3zPhZcV": {
          "boundLiterals": {
            "SJqZ8COrDkW": "0.4"
          },
          "id": "rye3zPhZcV",
          "position": {
            "x": 4,
            "y": 3,
            "units": "slots"
          },
          "type": "xod/core/less"
        },
        "ryfnfwh-9V": {
          "boundLiterals": {
            "HJbACN3gb": "0.7"
          },
          "id": "ryfnfwh-9V",
          "position": {
            "x": 7,
            "y": 3,
            "units": "slots"
          },
          "type": "xod/core/greater"
        }
      },
      "comments": {
        "r1Hd6WYFE": {
          "content": "# Adding Documentation\n\nThe only thing our node lacks is proper documentation. The pins are unlabeled and the help panel does not describe what it does at all. Let's fix that.\n\n## Instructions\n\nApply the instructions to your `between` node.\n\n1. Using Inspector add descriptions to the terminal nodes. They will become pin descriptions in the help panel.\n2. Click on any empty space on the patch to see the Inspector for the whole patch.\n3. Add the description for the whole patch. It will become the node's description for the node in the help panel.\n4. Invoke the help box to see how the documentation renders.",
          "id": "r1Hd6WYFE",
          "position": {
            "x": -6,
            "y": 0,
            "units": "slots"
          },
          "size": {
            "height": 4,
            "width": 8,
            "units": "slots"
          }
        }
      },
      "path": "@/305-document-it"
    },
    "@/999-the-end": {
      "links": {
        "HJYxx6G5YV": {
          "id": "HJYxx6G5YV",
          "input": {
            "nodeId": "H1NexpMqFV",
            "pinKey": "H1v-80uHDyZ"
          },
          "output": {
            "nodeId": "SkHxxTMctV",
            "pinKey": "BkdbLAuSPyZ"
          }
        },
        "ryqxgpMqK4": {
          "id": "ryqxgpMqK4",
          "input": {
            "nodeId": "Hyzllaz5KE",
            "pinKey": "H1v-80uHDyZ"
          },
          "output": {
            "nodeId": "S1wgxpM9YV",
            "pinKey": "BkdbLAuSPyZ"
          }
        }
      },
      "nodes": {
        "ByLxgpG9Y4": {
          "id": "ByLxgpG9Y4",
          "position": {
            "x": 7,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/patch-nodes/output-number"
        },
        "H1NexpMqFV": {
          "id": "H1NexpMqFV",
          "position": {
            "x": 8,
            "y": 4,
            "units": "slots"
          },
          "type": "xod/math/ceil"
        },
        "Hk-xx6z9KN": {
          "id": "Hk-xx6z9KN",
          "position": {
            "x": 5,
            "y": 4,
            "units": "slots"
          },
          "type": "xod/math/ceil"
        },
        "Hyzllaz5KE": {
          "id": "Hyzllaz5KE",
          "position": {
            "x": 3,
            "y": 4,
            "units": "slots"
          },
          "type": "xod/math/ceil"
        },
        "S1uxgaGqYV": {
          "id": "S1uxgaGqYV",
          "position": {
            "x": 4,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/patch-nodes/output-number"
        },
        "S1wgxpM9YV": {
          "id": "S1wgxpM9YV",
          "position": {
            "x": 1,
            "y": 3,
            "units": "slots"
          },
          "type": "xod/math/ceil"
        },
        "SkHxxTMctV": {
          "id": "SkHxxTMctV",
          "position": {
            "x": 10,
            "y": 3,
            "units": "slots"
          },
          "type": "xod/math/ceil"
        },
        "Skgeaz5tV": {
          "id": "Skgeaz5tV",
          "position": {
            "x": 4,
            "y": 4,
            "units": "slots"
          },
          "type": "xod/math/ceil"
        },
        "SymllpfqYN": {
          "id": "SymllpfqYN",
          "position": {
            "x": 6,
            "y": 4,
            "units": "slots"
          },
          "type": "xod/math/ceil"
        },
        "rkxxlpM9FE": {
          "id": "rkxxlpM9FE",
          "position": {
            "x": 7,
            "y": 4,
            "units": "slots"
          },
          "type": "xod/math/ceil"
        }
      },
      "comments": {
        "rJoxlaz9Y4": {
          "content": "# Congratulations!\n\nYou have completed the tutorial. Hope you enjoyed it. May we ask to rate it?\n\n[★★★★★ Excellent!](https://forum.xod.io/t/tutorial-feedback/457/?utm_source=ide&utm_medium=ide_comment&utm_campaign=tutorial_99&utm_term=5_stars)\n[★★★★ Very Good](https://forum.xod.io/t/tutorial-feedback/457/?utm_source=ide&utm_medium=ide_comment&utm_campaign=tutorial_99&utm_term=4_stars)\n[★★★ Okay](https://forum.xod.io/t/tutorial-feedback/457/?utm_source=ide&utm_medium=ide_comment&utm_campaign=tutorial_99&utm_term=3_stars)\n[★★ So-so](https://forum.xod.io/t/tutorial-feedback/457/?utm_source=ide&utm_medium=ide_comment&utm_campaign=tutorial_99&utm_term=2_stars)\n[★ Poor](https://forum.xod.io/t/tutorial-feedback/457/?utm_source=ide&utm_medium=ide_comment&utm_campaign=tutorial_99&utm_term=1_star)\n\nIf you would like to give more detailed feedback, we’ll happy to hear it on the rating page.",
          "id": "rJoxlaz9Y4",
          "position": {
            "x": 0,
            "y": -1,
            "units": "slots"
          },
          "size": {
            "height": 3,
            "width": 11,
            "units": "slots"
          }
        }
      },
      "path": "@/999-the-end"
    },
    "@/003-inspector": {
      "links": {
        "Hkfe2DzTPE": {
          "id": "Hkfe2DzTPE",
          "input": {
            "nodeId": "H1WehvGpvV",
            "pinKey": "HkXK-dGob"
          },
          "output": {
            "nodeId": "H1gx3wfavN",
            "pinKey": "r1yhZRd8W"
          }
        },
        "Symg2wGaPE": {
          "id": "Symg2wGaPE",
          "input": {
            "nodeId": "H1gx3wfavN",
            "pinKey": "HJAq-A_8-"
          },
          "output": {
            "nodeId": "Syg2wfaDV",
            "pinKey": "HJU8CE2lW"
          }
        }
      },
      "nodes": {
        "H1WehvGpvV": {
          "size": {
            "height": 1,
            "width": 2,
            "units": "slots"
          },
          "id": "H1WehvGpvV",
          "position": {
            "x": 9,
            "y": 2,
            "units": "slots"
          },
          "type": "xod/debug/watch"
        },
        "H1gx3wfavN": {
          "id": "H1gx3wfavN",
          "position": {
            "x": 9,
            "y": 1,
            "units": "slots"
          },
          "type": "xod/core/count"
        },
        "Syg2wfaDV": {
          "boundLiterals": {
            "B13SCNhl-": "1"
          },
          "id": "Syg2wfaDV",
          "position": {
            "x": 10,
            "y": 0,
            "units": "slots"
          },
          "type": "xod/core/clock"
        }
      },
      "comments": {
        "SkpzuzTP4": {
          "content": "# Nodes, Pins, Inspector\n\nNow that we've seen our program in action, let's take a closer look at it and tweak it a little.\n\nThe dark gray boxes on the patch are called *nodes*. A node is a visual representation of some physical device or some function: from math and logic to more complicated stuff like producing, filtering or accumulating values, measuring time, etc.\n\nOur program consists of `clock`, `count`, and `watch` nodes. `clock` ticks at a given interval, `count` increments its value with each incoming tick, and `watch` displays the value during debug or simulation sessions.\n\nThe small colored circles on the nodes are called *pins*. They are used to transfer data between nodes. Pins are divided into inputs and outputs. Inputs are always on the top side of the nodes, outputs are on the bottom.\n\nNodes process the values from input pins and take some action or give a result. The values come to input pins from other nodes outputs through links during program execution or are constantly *bound* to pins using *Inspector* during program creation.\n\n## Exercise\n\nLet’s learn how to bind values to input pins with the Inspector pane.\n\n1. Click on the `clock` node. You will see the Inspector pane under Project Browser.\n\n2. In the Inspector, change the `IVAL` value from `1` to `0.1`.\n\nRun the simulation. Notice that the counter value increments much faster. Try to bind another value to counter’s `STEP` and see how it affects the behavior.",
          "id": "SkpzuzTP4",
          "position": {
            "x": -1,
            "y": -1,
            "units": "slots"
          },
          "size": {
            "height": 8,
            "width": 9,
            "units": "slots"
          }
        }
      },
      "path": "@/003-inspector"
    },
    "@/pan-stepper": {
      "attachments": [
        {
          "filename": "colony-kit.png",
          "encoding": "base64",
          "content": "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"
        }
      ],
      "links": {
        "HJWbyqtI0Aq": {
          "id": "HJWbyqtI0Aq",
          "output": {
            "nodeId": "rkyWk9K8RRq",
            "pinKey": "BJ--G1tI-"
          },
          "input": {
            "nodeId": "rkd1cKIACq",
            "pinKey": "Bkh8A_Sv1-"
          }
        },
        "S1GWk9Y8009": {
          "id": "S1GWk9Y8009",
          "output": {
            "nodeId": "rkd1cKIACq",
            "pinKey": "HkyxURuSPyW"
          },
          "input": {
            "nodeId": "BkD1cK8RC5",
            "pinKey": "SyXEgBy7B"
          }
        },
        "S17ZyctUARc": {
          "id": "S17ZyctUARc",
          "output": {
            "nodeId": "H1DeJ5FUR0c",
            "pinKey": "rksccsp-W"
          },
          "input": {
            "nodeId": "BkD1cK8RC5",
            "pinKey": "r1GaXeSy7B"
          }
        },
        "H1E-JcYURA5": {
          "id": "H1E-JcYURA5",
          "output": {
            "nodeId": "H1H15KUC0q",
            "pinKey": "rksccsp-W"
          },
          "input": {
            "nodeId": "BkD1cK8RC5",
            "pinKey": "B1-67xBy7B"
          }
        },
        "BkrZkqF8RRq": {
          "id": "BkrZkqF8RRq",
          "output": {
            "nodeId": "rJBxJqtIA09",
            "pinKey": "r1H_oipZb"
          },
          "input": {
            "nodeId": "H1H15KUC0q",
            "pinKey": "Hkqu9oaWb"
          }
        },
        "ryUZJcFUCC9": {
          "id": "ryUZJcFUCC9",
          "output": {
            "nodeId": "S1FJ5FIA0q",
            "pinKey": "r1H_oipZb"
          },
          "input": {
            "nodeId": "H1DeJ5FUR0c",
            "pinKey": "Hkqu9oaWb"
          }
        },
        "ByPbyqKLCR5": {
          "id": "ByPbyqKLCR5",
          "output": {
            "nodeId": "r1QJ9YIAC9",
            "pinKey": "HyRmUCdBDkZ"
          },
          "input": {
            "nodeId": "rJBxJqtIA09",
            "pinKey": "BJlHojaWZ"
          }
        },
        "S1ObJ5FLCCc": {
          "id": "S1ObJ5FLCCc",
          "output": {
            "nodeId": "r1QJ9YIAC9",
            "pinKey": "HyRmUCdBDkZ"
          },
          "input": {
            "nodeId": "H1_xk5FLCRc",
            "pinKey": "SkdIRuBD1b"
          }
        },
        "rJF-ycKIRR9": {
          "id": "rJF-ycKIRR9",
          "output": {
            "nodeId": "H1_xk5FLCRc",
            "pinKey": "BkqLCOSw1W"
          },
          "input": {
            "nodeId": "rk9gJ5YLACc",
            "pinKey": "B1GfLR_SPk-"
          }
        },
        "rJqZycKUAAc": {
          "id": "rJqZycKUAAc",
          "output": {
            "nodeId": "ryLl1cFLC0q",
            "pinKey": "B1x2RV3eZ"
          },
          "input": {
            "nodeId": "rk9gJ5YLACc",
            "pinKey": "SJ4zUC_BD1-"
          }
        },
        "HysZJcYICA9": {
          "id": "HysZJcYICA9",
          "output": {
            "nodeId": "ryLl1cFLC0q",
            "pinKey": "B1x2RV3eZ"
          },
          "input": {
            "nodeId": "B1KekcK8A05",
            "pinKey": "BJnQUR_BwyZ"
          }
        },
        "H1hZJcKLCA9": {
          "id": "H1hZJcKLCA9",
          "output": {
            "nodeId": "H1-JcFI0Aq",
            "pinKey": "BkQzLCurwJZ"
          },
          "input": {
            "nodeId": "B1KekcK8A05",
            "pinKey": "HkqmLAOrD1W"
          }
        },
        "B1aZ1qKIRAc": {
          "id": "B1aZ1qKIRAc",
          "output": {
            "nodeId": "B1lycK8R09",
            "pinKey": "BkqLCOSw1W"
          },
          "input": {
            "nodeId": "H1-JcFI0Aq",
            "pinKey": "SJ4zUC_BD1-"
          }
        },
        "S1RZ15KLCAq": {
          "id": "S1RZ15KLCAq",
          "output": {
            "nodeId": "H1GgkqKICRc",
            "pinKey": "HyRmUCdBDkZ"
          },
          "input": {
            "nodeId": "H1-JcFI0Aq",
            "pinKey": "B1GfLR_SPk-"
          }
        },
        "BJ1GJ5tLAC5": {
          "id": "BJ1GJ5tLAC5",
          "output": {
            "nodeId": "H1GgkqKICRc",
            "pinKey": "HyRmUCdBDkZ"
          },
          "input": {
            "nodeId": "S1FJ5FIA0q",
            "pinKey": "BJlHojaWZ"
          }
        },
        "H1lM1cYLAA5": {
          "id": "H1lM1cYLAA5",
          "output": {
            "nodeId": "ryLl1cFLC0q",
            "pinKey": "B1x2RV3eZ"
          },
          "input": {
            "nodeId": "B1lycK8R09",
            "pinKey": "SkdIRuBD1b"
          }
        },
        "rJWf1cKIRC9": {
          "id": "rJWf1cKIRC9",
          "output": {
            "nodeId": "SJfy5t8R05",
            "pinKey": "SyomIRurDJ-"
          },
          "input": {
            "nodeId": "r1QJ9YIAC9",
            "pinKey": "BypX80uSD1Z"
          }
        },
        "Bkmz15t80Aq": {
          "id": "Bkmz15t80Aq",
          "output": {
            "nodeId": "B1mx1qKLCAq",
            "pinKey": "SyomIRurDJ-"
          },
          "input": {
            "nodeId": "H1GgkqKICRc",
            "pinKey": "BypX80uSD1Z"
          }
        },
        "HkLzyqtUARc": {
          "id": "HkLzyqtUARc",
          "output": {
            "nodeId": "Hk4eJ9tLCRc",
            "pinKey": "B1x2RV3eZ"
          },
          "input": {
            "nodeId": "B1mx1qKLCAq",
            "pinKey": "BJnQUR_BwyZ"
          }
        },
        "BJuMJcYLRCq": {
          "id": "BJuMJcYLRCq",
          "output": {
            "nodeId": "r1Zlk9tLAR9",
            "pinKey": "B1x2RV3eZ"
          },
          "input": {
            "nodeId": "SJfy5t8R05",
            "pinKey": "BJnQUR_BwyZ"
          }
        },
        "rJ-715FUCC9": {
          "id": "rJ-715FUCC9",
          "output": {
            "nodeId": "rk9gJ5YLACc",
            "pinKey": "BkQzLCurwJZ"
          },
          "input": {
            "nodeId": "r1gbkqYI0C9",
            "pinKey": "HknMpkbxN"
          }
        },
        "SyzQJctLAC9": {
          "id": "SyzQJctLAC9",
          "output": {
            "nodeId": "B1KekcK8A05",
            "pinKey": "SyomIRurDJ-"
          },
          "input": {
            "nodeId": "r1gbkqYI0C9",
            "pinKey": "rk4L6JWx4"
          }
        },
        "HyXQ1qFUCRc": {
          "id": "HyXQ1qFUCRc",
          "output": {
            "nodeId": "rkyWk9K8RRq",
            "pinKey": "BJ--G1tI-"
          },
          "input": {
            "nodeId": "r1gbkqYI0C9",
            "pinKey": "SJbu6y-g4"
          }
        },
        "rk4QycKIRA5": {
          "id": "rk4QycKIRA5",
          "output": {
            "nodeId": "r1gbkqYI0C9",
            "pinKey": "SkdYTy-x4"
          },
          "input": {
            "nodeId": "rkd1cKIACq",
            "pinKey": "B1RU0OrDkb"
          }
        },
        "B1GeYVLJj": {
          "id": "B1GeYVLJj",
          "output": {
            "nodeId": "r1aJqYUACq",
            "pinKey": "BJ--G1tI-"
          },
          "input": {
            "nodeId": "rJAg19KURCq",
            "pinKey": "HJAq-A_8-"
          }
        },
        "HyGWKE8ys": {
          "id": "HyGWKE8ys",
          "output": {
            "nodeId": "ByikqYL0C5",
            "pinKey": "B1x2RV3eZ"
          },
          "input": {
            "nodeId": "rJAg19KURCq",
            "pinKey": "HJvqZ0dLZ"
          }
        },
        "B1CbFE81i": {
          "id": "B1CbFE81i",
          "output": {
            "nodeId": "rJAg19KURCq",
            "pinKey": "r1yhZRd8W"
          },
          "input": {
            "nodeId": "SJfy5t8R05",
            "pinKey": "HkqmLAOrD1W"
          }
        },
        "HyIzF4Iko": {
          "id": "HyIzF4Iko",
          "output": {
            "nodeId": "S1R1qF80Rc",
            "pinKey": "BJ--G1tI-"
          },
          "input": {
            "nodeId": "Bkpx1qFIRRq",
            "pinKey": "HJAq-A_8-"
          }
        },
        "ByCzKVIko": {
          "id": "ByCzKVIko",
          "output": {
            "nodeId": "Bkpx1qFIRRq",
            "pinKey": "r1yhZRd8W"
          },
          "input": {
            "nodeId": "r1QJ9YIAC9",
            "pinKey": "rkJ4URuHDJ-"
          }
        },
        "rkQKtNIJo": {
          "id": "rkQKtNIJo",
          "output": {
            "nodeId": "HkJek5F8RC9",
            "pinKey": "BJ--G1tI-"
          },
          "input": {
            "nodeId": "By2gJ5K8C0c",
            "pinKey": "HJAq-A_8-"
          }
        },
        "SkhYFEU1i": {
          "id": "SkhYFEU1i",
          "output": {
            "nodeId": "HkleJct8CR5",
            "pinKey": "BJ--G1tI-"
          },
          "input": {
            "nodeId": "ryolkctL0R9",
            "pinKey": "HJAq-A_8-"
          }
        },
        "BywcKEUJi": {
          "id": "BywcKEUJi",
          "output": {
            "nodeId": "ryolkctL0R9",
            "pinKey": "r1yhZRd8W"
          },
          "input": {
            "nodeId": "H1GgkqKICRc",
            "pinKey": "rkJ4URuHDJ-"
          }
        },
        "SyC5YVIyo": {
          "id": "SyC5YVIyo",
          "output": {
            "nodeId": "By2gJ5K8C0c",
            "pinKey": "r1yhZRd8W"
          },
          "input": {
            "nodeId": "B1mx1qKLCAq",
            "pinKey": "HkqmLAOrD1W"
          }
        },
        "BJ0jFE8kj": {
          "id": "BJ0jFE8kj",
          "output": {
            "nodeId": "ByikqYL0C5",
            "pinKey": "B1x2RV3eZ"
          },
          "input": {
            "nodeId": "Bkpx1qFIRRq",
            "pinKey": "HJvqZ0dLZ"
          }
        },
        "BkLnKNLJo": {
          "id": "BkLnKNLJo",
          "output": {
            "nodeId": "ByikqYL0C5",
            "pinKey": "B1x2RV3eZ"
          },
          "input": {
            "nodeId": "By2gJ5K8C0c",
            "pinKey": "HJvqZ0dLZ"
          }
        },
        "HJ5hYVLys": {
          "id": "HJ5hYVLys",
          "output": {
            "nodeId": "ByikqYL0C5",
            "pinKey": "B1x2RV3eZ"
          },
          "input": {
            "nodeId": "ryolkctL0R9",
            "pinKey": "HJvqZ0dLZ"
          }
        }
      },
      "nodes": {
        "B1lycK8R09": {
          "boundLiterals": {
            "BytUCdHD1-": "360"
          },
          "id": "B1lycK8R09",
          "type": "xod/core/divide",
          "position": {
            "x": 14,
            "y": -11,
            "units": "slots"
          }
        },
        "H1-JcFI0Aq": {
          "id": "H1-JcFI0Aq",
          "type": "xod/core/multiply",
          "position": {
            "x": 13,
            "y": -9.642857142857142,
            "units": "slots"
          }
        },
        "SJfy5t8R05": {
          "id": "SJfy5t8R05",
          "type": "xod/core/add",
          "position": {
            "x": 0,
            "y": -12.642857142857142,
            "units": "slots"
          }
        },
        "r1QJ9YIAC9": {
          "id": "r1QJ9YIAC9",
          "type": "xod/core/subtract",
          "position": {
            "x": 4,
            "y": -11.642857142857142,
            "units": "slots"
          }
        },
        "H1H15KUC0q": {
          "boundLiterals": {
            "BkeKcj6ZZ": "\"RPM\""
          },
          "id": "H1H15KUC0q",
          "type": "xod/core/concat",
          "position": {
            "x": 0,
            "y": -10,
            "units": "slots"
          }
        },
        "BkD1cK8RC5": {
          "boundLiterals": {
            "HkGVlSkmB": "\"Running\""
          },
          "id": "BkD1cK8RC5",
          "type": "xod-dev/text-lcd/text-lcd-i2c-20x4",
          "position": {
            "x": -2,
            "y": -8,
            "units": "slots"
          }
        },
        "rkd1cKIACq": {
          "id": "rkd1cKIACq",
          "type": "xod/core/flip-flop",
          "position": {
            "x": 8,
            "y": -6.642857142857142,
            "units": "slots"
          }
        },
        "S1FJ5FIA0q": {
          "id": "S1FJ5FIA0q",
          "type": "xod/core/format-number",
          "position": {
            "x": 8,
            "y": -11.642857142857142,
            "units": "slots"
          }
        },
        "ByikqYL0C5": {
          "boundLiterals": {
            "B1x2RV3eZ": "10"
          },
          "id": "ByikqYL0C5",
          "type": "xod/core/constant-number",
          "position": {
            "x": -2,
            "y": -15,
            "units": "slots"
          }
        },
        "r1aJqYUACq": {
          "boundLiterals": {
            "ByNiWkt8Z": "D8"
          },
          "label": "RPM+",
          "id": "r1aJqYUACq",
          "type": "xod/common-hardware/button",
          "position": {
            "x": 1,
            "y": -15,
            "units": "slots"
          }
        },
        "S1R1qF80Rc": {
          "boundLiterals": {
            "ByNiWkt8Z": "D9"
          },
          "label": "RPM-",
          "id": "S1R1qF80Rc",
          "type": "xod/common-hardware/button",
          "position": {
            "x": 4,
            "y": -15,
            "units": "slots"
          }
        },
        "HkJek5F8RC9": {
          "boundLiterals": {
            "ByNiWkt8Z": "D11"
          },
          "label": "DEGREE+",
          "id": "HkJek5F8RC9",
          "type": "xod/common-hardware/button",
          "position": {
            "x": 13,
            "y": -15,
            "units": "slots"
          }
        },
        "HkleJct8CR5": {
          "boundLiterals": {
            "ByNiWkt8Z": "D10"
          },
          "label": "DEGREE-",
          "id": "HkleJct8CR5",
          "type": "xod/common-hardware/button",
          "position": {
            "x": 19,
            "y": -15,
            "units": "slots"
          }
        },
        "r1Zlk9tLAR9": {
          "boundLiterals": {
            "B1x2RV3eZ": "60"
          },
          "label": "RPM",
          "id": "r1Zlk9tLAR9",
          "type": "xod/core/constant-number",
          "position": {
            "x": -2,
            "y": -14,
            "units": "slots"
          }
        },
        "H1GgkqKICRc": {
          "id": "H1GgkqKICRc",
          "type": "xod/core/subtract",
          "position": {
            "x": 11,
            "y": -11.642857142857142,
            "units": "slots"
          }
        },
        "B1mx1qKLCAq": {
          "id": "B1mx1qKLCAq",
          "type": "xod/core/add",
          "position": {
            "x": 10,
            "y": -12.642857142857142,
            "units": "slots"
          }
        },
        "Hk4eJ9tLCRc": {
          "boundLiterals": {
            "B1x2RV3eZ": "360"
          },
          "label": "DEGREE",
          "id": "Hk4eJ9tLCRc",
          "type": "xod/core/constant-number",
          "position": {
            "x": 9,
            "y": -14,
            "units": "slots"
          }
        },
        "rJBxJqtIA09": {
          "id": "rJBxJqtIA09",
          "type": "xod/core/format-number",
          "position": {
            "x": 1,
            "y": -11,
            "units": "slots"
          }
        },
        "ryLl1cFLC0q": {
          "boundLiterals": {
            "B1x2RV3eZ": "1600"
          },
          "label": "STEP",
          "id": "ryLl1cFLC0q",
          "type": "xod/core/constant-number",
          "position": {
            "x": 10,
            "y": -11,
            "units": "slots"
          }
        },
        "H1DeJ5FUR0c": {
          "boundLiterals": {
            "BkeKcj6ZZ": "\"Degrees\""
          },
          "id": "H1DeJ5FUR0c",
          "type": "xod/core/concat",
          "position": {
            "x": 3,
            "y": -10,
            "units": "slots"
          }
        },
        "H1_xk5FLCRc": {
          "boundLiterals": {
            "BytUCdHD1-": "60"
          },
          "id": "H1_xk5FLCRc",
          "type": "xod/core/divide",
          "position": {
            "x": 8,
            "y": -10,
            "units": "slots"
          }
        },
        "B1KekcK8A05": {
          "id": "B1KekcK8A05",
          "type": "xod/core/add",
          "position": {
            "x": 12,
            "y": -8.642857142857142,
            "units": "slots"
          }
        },
        "rk9gJ5YLACc": {
          "id": "rk9gJ5YLACc",
          "type": "xod/core/multiply",
          "position": {
            "x": 9,
            "y": -9,
            "units": "slots"
          }
        },
        "ryolkctL0R9": {
          "label": "-DEGREE",
          "id": "ryolkctL0R9",
          "type": "xod/core/count",
          "position": {
            "x": 19,
            "y": -14,
            "units": "slots"
          }
        },
        "By2gJ5K8C0c": {
          "label": "+DEGREE",
          "id": "By2gJ5K8C0c",
          "type": "xod/core/count",
          "position": {
            "x": 12,
            "y": -14,
            "units": "slots"
          }
        },
        "Bkpx1qFIRRq": {
          "label": "-RPM",
          "id": "Bkpx1qFIRRq",
          "type": "xod/core/count",
          "position": {
            "x": 4,
            "y": -14,
            "units": "slots"
          }
        },
        "rJAg19KURCq": {
          "label": "+RPM",
          "id": "rJAg19KURCq",
          "type": "xod/core/count",
          "position": {
            "x": 0,
            "y": -14,
            "units": "slots"
          }
        },
        "rkyWk9K8RRq": {
          "boundLiterals": {
            "ByNiWkt8Z": "D12"
          },
          "label": "Start",
          "id": "rkyWk9K8RRq",
          "type": "xod/common-hardware/button",
          "position": {
            "x": 16,
            "y": -8.642857142857142,
            "units": "slots"
          }
        },
        "r1gbkqYI0C9": {
          "label": "Pan Stepper",
          "id": "r1gbkqYI0C9",
          "type": "nkrkv/stepdir/stepper",
          "position": {
            "x": 7,
            "y": -8,
            "units": "slots"
          }
        }
      },
      "path": "@/pan-stepper"
    }
  },
  "license": "MIT",
  "version": "0.29.0",
  "description": "A crash course tutorial baked as a project",
  "name": "welcome-to-xod"
}
