{"id":739,"date":"2026-09-21T12:08:50","date_gmt":"2026-09-21T12:08:50","guid":{"rendered":"https:\/\/circuitdigest.com\/wiki\/?page_id=739"},"modified":"2026-09-26T12:36:28","modified_gmt":"2026-09-26T12:36:28","slug":"litewing-blockly-wiki-page","status":"publish","type":"page","link":"https:\/\/circuitdigest.com\/wiki\/litewing-blockly-wiki-page\/","title":{"rendered":"LiteWing Blockly &#8211; Wiki Page"},"content":{"rendered":"\n<style>\n\/* ==========================================================================\n   LITEWING BLOCKLY WIKI - CLEAN SIDE-BY-SIDE PROFESSIONAL THEME\n   ========================================================================== *\/\n\n\/* 1. Remove Vertical Divider Line Between Sidebar and Page *\/\n@media (min-width: 922px) {\n  .ast-left-sidebar #secondary,\n  .ast-right-sidebar #secondary,\n  .ast-left-sidebar #primary,\n  .ast-right-sidebar #primary {\n    border-right: none !important;\n    border-left: none !important;\n    border: none !important;\n  }\n}\n\n\/* 2. Layout & Reading Width Constraints *\/\n.litewing-wiki-container {\n  max-width: 1080px;\n  width: 100%;\n  margin: 0 auto;\n  font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n  color: #334155;\n  line-height: 1.75;\n  font-size: 16px;\n  overflow-x: hidden;\n  box-sizing: border-box;\n}\n\n\/* 3. Base Headings Hierarchy *\/\n.litewing-wiki-container h2.wp-block-heading,\n.litewing-wiki-container h3.wp-block-heading,\n.litewing-wiki-container h4.wp-block-heading {\n  font-family: Roboto, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n  color: #0d3d79;\n  font-weight: 700;\n  line-height: 1.3;\n}\n\n.litewing-wiki-container h2.wp-block-heading {\n  font-size: 26px;\n  margin-top: 48px;\n  margin-bottom: 20px;\n  padding-bottom: 10px;\n  border-bottom: 2px solid #e2e8f0;\n  letter-spacing: -0.3px;\n  color: #0d3d79;\n}\n\n.litewing-wiki-container h2.wp-block-heading:first-of-type {\n  margin-top: 10px;\n}\n\n.litewing-wiki-container h3.wp-block-heading {\n  font-size: 21px;\n  margin-top: 36px;\n  margin-bottom: 18px;\n  color: #1e3a8a;\n}\n\n.litewing-wiki-container h4.wp-block-heading,\n.litewing-wiki-container h4.block-header,\n.lw-workspace-section h4 {\n  font-size: 18px;\n  margin-top: 24px;\n  margin-bottom: 12px;\n  color: #0d3d79 !important;\n}\n\n\/* 4. Side-by-Side (2-Column Media + Text) Layout *\/\n.lw-side-by-side {\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  gap: 28px;\n  margin: 22px 0 28px 0;\n}\n.lw-side-by-side.reverse {\n  flex-direction: row-reverse;\n}\n.lw-sbs-image {\n  flex: 0 0 45%;\n  max-width: 45%;\n  text-align: center;\n}\n.lw-sbs-image img {\n  max-width: 100%;\n  height: auto;\n  border-radius: 8px;\n  border: 1px solid #e2e8f0;\n  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.05);\n  display: inline-block;\n}\n.lw-sbs-caption {\n  font-size: 13px;\n  color: #64748b;\n  margin-top: 6px;\n  text-align: center;\n  font-weight: 500;\n}\n.lw-sbs-text {\n  flex: 1 1 55%;\n  min-width: 0;\n}\n.lw-sbs-text h4 {\n  margin-top: 0 !important;\n  margin-bottom: 10px !important;\n  color: #0d3d79 !important;\n  font-size: 18px !important;\n}\n.lw-sbs-text p {\n  margin: 0 0 10px 0 !important;\n  font-size: 15px;\n  line-height: 1.65;\n  color: #334155;\n}\n\n\/* Compact side-by-side for toolbar button images *\/\n.lw-side-by-side.compact {\n  margin: 18px 0 22px 0;\n  gap: 26px;\n  align-items: center;\n}\n.lw-side-by-side.compact .lw-sbs-image.compact-btn {\n  flex: 0 0 240px;\n  max-width: 240px;\n  background: #f8fafc;\n  border: 1px solid #e2e8f0;\n  border-radius: 8px;\n  padding: 16px 12px;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n  box-shadow: none;\n  min-height: 80px;\n}\n.lw-side-by-side.compact .lw-sbs-image.compact-btn img {\n  max-height: 52px;\n  width: auto;\n  max-width: 100%;\n  border: none !important;\n  box-shadow: none !important;\n  background: transparent !important;\n  display: inline-block;\n  filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.08));\n}\n.lw-side-by-side.compact .lw-sbs-image.compact-btn .button-pair {\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  justify-content: center;\n  gap: 14px;\n}\n.lw-side-by-side.compact .lw-sbs-image.compact-btn .button-pair img {\n  max-height: 48px;\n  width: auto;\n}\n.lw-side-by-side.compact .lw-sbs-caption {\n  font-size: 12px;\n  color: #64748b;\n  margin-top: 8px;\n  font-weight: 500;\n}\n.lw-side-by-side.compact .lw-sbs-text {\n  flex: 1 1 auto;\n}\n\n@media (max-width: 768px) {\n  .lw-side-by-side,\n  .lw-side-by-side.reverse {\n    flex-direction: column !important;\n    gap: 14px;\n  }\n  .lw-sbs-image {\n    flex: 1 1 100% !important;\n    max-width: 100% !important;\n  }\n  .lw-side-by-side.compact .lw-sbs-image.compact-btn {\n    flex: 1 1 100% !important;\n    max-width: 100% !important;\n    width: 100%;\n  }\n}\n\n\/* 5. Download Action Card (Clean, No Icons\/Emojis) *\/\n.lw-download-card {\n  background: #f0f7ff;\n  border: 1px solid #bae6fd;\n  border-left: 4px solid #0067ff;\n  border-radius: 8px;\n  padding: 20px 22px;\n  margin: 20px 0 28px 0;\n  transition: all 0.3s ease;\n}\n.lw-download-header {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  justify-content: space-between;\n  gap: 16px;\n}\n.lw-download-info .lw-download-title,\n.lw-download-info h4 {\n  margin: 0 0 6px 0 !important;\n  font-size: 17px !important;\n  color: #0369a1 !important;\n  font-weight: 700;\n}\n.lw-download-info p {\n  margin: 0 !important;\n  font-size: 14.5px;\n  color: #0c4a6e;\n  line-height: 1.4;\n}\n.lw-download-buttons {\n  display: flex;\n  gap: 10px;\n  align-items: center;\n  flex-wrap: wrap;\n}\n.lw-btn-primary {\n  background: #0067ff;\n  color: #ffffff !important;\n  font-weight: 600;\n  font-size: 13.5px;\n  padding: 9px 18px;\n  border-radius: 6px;\n  text-decoration: none !important;\n  display: inline-flex;\n  align-items: center;\n  gap: 8px;\n  border: none;\n  cursor: pointer;\n  transition: background 0.2s ease, box-shadow 0.2s ease;\n}\n.lw-btn-primary:hover {\n  background: #0052cc;\n  box-shadow: 0 2px 8px rgba(0, 103, 255, 0.3);\n}\n.lw-btn-secondary {\n  background: #ffffff;\n  color: #334155 !important;\n  border: 1px solid #cbd5e1;\n  font-weight: 600;\n  font-size: 13.5px;\n  padding: 8px 16px;\n  border-radius: 6px;\n  text-decoration: none !important;\n  display: inline-flex;\n  align-items: center;\n  gap: 6px;\n  transition: background 0.2s, border-color 0.2s;\n}\n.lw-btn-secondary:hover {\n  background: #f8fafc;\n  border-color: #94a3b8;\n}\n.lw-caret {\n  font-size: 10px;\n  transition: transform 0.25s ease;\n  display: inline-block;\n}\n.lw-expanded-platforms {\n  display: none;\n  margin-top: 18px;\n  padding-top: 18px;\n  border-top: 1px solid #bae6fd;\n  align-items: center;\n  gap: 14px;\n  flex-wrap: wrap;\n}\n.lw-expanded-platforms.is-open {\n  display: flex;\n  animation: fadeInSlide 0.25s ease-out;\n}\n@keyframes fadeInSlide {\n  from {\n    opacity: 0;\n    transform: translateY(-6px);\n  }\n  to {\n    opacity: 1;\n    transform: translateY(0);\n  }\n}\n.lw-platform-btn {\n  background: #ffffff;\n  color: #0f172a !important;\n  border: 1.5px solid #cbd5e1;\n  font-weight: 600;\n  font-size: 13.5px;\n  padding: 9px 18px;\n  border-radius: 6px;\n  text-decoration: none !important;\n  display: inline-flex;\n  align-items: center;\n  gap: 9px;\n  transition: all 0.2s ease;\n  box-shadow: 0 1px 3px rgba(0,0,0,0.04);\n}\n.lw-platform-btn:hover {\n  border-color: #0067ff;\n  color: #0067ff !important;\n  box-shadow: 0 4px 12px rgba(0, 103, 255, 0.15);\n  transform: translateY(-1px);\n}\n.lw-platform-btn img.lw-btn-logo {\n  width: 18px;\n  height: 18px;\n  object-fit: contain;\n  display: inline-block;\n  vertical-align: middle;\n}\n\n\/* 6. Block Documentation Cards *\/\n.lw-block-card {\n  background: #ffffff;\n  border: 1px solid #e2e8f0;\n  border-radius: 10px;\n  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.04);\n  margin-bottom: 32px;\n  overflow: hidden;\n  transition: border-color 0.2s ease, box-shadow 0.2s ease;\n}\n.lw-block-card:hover {\n  border-color: #cbd5e1;\n  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.06);\n}\n.lw-block-header {\n  padding: 14px 20px;\n  border-bottom: 1px solid #edf2f7;\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  justify-content: space-between;\n  gap: 12px;\n}\n.lw-block-header-left {\n  display: flex;\n  align-items: center;\n  gap: 10px;\n  flex-wrap: wrap;\n}\n.lw-block-title {\n  margin: 0 !important;\n  font-size: 18.5px !important;\n  font-weight: 700 !important;\n  color: #0f172a !important;\n}\n.lw-block-slug {\n  font-size: 13px !important;\n  font-family: 'JetBrains Mono', Consolas, Menlo, monospace !important;\n  font-weight: 600 !important;\n  background-color: #f1f5f9 !important;\n  color: #475569 !important;\n  padding: 3px 8px !important;\n  border-radius: 4px !important;\n  border: 1px solid #e2e8f0 !important;\n}\n.lw-cat-badge {\n  font-size: 11px;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.05em;\n  padding: 3px 8px;\n  border-radius: 4px;\n}\n\n\/* Category Accent Styles *\/\n.cat-events { background: #fef3c7; color: #b45309; }\n.cat-events-header { background: #fffef9; border-top: 3px solid #f59e0b; }\n.cat-flight { background: #dbeafe; color: #1d4ed8; }\n.cat-flight-header { background: #f8fbff; border-top: 3px solid #0067ff; }\n.cat-leds { background: #fce7f3; color: #be185d; }\n.cat-leds-header { background: #fff9fc; border-top: 3px solid #db2777; }\n.cat-movement { background: #d1fae5; color: #047857; }\n.cat-movement-header { background: #f6fef9; border-top: 3px solid #10b981; }\n.cat-navigation { background: #cffafe; color: #0e7490; }\n.cat-navigation-header { background: #f5feff; border-top: 3px solid #06b6d4; }\n.cat-shapes { background: #ede9fe; color: #6d28d9; }\n.cat-shapes-header { background: #faf8ff; border-top: 3px solid #8b5cf6; }\n.cat-sensors { background: #ffedd5; color: #c2410c; }\n.cat-sensors-header { background: #fffaf5; border-top: 3px solid #ea580c; }\n.cat-logging { background: #e0e7ff; color: #4338ca; }\n.cat-logging-header { background: #f8f9ff; border-top: 3px solid #6366f1; }\n.cat-utilities { background: #e2e8f0; color: #334155; }\n.cat-utilities-header { background: #f8fafc; border-top: 3px solid #64748b; }\n\n.lw-block-body {\n  padding: 20px 22px;\n}\n\n\/* 7. Block Preview Showcase *\/\n.lw-block-preview-box {\n  background: #f8fafc;\n  background-image: radial-gradient(#cbd5e1 1.2px, transparent 1.2px);\n  background-size: 16px 16px;\n  border: 1px solid #e2e8f0;\n  border-radius: 8px;\n  padding: 16px;\n  text-align: center;\n  margin-bottom: 18px;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n  min-height: 85px;\n}\n.lw-preview-label {\n  font-size: 11px;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.08em;\n  color: #94a3b8;\n  margin-bottom: 8px;\n}\n.lw-block-preview-img {\n  max-height: 75px;\n  width: auto !important;\n  max-width: 100%;\n  object-fit: contain;\n  filter: drop-shadow(0 2px 5px rgba(0, 0, 0, 0.08));\n  display: block;\n}\n\n\/* 8. Python Code Container (VS Code Dark+ Style) *\/\n.lw-code-container {\n  background: #1e1e1e !important;\n  border-radius: 8px;\n  overflow: hidden;\n  margin: 18px 0;\n  border: 1px solid #333333;\n  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.12);\n}\n.lw-code-topbar {\n  background: #252526 !important;\n  padding: 8px 16px !important;\n  display: flex !important;\n  align-items: center !important;\n  justify-content: space-between !important;\n  border-bottom: 1px solid #333333 !important;\n}\n.lw-code-lang {\n  color: #ffffff !important;\n  font-size: 11px !important;\n  font-weight: 700 !important;\n  letter-spacing: 0.08em !important;\n  text-transform: uppercase !important;\n}\n.lw-code-block {\n  margin: 0 !important;\n  padding: 14px 18px !important;\n  background: #1e1e1e !important;\n  border: none !important;\n  overflow-x: auto !important;\n}\n.lw-code-block code {\n  color: #d4d4d4 !important;\n  font-family: 'JetBrains Mono', 'Fira Code', Consolas, Menlo, Monaco, monospace !important;\n  font-size: 13.5px !important;\n  line-height: 1.65 !important;\n  white-space: pre !important;\n  background: transparent !important;\n  padding: 0 !important;\n  border: none !important;\n}\n\/* VS Code Dark+ Syntax Colors *\/\n.py-keyword { color: #c586c0 !important; font-weight: 600 !important; }\n.py-builtin { color: #569cd6 !important; }\n.py-class   { color: #4ec9b0 !important; }\n.py-func    { color: #dcdcaa !important; }\n.py-var     { color: #9cdcfe !important; }\n.py-str     { color: #ce9178 !important; }\n.py-num     { color: #b5cea8 !important; }\n.py-comment { color: #6a9955 !important; font-style: italic !important; }\n.py-punct   { color: #d4d4d4 !important; }\n\n\/* 9. Example Box *\/\n.lw-example-box {\n  background: #f8fafc;\n  border: 1px solid #e2e8f0;\n  border-left: 4px solid #0067ff;\n  border-radius: 8px;\n  padding: 16px 18px;\n  margin-top: 20px;\n}\n.lw-example-header {\n  font-weight: 700;\n  color: #0f172a;\n  font-size: 14px;\n  margin-bottom: 12px;\n}\n.lw-example-img-wrap {\n  background: #ffffff;\n  border: 1px solid #e2e8f0;\n  border-radius: 6px;\n  padding: 12px;\n  display: inline-block;\n  max-width: 100%;\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);\n}\n.lw-example-img-wrap img {\n  max-width: 100%;\n  height: auto;\n  display: block;\n}\n\n\/* 10. Tables & Matrices (Mobile Horizontally Slidable) *\/\n.litewing-wiki-container figure.wp-block-table {\n  display: block !important;\n  width: 100% !important;\n  max-width: 100% !important;\n  overflow-x: auto !important;\n  -webkit-overflow-scrolling: touch !important;\n  margin: 18px 0 !important;\n  padding: 0 !important;\n  border-radius: 6px;\n  box-sizing: border-box !important;\n}\n.litewing-wiki-container figure.wp-block-table table {\n  width: 100% !important;\n  margin: 0 !important;\n  border-collapse: collapse !important;\n}\n.litewing-wiki-container table {\n  width: 100%;\n  border-collapse: collapse;\n  border: 1px solid #e2e8f0;\n  border-radius: 6px;\n  overflow: hidden;\n  margin: 0 !important;\n  font-size: 14.5px;\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.03);\n}\n.litewing-wiki-container thead th {\n  background: #0d3d79;\n  color: #ffffff;\n  font-weight: 700;\n  font-size: 12.5px;\n  text-transform: uppercase;\n  letter-spacing: 0.05em;\n  padding: 11px 16px;\n  border: none;\n  text-align: left;\n}\n.litewing-wiki-container tbody td {\n  padding: 11px 16px;\n  border-top: 1px solid #e2e8f0;\n  border-bottom: 1px solid #e2e8f0;\n  color: #334155;\n  vertical-align: top;\n}\n.litewing-wiki-container tr:nth-child(even) td {\n  background-color: #f8fafc;\n}\n.litewing-wiki-container tbody tr:hover td {\n  background-color: #f1f5f9;\n}\n\n\/* 11. Callout Boxes *\/\n.callout-box {\n  padding: 14px 18px;\n  margin: 20px 0;\n  border-radius: 6px;\n  font-size: 15px;\n  line-height: 1.6;\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.03);\n}\n.callout-box strong {\n  color: #0f172a;\n}\n.callout-note {\n  background-color: #f0f7ff;\n  border-left: 4px solid #0067ff;\n  color: #1e3a8a;\n}\n.callout-warning {\n  background-color: #fffbeb;\n  border-left: 4px solid #f59e0b;\n  color: #92400e;\n}\n\n\/* 12. Constrained Button & UI Images *\/\n.litewing-wiki-container figure.wp-block-image img[src*=\"-button\"] {\n  max-width: 320px !important;\n  height: auto !important;\n  border: 1px solid #e2e8f0;\n  border-radius: 6px;\n  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.04);\n  margin: 6px 0;\n}\n.litewing-wiki-container figure.wp-block-image img {\n  border-radius: 6px;\n  border: 1px solid #e2e8f0;\n  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.04);\n  max-width: 100%;\n  height: auto;\n}\n.litewing-wiki-container figure.wp-block-image figcaption {\n  font-size: 13px;\n  color: #64748b;\n  margin-top: 8px;\n  text-align: center;\n  font-weight: 500;\n}\n.litewing-wiki-container figure.wp-block-image img[src*=\"litewing-block-\"] {\n  border: none !important;\n  box-shadow: none !important;\n}\n\n@media (max-width: 768px) {\n  .lw-block-body { padding: 16px; }\n  .lw-block-header { padding: 12px 16px; }\n\n  \/* Mobile Horizontally Slidable Tables *\/\n  .litewing-wiki-container figure.wp-block-table {\n    margin: 14px 0 !important;\n    scrollbar-width: thin;\n    scrollbar-color: #cbd5e1 #f8fafc;\n  }\n  .litewing-wiki-container figure.wp-block-table::-webkit-scrollbar {\n    height: 5px;\n  }\n  .litewing-wiki-container figure.wp-block-table::-webkit-scrollbar-track {\n    background: #f1f5f9;\n    border-radius: 3px;\n  }\n  .litewing-wiki-container figure.wp-block-table::-webkit-scrollbar-thumb {\n    background: #cbd5e1;\n    border-radius: 3px;\n  }\n  .litewing-wiki-container thead th {\n    padding: 9px 12px !important;\n    font-size: 11.5px !important;\n    white-space: nowrap !important;\n  }\n  .litewing-wiki-container tbody td {\n    padding: 9px 12px !important;\n    font-size: 13.5px !important;\n  }\n  \/* Multi-column tables comfortably scroll horizontally without cramped text *\/\n  .litewing-wiki-container .lw-specs-section figure.wp-block-table table,\n  .litewing-wiki-container figure.wp-block-table table {\n    min-width: 480px;\n  }\n  \/* 2-column or 3-column tables fit full width without forcing unnecessary scroll *\/\n  .litewing-wiki-container figure.wp-block-table:first-of-type table,\n  .litewing-wiki-container #requirements + p + figure.wp-block-table table,\n  .litewing-wiki-container #troubleshooting + figure.wp-block-table table {\n    min-width: 100% !important;\n  }\n  \/* Standard block reference has 5 detailed columns *\/\n  .litewing-wiki-container #standard-block-reference + figure.wp-block-table table {\n    min-width: 620px !important;\n  }\n}\n<\/style>\n\n<div class=\"litewing-wiki-container\">\n<h2 class=\"wp-block-heading\" id=\"introduction\"><span class=\"ez-toc-section\" id=\"Introduction\"><\/span>Introduction<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>LiteWing Blockly is a visual programming app for the LiteWing Drone. Instead of writing every command by hand, you build programs by joining blocks together. The app shows the Python code created from your blocks, so learners can learn programming concepts while they create real drone programs.<\/p>\n<p>LiteWing Blockly is fully portable. The Python, LiteWing library, and the app dependencies are included with the application. You do not need to install Python or any separate programming packages before using the app.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"requirements\" style=\"transition: background 0.5s;\"><span class=\"ez-toc-section\" id=\"Requirements\"><\/span>Requirements<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>You need the following items before using LiteWing Blockly:<\/p>\n<figure class=\"wp-block-table is-style-stripes\">\n<table class=\"has-fixed-layout\">\n<thead><tr>\n<th>Requirement<\/th>\n<th>Details<\/th>\n<\/tr><\/thead>\n<tbody>\n<tr>\n<td>LiteWing Drone<\/td>\n<td rowspan=\"2\" style=\"vertical-align: middle;\">A LiteWing Drone &amp; Positioning Module is <strong>required<\/strong> for LiteWing Blockly. The app uses the module&#8217;s Time of Flight height sensor and optical flow sensor for stable height hold, position hold, telemetry, and autonomous flight commands.<\/td>\n<\/tr>\n<tr>\n<td>LiteWing Drone Positioning Module<\/td>\n<\/tr>\n<tr>\n<td>Firmware<\/td>\n<td>LiteWing firmware version <strong>v3.0.0 or later<\/strong>.<\/td>\n<\/tr>\n<tr>\n<td>System<\/td>\n<td>A Windows PC (64-bit) or Mac (Apple Silicon) with Wi-Fi.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n<p>Before continuing, install the Drone Positioning Module and update the LiteWing firmware. Check the <a href=\"https:\/\/circuitdigest.com\/wiki\/litewing-drone-positioning-module\/\" target=\"_blank\" rel=\"noopener\">Drone Positioning Module installation guide<\/a> and the <a href=\"https:\/\/circuitdigest.com\/wiki\/litewing\/#Firmware_and_Programming\" target=\"_blank\" rel=\"noopener\">LiteWing firmware update guide<\/a> before proceeding.<\/p>\n<div class=\"callout-box callout-note\"><strong>NOTE:<\/strong> LiteWing Blockly is not usable without the Drone Positioning Module and compatible firmware.<\/div>\n<h2 class=\"wp-block-heading\" id=\"download-litewing-blockly\"><span class=\"ez-toc-section\" id=\"Download_LiteWing_Blockly\"><\/span>Download LiteWing Blockly<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>After downloading, open LiteWing Blockly. The app opens with the programming workspace, a console, and a connection bar along the bottom of the window.<\/p>\n<div class=\"lw-download-card\" id=\"lw-card\">\n  <div class=\"lw-download-header\">\n    <div class=\"lw-download-info\">\n      <div class=\"lw-download-title\">Download LiteWing Blockly<\/div>\n      <p>Standalone application for Windows (64-bit) and macOS (Apple Silicon). Python 3.10 and LiteWing drivers pre-installed.<\/p>\n    <\/div>\n    <div class=\"lw-download-buttons\">\n      <button type=\"button\" class=\"lw-btn-primary\" id=\"lw-download-toggle-btn\" onclick=\"var p=document.getElementById('lw-platforms'), c=document.getElementById('lw-caret'); if(p){var o=p.classList.toggle('is-open'); if(c) c.style.transform=o?'rotate(180deg)':'rotate(0deg)';}\">\n        Download LiteWing Blockly <span class=\"lw-caret\" id=\"lw-caret\">\u25be<\/span>\n      <\/button>\n      <a href=\"https:\/\/github.com\/Circuit-Digest\/LiteWing-Blockly\" target=\"_blank\" rel=\"noopener\" class=\"lw-btn-secondary\">GitHub Repository<\/a>\n    <\/div>\n  <\/div>\n  <div class=\"lw-expanded-platforms\" id=\"lw-platforms\">\n    <a href=\"https:\/\/github.com\/Circuit-Digest\/LiteWing-Blockly\/releases\/latest\/download\/LiteWingBlockly.exe\" download=\"\" target=\"_blank\" rel=\"noopener\" class=\"lw-platform-btn\">\n      <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/windows.png\" alt=\"Windows\" class=\"lw-btn-logo\">\n      <span>Windows (.exe)<\/span>\n    <\/a>\n    <a href=\"https:\/\/github.com\/Circuit-Digest\/LiteWing-Blockly\/releases\/latest\/download\/LiteWingBlockly-v1.0.0-macos-arm64.dmg\" download=\"\" target=\"_blank\" rel=\"noopener\" class=\"lw-platform-btn\">\n      <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/apple-logo.png\" alt=\"macOS\" class=\"lw-btn-logo\">\n      <span>macOS (.dmg)<\/span>\n    <\/a>\n  <\/div>\n<\/div>\n\n<h2 class=\"wp-block-heading\" id=\"get-familiar-with-the-app\"><span class=\"ez-toc-section\" id=\"Get_familiar_with_the_app\"><\/span>Get familiar with the app<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n<p>Spend a few minutes exploring the application before you connect or fly. This makes it easier to understand where blocks go and where the app reports connection and flight information.<\/p>\n\n<div class=\"lw-side-by-side\">\n  <div class=\"lw-sbs-image\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-blockly-category-toolbox-1.png\" alt=\"Category Toolbox in LiteWing Blockly\" loading=\"lazy\">\n    <div class=\"lw-sbs-caption\">Category Toolbox<\/div>\n  <\/div>\n  <div class=\"lw-sbs-text\">\n    <h4 class=\"wp-block-heading block-header\" id=\"category-toolbox\"><span class=\"ez-toc-section\" id=\"Category_toolbox\"><\/span>Category toolbox<span class=\"ez-toc-section-end\"><\/span><\/h4>\n    <p>The category toolbox is the vertical list on the left side of the app. It groups blocks by purpose, making it easier to find the command or value you need. Select a category such as <strong>Flight<\/strong>, <strong>LEDs<\/strong>, or <strong>Sensors<\/strong> to view the blocks available in that group.<\/p>\n  <\/div>\n<\/div>\n\n<div class=\"lw-side-by-side reverse\">\n  <div class=\"lw-sbs-image\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-blockly-flyout-toolbox-1.png\" alt=\"Flyout Toolbox showing individual blocks\" loading=\"lazy\">\n    <div class=\"lw-sbs-caption\">Flyout Toolbox<\/div>\n  <\/div>\n  <div class=\"lw-sbs-text\">\n    <h4 class=\"wp-block-heading block-header\" id=\"flyout-toolbox\"><span class=\"ez-toc-section\" id=\"Flyout_toolbox\"><\/span>Flyout toolbox<span class=\"ez-toc-section-end\"><\/span><\/h4>\n    <p>The flyout toolbox opens beside the category toolbox after you select a category. It displays the individual blocks in that category. Drag a block from this panel into the workspace to begin building your program. The flyout changes whenever you choose a different category.<\/p>\n  <\/div>\n<\/div>\n\n<div class=\"lw-workspace-section\" style=\"margin-top: 28px;\">\n  <h4 class=\"wp-block-heading block-header\" id=\"workspace\" style=\"color: #0d3d79 !important; font-size: 18px !important; margin-bottom: 10px !important;\"><span class=\"ez-toc-section\" id=\"Workspace\"><\/span>Workspace<span class=\"ez-toc-section-end\"><\/span><\/h4>\n  <p style=\"margin-bottom: 18px;\">The workspace is the large dotted area in the middle of the window. This is the main programming area, where you drag in blocks, connect them into stacks, move them around, and organise your program. Blocks connected in a vertical stack run from top to bottom.<\/p>\n  \n  <div class=\"lw-side-by-side\">\n    <div class=\"lw-sbs-image\">\n      <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-blockly-programming-workspace-1.png\" alt=\"LiteWing Blockly Programming Workspace\" loading=\"lazy\">\n      <div class=\"lw-sbs-caption\">Programming Workspace Canvas<\/div>\n    <\/div>\n    <div class=\"lw-sbs-text\">\n      <figure class=\"wp-block-table is-style-stripes\" style=\"margin-top: 0;\">\n      <table class=\"has-fixed-layout\">\n      <thead><tr>\n      <th>Control<\/th>\n      <th>Function<\/th>\n      <\/tr><\/thead>\n      <tbody>\n      <tr>\n      <td><strong>Zoom in (+)<\/strong><\/td>\n      <td>Makes blocks larger for easier viewing and editing.<\/td>\n      <\/tr>\n      <tr>\n      <td><strong>Zoom out (-)<\/strong><\/td>\n      <td>Gives you more workspace area when working with a large program.<\/td>\n      <\/tr>\n      <tr>\n      <td><strong>Centre \/ Reset<\/strong><\/td>\n      <td>Returns the workspace to a comfortable default view.<\/td>\n      <\/tr>\n      <tr>\n      <td><strong>Trashcan<\/strong><\/td>\n      <td>Deletes a block or connected block stack dropped onto it. Opening the trashcan can also display recently deleted blocks.<\/td>\n      <\/tr>\n      <\/tbody>\n      <\/table>\n      <\/figure>\n    <\/div>\n  <\/div>\n<\/div>\n\n<div class=\"lw-side-by-side reverse\">\n  <div class=\"lw-sbs-image\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-blockly-python-code-panel-1.png\" alt=\"Real-time Generated Python Code Panel\" loading=\"lazy\">\n    <div class=\"lw-sbs-caption\">Generated Python Code Panel<\/div>\n  <\/div>\n  <div class=\"lw-sbs-text\">\n    <h4 class=\"wp-block-heading block-header\" id=\"python-panel\"><span class=\"ez-toc-section\" id=\"Python_panel\"><\/span>Python panel<span class=\"ez-toc-section-end\"><\/span><\/h4>\n    <p>The Python panel shows the Python code generated from the blocks in your workspace. It updates whenever you add, remove, or change a block. Use it to see how visual Blockly instructions translate into Python commands and understand what each block means in Python. Use <strong>Copy<\/strong> to copy the generated code or <strong>Export<\/strong> to save it as a Python file.<\/p>\n  <\/div>\n<\/div>\n\n<div class=\"lw-side-by-side\">\n  <div class=\"lw-sbs-image\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-blockly-sensors-panel-1.png\" alt=\"Live Telemetry Cockpit Sensors Panel\" loading=\"lazy\">\n    <div class=\"lw-sbs-caption\">Sensors Cockpit Telemetry<\/div>\n  <\/div>\n  <div class=\"lw-sbs-text\">\n    <h4 class=\"wp-block-heading block-header\" id=\"sensors-panel\"><span class=\"ez-toc-section\" id=\"Sensors_panel\"><\/span>Sensors panel<span class=\"ez-toc-section-end\"><\/span><\/h4>\n    <p>The Sensors panel displays live telemetry from the drone after it has been connected successfully. Depending on the available sensors, it can show information such as battery voltage, height, attitude, heading, and position. Check this panel before flight to confirm that live data is being received.<\/p>\n  <\/div>\n<\/div>\n\n<div class=\"lw-side-by-side reverse\">\n  <div class=\"lw-sbs-image\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-blockly-console-output-1.png\" alt=\"Interactive Terminal Console Output\" loading=\"lazy\">\n    <div class=\"lw-sbs-caption\">Terminal Console Output<\/div>\n  <\/div>\n  <div class=\"lw-sbs-text\">\n    <h4 class=\"wp-block-heading block-header\" id=\"console\"><span class=\"ez-toc-section\" id=\"Console\"><\/span>Console<span class=\"ez-toc-section-end\"><\/span><\/h4>\n    <p>The console displays text feedback from the app and your program. It shows connection messages, program output, warnings, and errors. If a connection or program does not work as expected, check the console first for useful details.<\/p>\n  <\/div>\n<\/div>\n\n<div class=\"lw-side-by-side\">\n  <div class=\"lw-sbs-image\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-blockly-status-bar-connection-1.png\" alt=\"Status Bar and Connection Controls\" loading=\"lazy\">\n    <div class=\"lw-sbs-caption\">Status Bar &amp; Connection Indicator<\/div>\n  <\/div>\n  <div class=\"lw-sbs-text\">\n    <h4 class=\"wp-block-heading block-header\" id=\"status-bar\"><span class=\"ez-toc-section\" id=\"Status_bar\"><\/span>Status bar<span class=\"ez-toc-section-end\"><\/span><\/h4>\n    <p>The status bar is at the bottom of the app window. It shows whether the drone is connected, displays the drone IP address, SSID name, connection strength, and battery voltage, and contains the <strong>Connect<\/strong> or <strong>Disconnect<\/strong> button. Confirm that the connection status is green before running a drone program.<\/p>\n  <\/div>\n<\/div>\n\n<h3 class=\"wp-block-heading\" id=\"toolbar-controls\"><span class=\"ez-toc-section\" id=\"Toolbar_controls\"><\/span>Toolbar controls<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n<h4 class=\"wp-block-heading block-header\" id=\"drone-controls\"><span class=\"ez-toc-section\" id=\"Drone_controls\"><\/span>Drone controls<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n<div class=\"lw-side-by-side compact\">\n  <div class=\"lw-sbs-image compact-btn\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/btn_run.png?v=1\" alt=\"Run Code Button\" loading=\"lazy\">\n    <div class=\"lw-sbs-caption\">Run Code Button<\/div>\n  <\/div>\n  <div class=\"lw-sbs-text\">\n    <p><strong>Run code<\/strong><\/p>\n    <p>Select <strong>Run code<\/strong> to start the program connected below a <strong>When Run clicked<\/strong> block. The app checks for a drone connection before it sends flight commands, so make sure the connection status is green and telemetry is available before running a flight program.<\/p>\n  <\/div>\n<\/div>\n\n<div class=\"lw-side-by-side compact reverse\">\n  <div class=\"lw-sbs-image compact-btn\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/btn_land.png\" alt=\"Land Button\" loading=\"lazy\">\n    <div class=\"lw-sbs-caption\">Land Button<\/div>\n  <\/div>\n  <div class=\"lw-sbs-text\">\n    <p><strong>Land<\/strong><\/p>\n    <p>Select <strong>Land<\/strong> to command a controlled landing and stop the active flight program. Use this button when the drone needs to finish a normal flight safely. Use this control rather than <strong>Stop<\/strong> whenever the situation is not an emergency.<\/p>\n  <\/div>\n<\/div>\n\n<div class=\"lw-side-by-side compact\">\n  <div class=\"lw-sbs-image compact-btn\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/btn_stop.png\" alt=\"Emergency Stop Button\" loading=\"lazy\">\n    <div class=\"lw-sbs-caption\">Emergency Stop Button<\/div>\n  <\/div>\n  <div class=\"lw-sbs-text\">\n    <p><strong>Stop<\/strong><\/p>\n    <p>Select <strong>Stop<\/strong> only in an emergency. It immediately cuts power to the motors, causing the drone to fall rather than land under control. The <strong>Spacebar<\/strong> performs the same emergency stop, which can be useful when you need to react quickly.<\/p>\n  <\/div>\n<\/div>\n\n<h4 class=\"wp-block-heading block-header\" id=\"app-and-workspace-controls\"><span class=\"ez-toc-section\" id=\"App_and_workspace_controls\"><\/span>App and workspace controls<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n<div class=\"lw-side-by-side compact reverse\">\n  <div class=\"lw-sbs-image compact-btn\">\n    <div class=\"button-pair\">\n      <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/btn_undo.png\" alt=\"Undo Button\" loading=\"lazy\">\n      <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/btn_redo.png\" alt=\"Redo Button\" loading=\"lazy\">\n    <\/div>\n    <div class=\"lw-sbs-caption\">Undo &amp; Redo Controls<\/div>\n  <\/div>\n  <div class=\"lw-sbs-text\">\n    <p><strong>Undo and Redo<\/strong><\/p>\n    <p>Use <strong>Undo<\/strong> to reverse the most recent change in the Blockly workspace, such as moving, deleting, connecting, or editing a block. Use <strong>Redo<\/strong> to restore a change that was undone. These controls affect the workspace only, they do not reverse a program that has already run on the drone.<\/p>\n  <\/div>\n<\/div>\n\n<div class=\"lw-side-by-side compact\">\n  <div class=\"lw-sbs-image compact-btn\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/btn_theme_toggle.png\" alt=\"Theme Toggle\" loading=\"lazy\">\n    <div class=\"lw-sbs-caption\">Theme Toggle<\/div>\n  <\/div>\n  <div class=\"lw-sbs-text\">\n    <p><strong>Theme<\/strong><\/p>\n    <p>Use <strong>Theme<\/strong> to switch between the Light &amp; Dark app colour themes. This changes the appearance of the LiteWing Blockly interface but does not change your blocks, generated Python code, connection settings, or saved projects.<\/p>\n  <\/div>\n<\/div>\n\n<div class=\"lw-side-by-side compact reverse\">\n  <div class=\"lw-sbs-image compact-btn\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/btn_save_project.png\" alt=\"Save Project Button\" loading=\"lazy\">\n    <div class=\"lw-sbs-caption\">Save Project Button<\/div>\n  <\/div>\n  <div class=\"lw-sbs-text\">\n    <p><strong>Save<\/strong><\/p>\n    <p>Use <strong>Save<\/strong> to store the current Blockly workspace as a <strong>.lwb LiteWing Blockly project<\/strong> file. The saved project keeps the block arrangement, block settings, variables, and comments so you can continue working later. Save regularly, especially before closing the app or making major changes to a working flight program.<\/p>\n  <\/div>\n<\/div>\n\n<div class=\"lw-side-by-side compact\">\n  <div class=\"lw-sbs-image compact-btn\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/btn_load_project.png\" alt=\"Load Project Button\" loading=\"lazy\">\n    <div class=\"lw-sbs-caption\">Load Project Button<\/div>\n  <\/div>\n  <div class=\"lw-sbs-text\">\n    <p><strong>Load<\/strong><\/p>\n    <p>Use <strong>Load<\/strong> to open a previously saved <strong>.lwb LiteWing Blockly project<\/strong> file. Loading a project restores its saved workspace so you can review, edit, test, or run the program again. Check the blocks, connection status, and flight area before running a loaded drone program.<\/p>\n  <\/div>\n<\/div>\n\n<div class=\"lw-side-by-side reverse\">\n  <div class=\"lw-sbs-image\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-blockly-context-menu-1.png\" alt=\"Blockly Right-Click Context Menu\" loading=\"lazy\">\n    <div class=\"lw-sbs-caption\">Context Menu Options<\/div>\n  <\/div>\n  <div class=\"lw-sbs-text\">\n    <p><strong>Context menu<\/strong><\/p>\n    <p><strong>Context menu<\/strong> opens when you right-click a block or the empty workspace. It can duplicate a block, add a comment, change input layout, collapse or disable a block, delete a block, or clean up loose stacks.<\/p>\n  <\/div>\n<\/div>\n\n<h2 class=\"wp-block-heading\" id=\"blockly-programming-basics\"><span class=\"ez-toc-section\" id=\"Blockly_programming_basics\"><\/span>Blockly programming basics<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n<div class=\"lw-side-by-side\">\n  <div class=\"lw-sbs-text\">\n    <h3 class=\"wp-block-heading\" id=\"blocks-and-block-stacks\"><span class=\"ez-toc-section\" id=\"Blocks_and_block_stacks\"><\/span>Blocks and block stacks<span class=\"ez-toc-section-end\"><\/span><\/h3>\n    <p>A block represents one instruction, value, or event. A <strong>block stack<\/strong> is a vertical or horizontal sequence of connected command blocks. The program runs from the top of the stack to the bottom.<\/p>\n    <p>For example, a basic flight stack connects When Run clicked, Arm drone, Takeoff, Hover, and Land sequentially.<\/p>\n  <\/div>\n  <div class=\"lw-sbs-image\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-blockly-basic-flight-stack.png\" alt=\"Basic Autonomous Flight Block Stack\" loading=\"lazy\">\n    <div class=\"lw-sbs-caption\">Basic Flight Block Stack<\/div>\n  <\/div>\n<\/div>\n\n<div class=\"lw-side-by-side reverse\">\n  <div class=\"lw-sbs-text\">\n    <h3 class=\"wp-block-heading\" id=\"insertion-marker\"><span class=\"ez-toc-section\" id=\"Insertion_marker\"><\/span>Insertion marker<span class=\"ez-toc-section-end\"><\/span><\/h3>\n    <p>When you drag a compatible block near a connection point, Blockly shows an insertion marker. The marker shows where the block will be placed when you release it. Use the marker to insert a command between two existing commands without breaking the stack.<\/p>\n  <\/div>\n  <div class=\"lw-sbs-image\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-blockly-insertion-marker-1.png\" alt=\"Blockly Connection Insertion Marker\" loading=\"lazy\">\n    <div class=\"lw-sbs-caption\">Blockly Insertion Marker<\/div>\n  <\/div>\n<\/div>\n\n<h3 class=\"wp-block-heading\" id=\"connection-types\"><span class=\"ez-toc-section\" id=\"Connection_types\"><\/span>Connection types<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n<figure class=\"wp-block-table is-style-stripes\">\n<table class=\"has-fixed-layout\">\n<thead><tr>\n<th>Connection<\/th>\n<th>Block<\/th>\n<th>Description<\/th>\n<th>Example<\/th>\n<\/tr><\/thead>\n<tbody>\n<tr>\n<td>Next connection<\/td>\n<td><figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-blockly-next-connection.png\" alt=\"Next Connection Notch\" class=\"wp-image-image18\" loading=\"lazy\"><\/figure><\/td>\n<td>A notch at the bottom of a command block. It accepts the next command.<\/td>\n<td>Arm drone followed by Takeoff.<\/td>\n<\/tr>\n<tr>\n<td>Previous connection<\/td>\n<td><figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-blockly-previous-connection.png\" alt=\"Previous Connection Notch\" class=\"wp-image-image19\" loading=\"lazy\"><\/figure><\/td>\n<td>A notch at the top of a command block. It connects below the previous command.<\/td>\n<td>Land below Hover.<\/td>\n<\/tr>\n<tr>\n<td>Output connection<\/td>\n<td><figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-blockly-output-connection.png\" alt=\"Output Connection Plug\" class=\"wp-image-image20\" loading=\"lazy\"><\/figure><\/td>\n<td>A rounded or angled plug that supplies a value.<\/td>\n<td>Battery voltage used in a comparison.<\/td>\n<\/tr>\n<tr>\n<td>Statement input<\/td>\n<td><figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-blockly-statement-input.png\" alt=\"Statement Input Notch (C-Mouth)\" class=\"wp-image-image21\" loading=\"lazy\"><\/figure><\/td>\n<td>A socket that receives a value or stack of blocks.<\/td>\n<td>Waypoints inside Fly path or commands inside a loop.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n\n<h3 class=\"wp-block-heading\" id=\"block-icons-and-editable-values\"><span class=\"ez-toc-section\" id=\"Block_icons_and_editable_values\"><\/span>Block icons and editable values<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n<p>The gear icon gives additional conditional logic, you can drag the logic you wanted into the existing field to modify the block structure. In number fields such as <strong>0.3<\/strong>, drop-down menus such as <strong>Increase<\/strong>, and text fields such as <strong>flight_log.csv<\/strong> are editable. Click a field, enter a suitable value, and press Enter.<\/p>\n\n<div class=\"lw-side-by-side\">\n  <div class=\"lw-sbs-image\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-blockly-mutator-gear-icon.png\" alt=\"Mutator Gear Icon Settings\" loading=\"lazy\">\n    <div class=\"lw-sbs-caption\">Mutator Settings Gear<\/div>\n  <\/div>\n  <div class=\"lw-sbs-image\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-blockly-editable-fields.png\" alt=\"Editable Number and Dropdown Fields\" loading=\"lazy\">\n    <div class=\"lw-sbs-caption\">Editable Input Fields<\/div>\n  <\/div>\n<\/div>\n\n<p>Some inputs contain a light-coloured <strong>shadow block<\/strong>. A shadow block is a safe default value. You can edit it or replace it by dropping another compatible value block into the same socket.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"safety-before-flight\"><span class=\"ez-toc-section\" id=\"Safety_before_flight\"><\/span>Safety before flight<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Read these safety instructions before running any program on the LiteWing drone.<\/p>\n<ul class=\"wp-block-list\">\n  <li>Place the drone on a flat, well-lit, textured floor. The optical flow sensor needs visible surface texture to track horizontal movement reliably.<\/li>\n  <li>Check that the propellers rotate freely and are free of hair, dust, or damage.<\/li>\n  <li>Use a charged battery. Do not start a flight when the battery is low.<\/li>\n  <li>Keep a clear landing area below the drone throughout the program.<\/li>\n  <li>Use <strong>Land<\/strong> for a normal, controlled landing. Use <strong>Stop<\/strong> or <strong>Spacebar<\/strong> only when continued flight is unsafe. <strong>Stop<\/strong> cuts motor power immediately, so the drone drops.<\/li>\n<\/ul>\n<div class=\"callout-box callout-note\"><strong>NOTE:<\/strong> The Drone Positioning Module must be installed correctly and firmware v3.0.0 or later must be running before flight commands are used.<\/div>\n\n<h2 class=\"wp-block-heading\" id=\"connect-litewing-blockly-to-the-drone\"><span class=\"ez-toc-section\" id=\"Connect_LiteWing_Blockly_to_the_Drone\"><\/span>Connect LiteWing Blockly to the Drone<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n<div class=\"lw-side-by-side\">\n  <div class=\"lw-sbs-image\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-drone-flat-surface.png?v=20260922\" alt=\"Connecting to LiteWing Wi-Fi Network\" loading=\"lazy\">\n    <div class=\"lw-sbs-caption\">Wi-Fi Connection Setup<\/div>\n  <\/div>\n  <div class=\"lw-sbs-text\">\n    <p>To connect LiteWing Blockly to the drone, first place LiteWing on a flat surface and power it on. Allow the drone to complete its normal startup process before continuing.<\/p>\n    <p>On the computer, open the Wi-Fi settings and connect to the LiteWing Wi-Fi network. And you can verify this by the drone position module indication turned solid green, launch the LiteWing Blockly application and check the drone IP address shown in the connection bar. The normal default IP address is 192.168.43.42. Select Connect and wait for the application to verify the connection. Once the connection is established, LiteWing Blockly will begin receiving telemetry data from the drone.<\/p>\n  <\/div>\n<\/div>\n\n<p>A successful connection is confirmed when the connection status changes to Drone connected, with the status indicator turning green. The console should also report successful connection activity, while the Sensors tab begins displaying live telemetry data. The drone link indicator will flash while the application remains connected to LiteWing.<\/p>\n\n<figure class=\"wp-block-image size-large\">\n  <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-wifi-connection-setup.png?v=20260922\" alt=\"Connection Confirmation &amp; Status\" loading=\"lazy\">\n  <figcaption class=\"wp-element-caption\">Connection Confirmation &amp; Status<\/figcaption>\n<\/figure>\n\n<p>If the console reports that the computer is not connected to the LiteWing Wi-Fi network, return to the computer&#8217;s Wi-Fi settings and connect to the drone&#8217;s network. Once connected, return to LiteWing Blockly and select Connect again.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"first-programs\"><span class=\"ez-toc-section\" id=\"First_programs\"><\/span>First programs<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n<div class=\"lw-side-by-side\">\n  <div class=\"lw-sbs-image\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-blockly-connection-test-led.png\" alt=\"Connection Test LED Sequence Stack\" loading=\"lazy\">\n    <div class=\"lw-sbs-caption\">Connection Test LED Routine<\/div>\n  <\/div>\n  <div class=\"lw-sbs-text\">\n    <h3 class=\"wp-block-heading\" id=\"connection-test\"><span class=\"ez-toc-section\" id=\"Connection_Test\"><\/span>Connection Test<span class=\"ez-toc-section-end\"><\/span><\/h3>\n    <p>Use an LED program before any flight program. Verify that the app can connect to LiteWing and run code.<\/p>\n    <p>Select <strong>Run code<\/strong>. The LEDs should turn blue, blink for three seconds, and then turn off. If this does not happen, check the console and connection status before continuing.<\/p>\n  <\/div>\n<\/div>\n\n<div class=\"lw-side-by-side reverse\">\n  <div class=\"lw-sbs-image\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-blockly-first-controlled-flight.png\" alt=\"First Controlled Flight Block Stack\" loading=\"lazy\">\n    <div class=\"lw-sbs-caption\">First Flight Routine<\/div>\n  <\/div>\n  <div class=\"lw-sbs-text\">\n    <h3 class=\"wp-block-heading\" id=\"first-controlled-flight\"><span class=\"ez-toc-section\" id=\"First_controlled_flight\"><\/span>First controlled flight<span class=\"ez-toc-section-end\"><\/span><\/h3>\n    <p>Use this program only after the LED test works and the flight area is clear.<\/p>\n    <p>This program arms the drone, takes off to 0.3 m, holds position for three seconds, and lands. Keep one hand ready to use <strong>Land<\/strong> or, only in an emergency, <strong>Stop<\/strong> or <strong>Spacebar<\/strong>.<\/p>\n  <\/div>\n<\/div>\n\n<h2 class=\"wp-block-heading\" id=\"litewing-block-reference\"><span class=\"ez-toc-section\" id=\"LiteWing_block_reference\"><\/span>LiteWing block reference<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>The sections below describe every LiteWing-specific block in the app. Each entry explains the block&#8217;s purpose, the Python instruction created by the app, the values you can set, and a small example of where the block belongs in a program.<\/p>\n<p>Most flight blocks are <strong>command blocks<\/strong>. They run once, then continue to the next block below them. Sensor and modifier blocks are <strong>value blocks<\/strong>. They supply information or settings to another block and do not run by themselves. Standard Blockly blocks are covered after the LiteWing blocks.<\/p>\n<h3 class=\"wp-block-heading\" id=\"events\"><span class=\"ez-toc-section\" id=\"Events\"><\/span>Events<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div class=\"lw-block-card\">\n  <div class=\"lw-block-header cat-events-header\">\n    <div class=\"lw-block-header-left\">\n      <span class=\"lw-cat-badge cat-events\">Events<\/span>\n      <h4 class=\"wp-block-heading lw-block-title\" id=\"when-run-clicked-litewingwhenrun\"><span class=\"ez-toc-section\" id=\"When_Run_clicked\"><\/span>When Run clicked<span class=\"ez-toc-section-end\"><\/span><\/h4>\n    <\/div>\n    <code class=\"lw-block-slug\">litewing_when_run<\/code>\n  <\/div>\n  <div class=\"lw-block-body\">\n    <div class=\"lw-block-preview-box\">\n  <div class=\"lw-preview-label\">Block Structure<\/div>\n  <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-block-when-run-clicked.png\" alt=\"When Run Clicked Block\" class=\"lw-block-preview-img\" loading=\"lazy\">\n<\/div>\n    <div class=\"lw-block-desc\">\n      <p>&#8216;When Run clicked&#8217; block starts a normal LiteWing Blockly program. Blocks connected below run from top to bottom when you select <strong>Run code<\/strong>. Think of it as the green flag for an autonomous mission, it tells the app where the main program begins.<\/p>\n<p>Use one at the top of each flight program. You can arrange and store multiple programming block stacks in the same workspace at the same time.<\/p>\n<p>By moving the blocks connected below <strong>When Run clicked<\/strong>, you can choose which programming block stack runs when you select <strong>Run code<\/strong>. This is useful when you want to keep several program ideas in one workspace but run only one at a time.<\/p>\n    <\/div>\n    <div class=\"lw-code-container\">\n  <div class=\"lw-code-topbar\">\n    <span class=\"lw-code-lang\">Generated Python<\/span>\n  <\/div>\n  <pre class=\"wp-block-code lw-code-block\"><code class=\"language-python\"><span class=\"py-keyword\" style=\"color:#c586c0;font-weight:600;\">from<\/span> <span class=\"py-var\" style=\"color:#9cdcfe;\">litewing<\/span> <span class=\"py-keyword\" style=\"color:#c586c0;font-weight:600;\">import<\/span> <span class=\"py-class\" style=\"color:#4ec9b0;\">LiteWing<\/span>\n<span class=\"py-keyword\" style=\"color:#c586c0;font-weight:600;\">import<\/span> <span class=\"py-var\" style=\"color:#9cdcfe;\">time<\/span>\n\n<span class=\"py-var\" style=\"color:#9cdcfe;\">drone<\/span> <span class=\"py-punct\" style=\"color:#d4d4d4;\">=<\/span> <span class=\"py-class\" style=\"color:#4ec9b0;\">LiteWing<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">(<\/span><span class=\"py-str\" style=\"color:#ce9178;\">\"192.168.43.42\"<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">)<\/span>\n<span class=\"py-var\" style=\"color:#9cdcfe;\">drone<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">.<\/span><span class=\"py-func\" style=\"color:#dcdcaa;\">connect<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">(<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">)<\/span>\n\n<span class=\"py-comment\" style=\"color:#6a9955;font-style:italic;\"># (No main sequence attached)<\/span>\n\n<span class=\"py-var\" style=\"color:#9cdcfe;\">drone<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">.<\/span><span class=\"py-func\" style=\"color:#dcdcaa;\">disconnect<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">(<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">)<\/span><\/code><\/pre>\n<\/div>\n    <div class=\"lw-specs-section\">\n  \n  <p><strong>Parameters:<\/strong> None.<\/p>\n  <p><strong>Returns:<\/strong> None. It provides a connection for the command stack below it.<\/p>\n<\/div>\n    \n    <div class=\"lw-example-box\">\n  <div class=\"lw-example-header\">Example Routine in Blockly Workspace<\/div>\n  <div class=\"lw-example-img-wrap\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-example-when-run-clicked.png\" alt=\"When Run Clicked Example Routine\" loading=\"lazy\">\n  <\/div>\n<\/div>\n  <\/div>\n<\/div>\n\n<div class=\"lw-block-card\">\n  <div class=\"lw-block-header cat-events-header\">\n    <div class=\"lw-block-header-left\">\n      <span class=\"lw-cat-badge cat-events\">Events<\/span>\n      <h4 class=\"wp-block-heading lw-block-title\" id=\"when-key-pressed-litewingwhenkey\"><span class=\"ez-toc-section\" id=\"When_key_pressed\"><\/span>When key pressed<span class=\"ez-toc-section-end\"><\/span><\/h4>\n    <\/div>\n    <code class=\"lw-block-slug\">litewing_when_key<\/code>\n  <\/div>\n  <div class=\"lw-block-body\">\n    <div class=\"lw-block-preview-box\">\n  <div class=\"lw-preview-label\">Block Structure<\/div>\n  <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-block-when-key-pressed.png\" alt=\"When Key Pressed Event Block\" class=\"lw-block-preview-img\" loading=\"lazy\">\n<\/div>\n    <div class=\"lw-block-desc\">\n      <p>&#8216;When key pressed&#8217; block sets up an asynchronous keyboard teleoperation handler. When you press the configured key on your physical keyboard while the LiteWing Blockly window is active, the attached sub-routine runs immediately.<\/p>\n<p>Unlike a normal top-to-bottom stack, a key-event stack waits for the chosen key instead of running once and ending. This makes it useful for interactive programs.<\/p>\n    <\/div>\n    <div class=\"lw-code-container\">\n  <div class=\"lw-code-topbar\">\n    <span class=\"lw-code-lang\">Generated Python<\/span>\n  <\/div>\n  <pre class=\"wp-block-code lw-code-block\"><code class=\"language-python\"><span class=\"py-keyword\" style=\"color:#c586c0;font-weight:600;\">from<\/span> <span class=\"py-var\" style=\"color:#9cdcfe;\">litewing<\/span> <span class=\"py-keyword\" style=\"color:#c586c0;font-weight:600;\">import<\/span> <span class=\"py-class\" style=\"color:#4ec9b0;\">LiteWing<\/span>\n<span class=\"py-keyword\" style=\"color:#c586c0;font-weight:600;\">import<\/span> <span class=\"py-var\" style=\"color:#9cdcfe;\">time<\/span>\n\n<span class=\"py-var\" style=\"color:#9cdcfe;\">drone<\/span> <span class=\"py-punct\" style=\"color:#d4d4d4;\">=<\/span> <span class=\"py-class\" style=\"color:#4ec9b0;\">LiteWing<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">(<\/span><span class=\"py-str\" style=\"color:#ce9178;\">\"192.168.43.42\"<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">)<\/span>\n<span class=\"py-var\" style=\"color:#9cdcfe;\">drone<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">.<\/span><span class=\"py-func\" style=\"color:#dcdcaa;\">connect<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">(<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">)<\/span>\n\n<span class=\"py-keyword\" style=\"color:#c586c0;font-weight:600;\">def<\/span> <span class=\"py-var\" style=\"color:#9cdcfe;\">on_key_pressed<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">(<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">key<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">)<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">:<\/span>\n    <span class=\"py-func\" style=\"color:#dcdcaa;\">print<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">(<\/span><span class=\"py-str\" style=\"color:#ce9178;\">f\"Key EVENT: <\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">{<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">key<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">.<\/span><span class=\"py-func\" style=\"color:#dcdcaa;\">upper<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">(<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">)<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">}<\/span><span class=\"py-str\" style=\"color:#ce9178;\"> triggered\"<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">)<\/span>\n    <span class=\"py-keyword\" style=\"color:#c586c0;font-weight:600;\">if<\/span> <span class=\"py-var\" style=\"color:#9cdcfe;\">key<\/span> <span class=\"py-punct\" style=\"color:#d4d4d4;\">==<\/span> <span class=\"py-str\" style=\"color:#ce9178;\">'w'<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">:<\/span>\n        <span class=\"py-keyword\" style=\"color:#c586c0;font-weight:600;\">pass<\/span>\n\n<span class=\"py-var\" style=\"color:#9cdcfe;\">drone<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">.<\/span><span class=\"py-func\" style=\"color:#dcdcaa;\">on_key_press<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">(<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">on_key_pressed<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">)<\/span>\n\n<span class=\"py-comment\" style=\"color:#6a9955;font-style:italic;\"># (No main sequence attached)<\/span>\n<span class=\"py-comment\" style=\"color:#6a9955;font-style:italic;\"># Keeping script alive for key events<\/span>\n<span class=\"py-keyword\" style=\"color:#c586c0;font-weight:600;\">while<\/span> <span class=\"py-var\" style=\"color:#9cdcfe;\">drone<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">.<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">is_connected<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">:<\/span>\n    <span class=\"py-var\" style=\"color:#9cdcfe;\">time<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">.<\/span><span class=\"py-func\" style=\"color:#dcdcaa;\">sleep<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">(<\/span><span class=\"py-num\" style=\"color:#b5cea8;\">0.5<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">)<\/span>\n\n<span class=\"py-var\" style=\"color:#9cdcfe;\">drone<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">.<\/span><span class=\"py-func\" style=\"color:#dcdcaa;\">disconnect<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">(<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">)<\/span><\/code><\/pre>\n<\/div>\n    <div class=\"lw-specs-section\">\n  <figure class=\"wp-block-table is-style-stripes\">\n<table class=\"has-fixed-layout\">\n<thead><tr>\n<th>Parameter<\/th>\n<th>Type<\/th>\n<th>Options<\/th>\n<th>Default<\/th>\n<\/tr><\/thead>\n<tbody>\n<tr>\n<td><strong>KEY<\/strong><\/td>\n<td>Dropdown<\/td>\n<td>W, A, S, D, Q, E, R, F, Arrow Keys<\/td>\n<td>W<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n  \n  <p><strong>Returns:<\/strong> None. It provides a connection for commands below it.<\/p>\n<\/div>\n    \n    <div class=\"lw-example-box\">\n  <div class=\"lw-example-header\">Example Routine in Blockly Workspace<\/div>\n  <div class=\"lw-example-img-wrap\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-example-keyboard-teleoperation.png\" alt=\"Keyboard Teleoperation Example Stack\" loading=\"lazy\">\n  <\/div>\n<\/div>\n  <\/div>\n<\/div>\n<h3 class=\"wp-block-heading\" id=\"flight-commands\"><span class=\"ez-toc-section\" id=\"Flight_Commands\"><\/span>Flight Commands<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n<div class=\"lw-block-card\">\n  <div class=\"lw-block-header cat-flight-header\">\n    <div class=\"lw-block-header-left\">\n      <span class=\"lw-cat-badge cat-flight\">Flight Commands<\/span>\n      <h4 class=\"wp-block-heading lw-block-title\" id=\"arm-drone-litewingarm\"><span class=\"ez-toc-section\" id=\"Arm_drone\"><\/span>Arm drone<span class=\"ez-toc-section-end\"><\/span><\/h4>\n    <\/div>\n    <code class=\"lw-block-slug\">litewing_arm<\/code>\n  <\/div>\n  <div class=\"lw-block-body\">\n    <div class=\"lw-block-preview-box\">\n  <div class=\"lw-preview-label\">Block Structure<\/div>\n  <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-block-arm-drone.png\" alt=\"Arm Drone Block\" class=\"lw-block-preview-img\" loading=\"lazy\">\n<\/div>\n    <div class=\"lw-block-desc\">\n      <p>Arm drone block prepares the drone for flight. It tells the connected LiteWing controller that the program is about to use flight commands and gives the flight system a chance to confirm that it is ready for takeoff. An arming does not lift the drone or make it move by itself.<\/p>\n<p>An Arm drone block must be used before a Takeoff block. Place it after any LED-ready indication or logging setup and immediately before the first takeoff in a basic program.<\/p>\n    <\/div>\n    <div class=\"lw-code-container\">\n  <div class=\"lw-code-topbar\">\n    <span class=\"lw-code-lang\">Generated Python<\/span>\n  <\/div>\n  <pre class=\"wp-block-code lw-code-block\"><code class=\"language-python\"><span class=\"py-var\" style=\"color:#9cdcfe;\">drone<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">.<\/span><span class=\"py-func\" style=\"color:#dcdcaa;\">arm<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">(<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">)<\/span><\/code><\/pre>\n<\/div>\n    <div class=\"lw-specs-section\">\n  \n  <p><strong>Parameters:<\/strong> None<\/p>\n  <p><strong>Returns:<\/strong> None<\/p>\n<\/div>\n    \n    <div class=\"lw-example-box\">\n  <div class=\"lw-example-header\">Example Routine in Blockly Workspace<\/div>\n  <div class=\"lw-example-img-wrap\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-example-arm-drone-sequence.png\" alt=\"Arm Drone Sequence Example\" loading=\"lazy\">\n  <\/div>\n<\/div>\n  <\/div>\n<\/div>\n\n<div class=\"lw-block-card\">\n  <div class=\"lw-block-header cat-flight-header\">\n    <div class=\"lw-block-header-left\">\n      <span class=\"lw-cat-badge cat-flight\">Flight Commands<\/span>\n      <h4 class=\"wp-block-heading lw-block-title\" id=\"takeoff-litewingtakeoff\"><span class=\"ez-toc-section\" id=\"Takeoff\"><\/span>Takeoff<span class=\"ez-toc-section-end\"><\/span><\/h4>\n    <\/div>\n    <code class=\"lw-block-slug\">litewing_takeoff<\/code>\n  <\/div>\n  <div class=\"lw-block-body\">\n    <div class=\"lw-block-preview-box\">\n  <div class=\"lw-preview-label\">Block Structure<\/div>\n  <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-block-takeoff.png\" alt=\"Takeoff Block\" class=\"lw-block-preview-img\" loading=\"lazy\">\n<\/div>\n    <div class=\"lw-block-desc\">\n      <p>Takeoff block makes the drone take off. The LiteWing Drone rises to the selected height above the ground, using the Drone Positioning Module&#8217;s downward-facing height sensor as part of the height-hold system. A Takeoff block must be used after an Arm drone and before any flight movement.<\/p>\n<p>Takeoff is an autonomous command, not a manual throttle control. After reaching the selected height, use Hover or another flight command to define what happens next.<\/p>\n    <\/div>\n    <div class=\"lw-code-container\">\n  <div class=\"lw-code-topbar\">\n    <span class=\"lw-code-lang\">Generated Python<\/span>\n  <\/div>\n  <pre class=\"wp-block-code lw-code-block\"><code class=\"language-python\"><span class=\"py-var\" style=\"color:#9cdcfe;\">drone<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">.<\/span><span class=\"py-func\" style=\"color:#dcdcaa;\">takeoff<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">(<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">height<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">)<\/span> <span class=\"py-builtin\" style=\"color:#569cd6;\">or<\/span> <span class=\"py-var\" style=\"color:#9cdcfe;\">drone<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">.<\/span><span class=\"py-func\" style=\"color:#dcdcaa;\">takeoff<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">(<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">height<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">,<\/span> <span class=\"py-var\" style=\"color:#9cdcfe;\">duration<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">)<\/span><\/code><\/pre>\n<\/div>\n    <div class=\"lw-specs-section\">\n  <figure class=\"wp-block-table is-style-stripes\">\n<table class=\"has-fixed-layout\">\n<thead><tr>\n<th>Parameter<\/th>\n<th>Type<\/th>\n<th>Default<\/th>\n<th>Range<\/th>\n<th>Units<\/th>\n<\/tr><\/thead>\n<tbody>\n<tr>\n<td><strong>HEIGHT<\/strong><\/td>\n<td>Number field<\/td>\n<td>0.3<\/td>\n<td>0.2 to 1.0<\/td>\n<td>meters (m)<\/td>\n<\/tr>\n<tr>\n<td><strong>DURATION<\/strong><\/td>\n<td>Value input (optional)<\/td>\n<td>None<\/td>\n<td>Any Number block or litewing_duration<\/td>\n<td>seconds (s)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n  \n  <p><strong>Returns:<\/strong> None.<\/p>\n<\/div>\n    <div class=\"callout-box callout-note\"><strong>NOTE:<\/strong> Start at 0.3 m for the first flight. The takeoff height can be modified after a safe test.<\/div>\n    <div class=\"lw-example-box\">\n  <div class=\"lw-example-header\">Example Routine in Blockly Workspace<\/div>\n  <div class=\"lw-example-img-wrap\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-example-takeoff-and-hover.png\" alt=\"Takeoff and Hover Example\" loading=\"lazy\">\n  <\/div>\n<\/div>\n  <\/div>\n<\/div>\n\n<div class=\"lw-block-card\">\n  <div class=\"lw-block-header cat-flight-header\">\n    <div class=\"lw-block-header-left\">\n      <span class=\"lw-cat-badge cat-flight\">Flight Commands<\/span>\n      <h4 class=\"wp-block-heading lw-block-title\" id=\"hover-litewinghover\"><span class=\"ez-toc-section\" id=\"Hover\"><\/span>Hover<span class=\"ez-toc-section-end\"><\/span><\/h4>\n    <\/div>\n    <code class=\"lw-block-slug\">litewing_hover<\/code>\n  <\/div>\n  <div class=\"lw-block-body\">\n    <div class=\"lw-block-preview-box\">\n  <div class=\"lw-preview-label\">Block Structure<\/div>\n  <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-block-hover.png\" alt=\"Hover Block\" class=\"lw-block-preview-img\" loading=\"lazy\">\n<\/div>\n    <div class=\"lw-block-desc\">\n      <p>Hover block makes the drone hold its current position for a chosen time. The Drone Positioning Module uses its height sensor and optical-flow sensor to help the drone maintain a stable hover.<\/p>\n<p>During a hover, the height sensor measures distance to the ground while the optical-flow sensor measures movement across the floor texture. The flight controller uses these measurements to correct small height and position changes. A plain, dark, glossy, or poorly lit floor can reduce optical-flow accuracy.<\/p>\n    <\/div>\n    <div class=\"lw-code-container\">\n  <div class=\"lw-code-topbar\">\n    <span class=\"lw-code-lang\">Generated Python<\/span>\n  <\/div>\n  <pre class=\"wp-block-code lw-code-block\"><code class=\"language-python\"><span class=\"py-var\" style=\"color:#9cdcfe;\">drone<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">.<\/span><span class=\"py-func\" style=\"color:#dcdcaa;\">hover<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">(<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">seconds<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">)<\/span><\/code><\/pre>\n<\/div>\n    <div class=\"lw-specs-section\">\n  <figure class=\"wp-block-table is-style-stripes\">\n<table class=\"has-fixed-layout\">\n<thead><tr>\n<th>Parameter<\/th>\n<th>Type<\/th>\n<th>Default<\/th>\n<th>Range<\/th>\n<th>Units<\/th>\n<\/tr><\/thead>\n<tbody>\n<tr>\n<td><strong>SECONDS<\/strong><\/td>\n<td>Number field<\/td>\n<td>3<\/td>\n<td>3 to 60<\/td>\n<td>seconds (s)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n  \n  <p><strong>Returns:<\/strong> None.<\/p>\n<\/div>\n    <div class=\"callout-box callout-note\"><strong>NOTE:<\/strong> Use Hover after takeoff and between movement commands so the drone can stabilize.<\/div>\n    <div class=\"lw-example-box\">\n  <div class=\"lw-example-header\">Example Routine in Blockly Workspace<\/div>\n  <div class=\"lw-example-img-wrap\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-example-hover-sequence.png\" alt=\"Hover Sequence Example\" loading=\"lazy\">\n  <\/div>\n<\/div>\n  <\/div>\n<\/div>\n\n<div class=\"lw-block-card\">\n  <div class=\"lw-block-header cat-flight-header\">\n    <div class=\"lw-block-header-left\">\n      <span class=\"lw-cat-badge cat-flight\">Flight Commands<\/span>\n      <h4 class=\"wp-block-heading lw-block-title\" id=\"change-height-litewingchangeheight\"><span class=\"ez-toc-section\" id=\"Change_height\"><\/span>Change height<span class=\"ez-toc-section-end\"><\/span><\/h4>\n    <\/div>\n    <code class=\"lw-block-slug\">litewing_change_height<\/code>\n  <\/div>\n  <div class=\"lw-block-body\">\n    <div class=\"lw-block-preview-box\">\n  <div class=\"lw-preview-label\">Block Structure<\/div>\n  <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-block-change-height.png\" alt=\"Change Height Block\" class=\"lw-block-preview-img\" loading=\"lazy\">\n<\/div>\n    <div class=\"lw-block-desc\">\n      <p>This block changes the current hover height by a relative amount. It does not set an absolute height. For example, if LiteWing is hovering at 0.3 m, increasing height by 0.1 m requests a new height of about 0.4 m.<\/p>\n<p>Use this block after takeoff while the drone is already in a stable hover. It is useful for simple step-up and step-down activities, but large changes are not recommended for a first indoor program.<\/p>\n    <\/div>\n    <div class=\"lw-code-container\">\n  <div class=\"lw-code-topbar\">\n    <span class=\"lw-code-lang\">Generated Python<\/span>\n  <\/div>\n  <pre class=\"wp-block-code lw-code-block\"><code class=\"language-python\"><span class=\"py-var\" style=\"color:#9cdcfe;\">drone<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">.<\/span><span class=\"py-func\" style=\"color:#dcdcaa;\">change_height<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">(<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">delta<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">,<\/span> <span class=\"py-var\" style=\"color:#9cdcfe;\">min_h<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">=<\/span><span class=\"py-num\" style=\"color:#b5cea8;\">0.15<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">,<\/span> <span class=\"py-var\" style=\"color:#9cdcfe;\">max_h<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">=<\/span><span class=\"py-num\" style=\"color:#b5cea8;\">2.5<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">)<\/span><\/code><\/pre>\n<\/div>\n    <div class=\"lw-specs-section\">\n  <figure class=\"wp-block-table is-style-stripes\">\n<table class=\"has-fixed-layout\">\n<thead><tr>\n<th>Parameter<\/th>\n<th>Type<\/th>\n<th>Default<\/th>\n<th>Options \/ Range<\/th>\n<th>Units<\/th>\n<\/tr><\/thead>\n<tbody>\n<tr>\n<td><strong>DIRECTION<\/strong><\/td>\n<td>Dropdown<\/td>\n<td>Increase<\/td>\n<td>Increase (+1.0), Decrease (-1.0)<\/td>\n<td>&#8211;<\/td>\n<\/tr>\n<tr>\n<td><strong>AMOUNT<\/strong><\/td>\n<td>Float<\/td>\n<td>0.1<\/td>\n<td>0.1 to 1.0<\/td>\n<td>meters (m)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n  \n  <p><strong>Returns:<\/strong> None.<\/p>\n<\/div>\n    <div class=\"callout-box callout-note\"><strong>NOTE:<\/strong> Use small changes indoors. The generated command applies a 0.15 m to 1.0 m safety range.<\/div>\n    <div class=\"lw-example-box\">\n  <div class=\"lw-example-header\">Example Routine in Blockly Workspace<\/div>\n  <div class=\"lw-example-img-wrap\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-example-change-height-staircase.png\" alt=\"Change Height Staircase Flight Example\" loading=\"lazy\">\n  <\/div>\n<\/div>\n  <\/div>\n<\/div>\n\n<div class=\"lw-block-card\">\n  <div class=\"lw-block-header cat-flight-header\">\n    <div class=\"lw-block-header-left\">\n      <span class=\"lw-cat-badge cat-flight\">Flight Commands<\/span>\n      <h4 class=\"wp-block-heading lw-block-title\" id=\"land-litewingland\"><span class=\"ez-toc-section\" id=\"Land\"><\/span>Land<span class=\"ez-toc-section-end\"><\/span><\/h4>\n    <\/div>\n    <code class=\"lw-block-slug\">litewing_land<\/code>\n  <\/div>\n  <div class=\"lw-block-body\">\n    <div class=\"lw-block-preview-box\">\n  <div class=\"lw-preview-label\">Block Structure<\/div>\n  <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-block-land.png\" alt=\"Land Block\" class=\"lw-block-preview-img\" loading=\"lazy\">\n<\/div>\n    <div class=\"lw-block-desc\">\n      <p>Land block makes the drone descend in a controlled way and stop its motors after touchdown. Put a Land block at the end of every flight program.<\/p>\n<p>Land is the normal way to finish a flight because it requests a controlled descent. It is different from Emergency Stop, which removes motor power immediately.<\/p>\n    <\/div>\n    <div class=\"lw-code-container\">\n  <div class=\"lw-code-topbar\">\n    <span class=\"lw-code-lang\">Generated Python<\/span>\n  <\/div>\n  <pre class=\"wp-block-code lw-code-block\"><code class=\"language-python\"><span class=\"py-var\" style=\"color:#9cdcfe;\">drone<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">.<\/span><span class=\"py-func\" style=\"color:#dcdcaa;\">land<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">(<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">)<\/span> <span class=\"py-builtin\" style=\"color:#569cd6;\">or<\/span> <span class=\"py-var\" style=\"color:#9cdcfe;\">drone<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">.<\/span><span class=\"py-func\" style=\"color:#dcdcaa;\">land<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">(<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">duration<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">)<\/span><\/code><\/pre>\n<\/div>\n    <div class=\"lw-specs-section\">\n  <figure class=\"wp-block-table is-style-stripes\">\n<table class=\"has-fixed-layout\">\n<thead><tr>\n<th>Parameter<\/th>\n<th>Type<\/th>\n<th>Default<\/th>\n<th>Range<\/th>\n<th>Units<\/th>\n<\/tr><\/thead>\n<tbody>\n<tr>\n<td>DURATION (optional)<\/td>\n<td>Value input (Float)<\/td>\n<td>1<\/td>\n<td>0.1 to 10<\/td>\n<td>seconds (s)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n  \n  <p><strong>Returns:<\/strong> None.<\/p>\n<\/div>\n    \n    <div class=\"lw-example-box\">\n  <div class=\"lw-example-header\">Example Routine in Blockly Workspace<\/div>\n  <div class=\"lw-example-img-wrap\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-example-land-sequence.png\" alt=\"Land Sequence Example\" loading=\"lazy\">\n  <\/div>\n<\/div>\n  <\/div>\n<\/div>\n\n<div class=\"lw-block-card\">\n  <div class=\"lw-block-header cat-flight-header\">\n    <div class=\"lw-block-header-left\">\n      <span class=\"lw-cat-badge cat-flight\">Flight Commands<\/span>\n      <h4 class=\"wp-block-heading lw-block-title\" id=\"emergency-stop-litewingemergencystop\"><span class=\"ez-toc-section\" id=\"Emergency_stop\"><\/span>Emergency stop<span class=\"ez-toc-section-end\"><\/span><\/h4>\n    <\/div>\n    <code class=\"lw-block-slug\">litewing_emergency_stop<\/code>\n  <\/div>\n  <div class=\"lw-block-body\">\n    <div class=\"lw-block-preview-box\">\n  <div class=\"lw-preview-label\">Block Structure<\/div>\n  <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-block-emergency-stop.png\" alt=\"Emergency Stop Block\" class=\"lw-block-preview-img\" loading=\"lazy\">\n<\/div>\n    <div class=\"lw-block-desc\">\n      <p>This block immediately cuts motor power. The drone will fall, so this block is only for an emergency such as an imminent collision, propeller entanglement, or loss of safe control.<\/p>\n<p>Emergency Stop is deliberately different from a landing command. It prioritises stopping the propellers over maintaining altitude, which is why it should never be used as the usual last block of a flight program.<\/p>\n    <\/div>\n    <div class=\"lw-code-container\">\n  <div class=\"lw-code-topbar\">\n    <span class=\"lw-code-lang\">Generated Python<\/span>\n  <\/div>\n  <pre class=\"wp-block-code lw-code-block\"><code class=\"language-python\"><span class=\"py-var\" style=\"color:#9cdcfe;\">drone<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">.<\/span><span class=\"py-func\" style=\"color:#dcdcaa;\">emergency_stop<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">(<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">)<\/span><\/code><\/pre>\n<\/div>\n    <div class=\"lw-specs-section\">\n  \n  <p><strong>Parameters:<\/strong> None.<\/p>\n  <p><strong>Returns:<\/strong> None.<\/p>\n<\/div>\n    <div class=\"callout-box callout-note\"><strong>NOTE:<\/strong> Use Land for normal flight completion. Stop and Spacebar are emergency controls.<\/div>\n    <div class=\"lw-example-box\">\n  <div class=\"lw-example-header\">Example Routine in Blockly Workspace<\/div>\n  <div class=\"lw-example-img-wrap\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-example-emergency-stop-conditional.png\" alt=\"Emergency Stop Conditional Example\" loading=\"lazy\">\n  <\/div>\n<\/div>\n  <\/div>\n<\/div>\n<h3 class=\"wp-block-heading\" id=\"leds-commands\"><span class=\"ez-toc-section\" id=\"LEDs_Lights_Commands\"><\/span>LEDs &amp; Lights Commands<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n<div class=\"lw-block-card\">\n  <div class=\"lw-block-header cat-leds-header\">\n    <div class=\"lw-block-header-left\">\n      <span class=\"lw-cat-badge cat-leds\">LEDs &amp; Lights<\/span>\n      <h4 class=\"wp-block-heading lw-block-title\" id=\"set-all-leds-color-litewingsetledcolor\"><span class=\"ez-toc-section\" id=\"Set_all_LEDs_color\"><\/span>Set all LEDs color<span class=\"ez-toc-section-end\"><\/span><\/h4>\n    <\/div>\n    <code class=\"lw-block-slug\">litewing_set_led_color<\/code>\n  <\/div>\n  <div class=\"lw-block-body\">\n    <div class=\"lw-block-preview-box\">\n  <div class=\"lw-preview-label\">Block Structure<\/div>\n  <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-block-set-all-leds-color.png\" alt=\"Set All LEDs Color Block\" class=\"lw-block-preview-img\" loading=\"lazy\">\n<\/div>\n    <div class=\"lw-block-desc\">\n      <p>This block sets all four LEDs on the Drone Positioning Module to one RGB colour. It is useful for a safe connection test or for showing a program state, such as green for ready, blue for connected, or red for a warning.<\/p>\n<p>RGB colour uses three light levels: red, green, and blue. A value of 0 turns that colour channel off and 255 gives its highest intensity. Combining channels creates other colours, such as yellow from red 255, green 255, and blue 0\\.<\/p>\n    <\/div>\n    <div class=\"lw-code-container\">\n  <div class=\"lw-code-topbar\">\n    <span class=\"lw-code-lang\">Generated Python<\/span>\n  <\/div>\n  <pre class=\"wp-block-code lw-code-block\"><code class=\"language-python\"><span class=\"py-var\" style=\"color:#9cdcfe;\">drone<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">.<\/span><span class=\"py-func\" style=\"color:#dcdcaa;\">set_led_color<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">(<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">r<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">,<\/span> <span class=\"py-var\" style=\"color:#9cdcfe;\">g<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">,<\/span> <span class=\"py-var\" style=\"color:#9cdcfe;\">b<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">)<\/span><\/code><\/pre>\n<\/div>\n    <div class=\"lw-specs-section\">\n  <figure class=\"wp-block-table is-style-stripes\">\n<table class=\"has-fixed-layout\">\n<thead><tr>\n<th>Parameter<\/th>\n<th>Default<\/th>\n<th>Range<\/th>\n<th>Description<\/th>\n<\/tr><\/thead>\n<tbody>\n<tr>\n<td>R<\/td>\n<td>0<\/td>\n<td>0 to 255<\/td>\n<td>Red channel intensity.<\/td>\n<\/tr>\n<tr>\n<td>G<\/td>\n<td>255<\/td>\n<td>0 to 255<\/td>\n<td>Green channel intensity.<\/td>\n<\/tr>\n<tr>\n<td>B<\/td>\n<td>0<\/td>\n<td>0 to 255<\/td>\n<td>Blue channel intensity.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n  \n  <p><strong>Returns:<\/strong> None.<\/p>\n<\/div>\n    \n    <div class=\"lw-example-box\">\n  <div class=\"lw-example-header\">Example Routine in Blockly Workspace<\/div>\n  <div class=\"lw-example-img-wrap\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-example-set-all-leds-color.png\" alt=\"Set All LEDs Color Flight Status Example\" loading=\"lazy\">\n  <\/div>\n<\/div>\n  <\/div>\n<\/div>\n\n<div class=\"lw-block-card\">\n  <div class=\"lw-block-header cat-leds-header\">\n    <div class=\"lw-block-header-left\">\n      <span class=\"lw-cat-badge cat-leds\">LEDs &amp; Lights<\/span>\n      <h4 class=\"wp-block-heading lw-block-title\" id=\"set-single-led-litewingsetled\"><span class=\"ez-toc-section\" id=\"Set_single_LED\"><\/span>Set single LED<span class=\"ez-toc-section-end\"><\/span><\/h4>\n    <\/div>\n    <code class=\"lw-block-slug\">litewing_set_led<\/code>\n  <\/div>\n  <div class=\"lw-block-body\">\n    <div class=\"lw-block-preview-box\">\n  <div class=\"lw-preview-label\">Block Structure<\/div>\n  <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-block-set-single-led.png\" alt=\"Set Single LED Block\" class=\"lw-block-preview-img\" loading=\"lazy\">\n<\/div>\n    <div class=\"lw-block-desc\">\n      <p>This block sets one selected LED to an RGB colour. The LED index identifies one of the four LEDs on the Drone Positioning Module, allowing a program to create patterns instead of using a single all-LED colour.<\/p>\n    <\/div>\n    <div class=\"lw-code-container\">\n  <div class=\"lw-code-topbar\">\n    <span class=\"lw-code-lang\">Generated Python<\/span>\n  <\/div>\n  <pre class=\"wp-block-code lw-code-block\"><code class=\"language-python\"><span class=\"py-var\" style=\"color:#9cdcfe;\">drone<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">.<\/span><span class=\"py-func\" style=\"color:#dcdcaa;\">set_led<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">(<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">index<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">,<\/span> <span class=\"py-var\" style=\"color:#9cdcfe;\">r<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">,<\/span> <span class=\"py-var\" style=\"color:#9cdcfe;\">g<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">,<\/span> <span class=\"py-var\" style=\"color:#9cdcfe;\">b<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">)<\/span><\/code><\/pre>\n<\/div>\n    <div class=\"lw-specs-section\">\n  <figure class=\"wp-block-table is-style-stripes\">\n<table class=\"has-fixed-layout\">\n<thead><tr>\n<th>Parameter<\/th>\n<th>Type<\/th>\n<th>Default<\/th>\n<th>Range<\/th>\n<th>Description<\/th>\n<\/tr><\/thead>\n<tbody>\n<tr>\n<td>INDEX<\/td>\n<td>Dropdown<\/td>\n<td>0<\/td>\n<td>0, 1, 2, 3<\/td>\n<td>Index of the target LED on the drone arms.<\/td>\n<\/tr>\n<tr>\n<td>R<\/td>\n<td>Number field<\/td>\n<td>255<\/td>\n<td>0 to 255<\/td>\n<td>Red channel intensity.<\/td>\n<\/tr>\n<tr>\n<td>G<\/td>\n<td>Number field<\/td>\n<td>0<\/td>\n<td>0 to 255<\/td>\n<td>Green channel intensity.<\/td>\n<\/tr>\n<tr>\n<td>B<\/td>\n<td>Number field<\/td>\n<td>0<\/td>\n<td>0 to 255<\/td>\n<td>Blue channel intensity.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n  \n  <p><strong>Returns:<\/strong> None.<\/p>\n<\/div>\n    \n    <div class=\"lw-example-box\">\n  <div class=\"lw-example-header\">Example Routine in Blockly Workspace<\/div>\n  <div class=\"lw-example-img-wrap\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-example-navigation-lights-single-led.png\" alt=\"Navigation Lights Single LED Example\" loading=\"lazy\">\n  <\/div>\n<\/div>\n  <\/div>\n<\/div>\n\n<div class=\"lw-block-card\">\n  <div class=\"lw-block-header cat-leds-header\">\n    <div class=\"lw-block-header-left\">\n      <span class=\"lw-cat-badge cat-leds\">LEDs &amp; Lights<\/span>\n      <h4 class=\"wp-block-heading lw-block-title\" id=\"blink-leds-litewingblinkleds\"><span class=\"ez-toc-section\" id=\"Blink_LEDs\"><\/span>Blink LEDs<span class=\"ez-toc-section-end\"><\/span><\/h4>\n    <\/div>\n    <code class=\"lw-block-slug\">litewing_blink_leds<\/code>\n  <\/div>\n  <div class=\"lw-block-body\">\n    <div class=\"lw-block-preview-box\">\n  <div class=\"lw-preview-label\">Block Structure<\/div>\n  <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-block-blink-leds.png\" alt=\"Blink LEDs Block\" class=\"lw-block-preview-img\" loading=\"lazy\">\n<\/div>\n    <div class=\"lw-block-desc\">\n      <p>This block makes all LEDs blink using the selected off and on times. The off time tells the app how long the LEDs stay dark, the on time tells it how long the LEDs stay illuminated.<\/p>\n    <\/div>\n    <div class=\"lw-code-container\">\n  <div class=\"lw-code-topbar\">\n    <span class=\"lw-code-lang\">Generated Python<\/span>\n  <\/div>\n  <pre class=\"wp-block-code lw-code-block\"><code class=\"language-python\"><span class=\"py-var\" style=\"color:#9cdcfe;\">drone<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">.<\/span><span class=\"py-func\" style=\"color:#dcdcaa;\">blink_leds<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">(<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">off_ms<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">,<\/span> <span class=\"py-var\" style=\"color:#9cdcfe;\">on_ms<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">)<\/span><\/code><\/pre>\n<\/div>\n    <div class=\"lw-specs-section\">\n  <figure class=\"wp-block-table is-style-stripes\">\n<table class=\"has-fixed-layout\">\n<thead><tr>\n<th>Parameter<\/th>\n<th>Type<\/th>\n<th>Default<\/th>\n<th>Range<\/th>\n<th>Units<\/th>\n<th>Description<\/th>\n<\/tr><\/thead>\n<tbody>\n<tr>\n<td>OFF_MS<\/td>\n<td>Number field<\/td>\n<td>500<\/td>\n<td>50 to 5000<\/td>\n<td>ms<\/td>\n<td>Milliseconds LEDs stay turned OFF per cycle.<\/td>\n<\/tr>\n<tr>\n<td>ON_MS<\/td>\n<td>Number field<\/td>\n<td>500<\/td>\n<td>50 to 5000<\/td>\n<td>ms<\/td>\n<td>Milliseconds LEDs stay turned ON per cycle.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n  \n  <p><strong>Returns:<\/strong> None.<\/p>\n<\/div>\n    \n    <div class=\"lw-example-box\">\n  <div class=\"lw-example-header\">Example Routine in Blockly Workspace<\/div>\n  <div class=\"lw-example-img-wrap\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-example-blink-leds-alarm.png\" alt=\"Blink LEDs Alarm Example\" loading=\"lazy\">\n  <\/div>\n<\/div>\n  <\/div>\n<\/div>\n\n<div class=\"lw-block-card\">\n  <div class=\"lw-block-header cat-leds-header\">\n    <div class=\"lw-block-header-left\">\n      <span class=\"lw-cat-badge cat-leds\">LEDs &amp; Lights<\/span>\n      <h4 class=\"wp-block-heading lw-block-title\" id=\"clear-all-leds-litewingclearleds\"><span class=\"ez-toc-section\" id=\"Clear_all_LEDs\"><\/span>Clear all LEDs<span class=\"ez-toc-section-end\"><\/span><\/h4>\n    <\/div>\n    <code class=\"lw-block-slug\">litewing_clear_leds<\/code>\n  <\/div>\n  <div class=\"lw-block-body\">\n    <div class=\"lw-block-preview-box\">\n  <div class=\"lw-preview-label\">Block Structure<\/div>\n  <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-block-clear-all-leds.png\" alt=\"Clear All LEDs Block\" class=\"lw-block-preview-img\" loading=\"lazy\">\n<\/div>\n    <div class=\"lw-block-desc\">\n      <p>This block turns all four LEDs off. Use it to finish a visual test cleanly or to remove a status colour after a program is complete.<\/p>\n    <\/div>\n    <div class=\"lw-code-container\">\n  <div class=\"lw-code-topbar\">\n    <span class=\"lw-code-lang\">Generated Python<\/span>\n  <\/div>\n  <pre class=\"wp-block-code lw-code-block\"><code class=\"language-python\"><span class=\"py-var\" style=\"color:#9cdcfe;\">drone<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">.<\/span><span class=\"py-func\" style=\"color:#dcdcaa;\">clear_leds<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">(<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">)<\/span><\/code><\/pre>\n<\/div>\n    <div class=\"lw-specs-section\">\n  \n  <p><strong>Parameters:<\/strong> None.<\/p>\n  <p><strong>Returns:<\/strong> None.<\/p>\n<\/div>\n    \n    <div class=\"lw-example-box\">\n  <div class=\"lw-example-header\">Example Routine in Blockly Workspace<\/div>\n  <div class=\"lw-example-img-wrap\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-example-clear-all-leds-touchdown.png\" alt=\"Clear All LEDs Touchdown Example\" loading=\"lazy\">\n  <\/div>\n<\/div>\n  <\/div>\n<\/div>\n<h3 class=\"wp-block-heading\" id=\"movement-commands\"><span class=\"ez-toc-section\" id=\"Movement_Commands\"><\/span>Movement Commands<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Movement blocks are flight commands. Use them only after Arm drone and Takeoff. A <strong>speed<\/strong> value can be placed in the open socket of a movement block.<\/p>\n<p>These are distance-based commands, not continuous joystick controls. The drone completes the requested movement, then the next block in the stack runs. Begin with short distances and add a Hover block after a movement when you want the drone to settle before the next command.<\/p>\n\n<div class=\"lw-block-card\">\n  <div class=\"lw-block-header cat-movement-header\">\n    <div class=\"lw-block-header-left\">\n      <span class=\"lw-cat-badge cat-movement\">Movement<\/span>\n      <h4 class=\"wp-block-heading lw-block-title\" id=\"pitch-forward-litewingpitchforward\"><span class=\"ez-toc-section\" id=\"Pitch_forward\"><\/span>Pitch forward<span class=\"ez-toc-section-end\"><\/span><\/h4>\n    <\/div>\n    <code class=\"lw-block-slug\">litewing_pitch_forward<\/code>\n  <\/div>\n  <div class=\"lw-block-body\">\n    <div class=\"lw-block-preview-box\">\n  <div class=\"lw-preview-label\">Block Structure<\/div>\n  <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-block-pitch-forward.png\" alt=\"Pitch Forward Block\" class=\"lw-block-preview-img\" loading=\"lazy\">\n<\/div>\n    <div class=\"lw-block-desc\">\n      <p>Pitch forward block moves the drone forward along its longitudinal X-axis by the selected distance. &#8220;<strong>Forward<\/strong>&#8221; means the direction LiteWing is facing when the command runs, so a rotation changes the direction of a later forward command.<\/p>\n    <\/div>\n    <div class=\"lw-code-container\">\n  <div class=\"lw-code-topbar\">\n    <span class=\"lw-code-lang\">Generated Python<\/span>\n  <\/div>\n  <pre class=\"wp-block-code lw-code-block\"><code class=\"language-python\"><span class=\"py-var\" style=\"color:#9cdcfe;\">drone<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">.<\/span><span class=\"py-func\" style=\"color:#dcdcaa;\">pitch_forward<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">(<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">distance<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">)<\/span> <span class=\"py-builtin\" style=\"color:#569cd6;\">or<\/span> <span class=\"py-var\" style=\"color:#9cdcfe;\">drone<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">.<\/span><span class=\"py-func\" style=\"color:#dcdcaa;\">pitch_forward<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">(<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">distance<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">,<\/span> <span class=\"py-var\" style=\"color:#9cdcfe;\">speed<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">=<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">value<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">)<\/span><\/code><\/pre>\n<\/div>\n    <div class=\"lw-specs-section\">\n  <figure class=\"wp-block-table is-style-stripes\">\n<table class=\"has-fixed-layout\">\n<thead><tr>\n<th>Parameter<\/th>\n<th>Type<\/th>\n<th>Default<\/th>\n<th>Range<\/th>\n<th>Units<\/th>\n<th>Description<\/th>\n<\/tr><\/thead>\n<tbody>\n<tr>\n<td>DISTANCE<\/td>\n<td>Number field<\/td>\n<td>0.3<\/td>\n<td>0.1 to 2.0<\/td>\n<td>meters (m)<\/td>\n<td>Linear distance to translate forward.<\/td>\n<\/tr>\n<tr>\n<td>SPEED (optional)<\/td>\n<td>Value input<\/td>\n<td>None<\/td>\n<td>0.1 to 2.0<\/td>\n<td>m\/s<\/td>\n<td>Optional translation velocity. Defaults to 0.2 m\/s.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n  \n  <p><strong>Returns:<\/strong> None.<\/p>\n<\/div>\n    \n    <div class=\"lw-example-box\">\n  <div class=\"lw-example-header\">Example Routine in Blockly Workspace<\/div>\n  <div class=\"lw-example-img-wrap\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-example-pitch-forward-translation.png\" alt=\"Pitch Forward Linear Translation Example\" loading=\"lazy\">\n  <\/div>\n<\/div>\n  <\/div>\n<\/div>\n\n<div class=\"lw-block-card\">\n  <div class=\"lw-block-header cat-movement-header\">\n    <div class=\"lw-block-header-left\">\n      <span class=\"lw-cat-badge cat-movement\">Movement<\/span>\n      <h4 class=\"wp-block-heading lw-block-title\" id=\"pitch-backward-litewingpitchbackward\"><span class=\"ez-toc-section\" id=\"Pitch_backward\"><\/span>Pitch backward<span class=\"ez-toc-section-end\"><\/span><\/h4>\n    <\/div>\n    <code class=\"lw-block-slug\">litewing_pitch_backward<\/code>\n  <\/div>\n  <div class=\"lw-block-body\">\n    <div class=\"lw-block-preview-box\">\n  <div class=\"lw-preview-label\">Block Structure<\/div>\n  <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-block-pitch-backward.png\" alt=\"Pitch Backward Block\" class=\"lw-block-preview-img\" loading=\"lazy\">\n<\/div>\n    <div class=\"lw-block-desc\">\n      <p>Pitch backward block moves the drone backward along its longitudinal X-axis by the given distance.<\/p>\n    <\/div>\n    <div class=\"lw-code-container\">\n  <div class=\"lw-code-topbar\">\n    <span class=\"lw-code-lang\">Generated Python<\/span>\n  <\/div>\n  <pre class=\"wp-block-code lw-code-block\"><code class=\"language-python\"><span class=\"py-var\" style=\"color:#9cdcfe;\">drone<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">.<\/span><span class=\"py-func\" style=\"color:#dcdcaa;\">pitch_backward<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">(<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">distance<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">)<\/span> <span class=\"py-builtin\" style=\"color:#569cd6;\">or<\/span> <span class=\"py-var\" style=\"color:#9cdcfe;\">drone<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">.<\/span><span class=\"py-func\" style=\"color:#dcdcaa;\">pitch_backward<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">(<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">distance<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">,<\/span> <span class=\"py-var\" style=\"color:#9cdcfe;\">speed<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">=<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">value<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">)<\/span><\/code><\/pre>\n<\/div>\n    <div class=\"lw-specs-section\">\n  <figure class=\"wp-block-table is-style-stripes\">\n<table class=\"has-fixed-layout\">\n<thead><tr>\n<th>Parameter<\/th>\n<th>Type<\/th>\n<th>Default<\/th>\n<th>Range<\/th>\n<th>Units<\/th>\n<th>Description<\/th>\n<\/tr><\/thead>\n<tbody>\n<tr>\n<td>DISTANCE<\/td>\n<td>Number field<\/td>\n<td>0.3<\/td>\n<td>0.1 to 2.0<\/td>\n<td>meters (m)<\/td>\n<td>Linear distance to translate backward.<\/td>\n<\/tr>\n<tr>\n<td>SPEED (optional)<\/td>\n<td>Value input<\/td>\n<td>None<\/td>\n<td>0.1 to 2.0<\/td>\n<td>m\/s<\/td>\n<td>Optional translation velocity. Defaults to 0.2 m\/s.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n  \n  <p><strong>Returns:<\/strong> None.<\/p>\n<\/div>\n    \n    <div class=\"lw-example-box\">\n  <div class=\"lw-example-header\">Example Routine in Blockly Workspace<\/div>\n  <div class=\"lw-example-img-wrap\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-example-pitch-backward-return.png\" alt=\"Pitch Backward Return Leg Example\" loading=\"lazy\">\n  <\/div>\n<\/div>\n  <\/div>\n<\/div>\n\n<div class=\"lw-block-card\">\n  <div class=\"lw-block-header cat-movement-header\">\n    <div class=\"lw-block-header-left\">\n      <span class=\"lw-cat-badge cat-movement\">Movement<\/span>\n      <h4 class=\"wp-block-heading lw-block-title\" id=\"roll-left-litewingrollleft\"><span class=\"ez-toc-section\" id=\"Roll_left\"><\/span>Roll left<span class=\"ez-toc-section-end\"><\/span><\/h4>\n    <\/div>\n    <code class=\"lw-block-slug\">litewing_roll_left<\/code>\n  <\/div>\n  <div class=\"lw-block-body\">\n    <div class=\"lw-block-preview-box\">\n  <div class=\"lw-preview-label\">Block Structure<\/div>\n  <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-block-roll-left.png\" alt=\"Roll Left Block\" class=\"lw-block-preview-img\" loading=\"lazy\">\n<\/div>\n    <div class=\"lw-block-desc\">\n      <p>Roll left block moves the drone laterally to the left along its transverse Y-axis by the selected distance. Left and right are <strong>relative to the drone&#8217;s current heading<\/strong>, not to the person watching it from the side of the room.<\/p>\n    <\/div>\n    <div class=\"lw-code-container\">\n  <div class=\"lw-code-topbar\">\n    <span class=\"lw-code-lang\">Generated Python<\/span>\n  <\/div>\n  <pre class=\"wp-block-code lw-code-block\"><code class=\"language-python\"><span class=\"py-var\" style=\"color:#9cdcfe;\">drone<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">.<\/span><span class=\"py-func\" style=\"color:#dcdcaa;\">roll_left<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">(<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">distance<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">)<\/span> <span class=\"py-builtin\" style=\"color:#569cd6;\">or<\/span> <span class=\"py-var\" style=\"color:#9cdcfe;\">drone<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">.<\/span><span class=\"py-func\" style=\"color:#dcdcaa;\">roll_left<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">(<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">distance<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">,<\/span> <span class=\"py-var\" style=\"color:#9cdcfe;\">speed<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">=<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">value<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">)<\/span><\/code><\/pre>\n<\/div>\n    <div class=\"lw-specs-section\">\n  <figure class=\"wp-block-table is-style-stripes\">\n<table class=\"has-fixed-layout\">\n<thead><tr>\n<th>Parameter<\/th>\n<th>Type<\/th>\n<th>Default<\/th>\n<th>Range<\/th>\n<th>Units<\/th>\n<th>Description<\/th>\n<\/tr><\/thead>\n<tbody>\n<tr>\n<td>DISTANCE<\/td>\n<td>Number field<\/td>\n<td>0.3<\/td>\n<td>0.1 to 2.0<\/td>\n<td>meters (m)<\/td>\n<td>Linear distance to translate leftward.<\/td>\n<\/tr>\n<tr>\n<td>SPEED (optional)<\/td>\n<td>Value input<\/td>\n<td>None<\/td>\n<td>0.1 to 2.0<\/td>\n<td>m\/s<\/td>\n<td>Optional translation velocity. Defaults to 0.2 m\/s.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n  \n  <p><strong>Returns:<\/strong> None.<\/p>\n<\/div>\n    \n    <div class=\"lw-example-box\">\n  <div class=\"lw-example-header\">Example Routine in Blockly Workspace<\/div>\n  <div class=\"lw-example-img-wrap\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-example-roll-left-shift.png\" alt=\"Roll Left Lateral Shift Example\" loading=\"lazy\">\n  <\/div>\n<\/div>\n  <\/div>\n<\/div>\n\n<div class=\"lw-block-card\">\n  <div class=\"lw-block-header cat-movement-header\">\n    <div class=\"lw-block-header-left\">\n      <span class=\"lw-cat-badge cat-movement\">Movement<\/span>\n      <h4 class=\"wp-block-heading lw-block-title\" id=\"roll-right-litewingrollright\"><span class=\"ez-toc-section\" id=\"Roll_right\"><\/span>Roll right<span class=\"ez-toc-section-end\"><\/span><\/h4>\n    <\/div>\n    <code class=\"lw-block-slug\">litewing_roll_right<\/code>\n  <\/div>\n  <div class=\"lw-block-body\">\n    <div class=\"lw-block-preview-box\">\n  <div class=\"lw-preview-label\">Block Structure<\/div>\n  <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-block-roll-right.png\" alt=\"Roll Right Block\" class=\"lw-block-preview-img\" loading=\"lazy\">\n<\/div>\n    <div class=\"lw-block-desc\">\n      <p>Roll right block moves the drone laterally to the right along its transverse Y-axis by the selected distance. Plan enough space on both sides of the flight area before using this block.<\/p>\n    <\/div>\n    <div class=\"lw-code-container\">\n  <div class=\"lw-code-topbar\">\n    <span class=\"lw-code-lang\">Generated Python<\/span>\n  <\/div>\n  <pre class=\"wp-block-code lw-code-block\"><code class=\"language-python\"><span class=\"py-var\" style=\"color:#9cdcfe;\">drone<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">.<\/span><span class=\"py-func\" style=\"color:#dcdcaa;\">roll_right<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">(<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">distance<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">)<\/span> <span class=\"py-builtin\" style=\"color:#569cd6;\">or<\/span> <span class=\"py-var\" style=\"color:#9cdcfe;\">drone<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">.<\/span><span class=\"py-func\" style=\"color:#dcdcaa;\">roll_right<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">(<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">distance<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">,<\/span> <span class=\"py-var\" style=\"color:#9cdcfe;\">speed<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">=<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">value<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">)<\/span><\/code><\/pre>\n<\/div>\n    <div class=\"lw-specs-section\">\n  <figure class=\"wp-block-table is-style-stripes\">\n<table class=\"has-fixed-layout\">\n<thead><tr>\n<th>Parameter<\/th>\n<th>Type<\/th>\n<th>Default<\/th>\n<th>Range<\/th>\n<th>Units<\/th>\n<th>Description<\/th>\n<\/tr><\/thead>\n<tbody>\n<tr>\n<td>DISTANCE<\/td>\n<td>Number field<\/td>\n<td>0.3<\/td>\n<td>0.1 to 2.0<\/td>\n<td>meters (m)<\/td>\n<td>Linear distance to translate rightward.<\/td>\n<\/tr>\n<tr>\n<td>SPEED (optional)<\/td>\n<td>Value input<\/td>\n<td>None<\/td>\n<td>0.1 to 2.0<\/td>\n<td>m\/s<\/td>\n<td>Optional translation velocity. Defaults to 0.2 m\/s.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n  \n  <p><strong>Returns:<\/strong> None.<\/p>\n<\/div>\n    \n    <div class=\"lw-example-box\">\n  <div class=\"lw-example-header\">Example Routine in Blockly Workspace<\/div>\n  <div class=\"lw-example-img-wrap\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-example-roll-right-shift.png\" alt=\"Roll Right Lateral Shift Example\" loading=\"lazy\">\n  <\/div>\n<\/div>\n  <\/div>\n<\/div>\n\n<div class=\"lw-block-card\">\n  <div class=\"lw-block-header cat-movement-header\">\n    <div class=\"lw-block-header-left\">\n      <span class=\"lw-cat-badge cat-movement\">Movement<\/span>\n      <h4 class=\"wp-block-heading lw-block-title\" id=\"rotate-left-yaw-litewingrotateleft\"><span class=\"ez-toc-section\" id=\"Rotate_left_Yaw\"><\/span>Rotate left (Yaw)<span class=\"ez-toc-section-end\"><\/span><\/h4>\n    <\/div>\n    <code class=\"lw-block-slug\">litewing_rotate_left<\/code>\n  <\/div>\n  <div class=\"lw-block-body\">\n    <div class=\"lw-block-preview-box\">\n  <div class=\"lw-preview-label\">Block Structure<\/div>\n  <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-block-rotate-left-yaw.png\" alt=\"Rotate Left (Yaw) Block\" class=\"lw-block-preview-img\" loading=\"lazy\">\n<\/div>\n    <div class=\"lw-block-desc\">\n      <p>This block rotates the drone counter-clockwise around its vertical axis. Rotation is also called yaw, it changes where the front of the drone points without asking it to travel forward or sideways.<\/p>\n    <\/div>\n    <div class=\"lw-code-container\">\n  <div class=\"lw-code-topbar\">\n    <span class=\"lw-code-lang\">Generated Python<\/span>\n  <\/div>\n  <pre class=\"wp-block-code lw-code-block\"><code class=\"language-python\"><span class=\"py-var\" style=\"color:#9cdcfe;\">drone<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">.<\/span><span class=\"py-func\" style=\"color:#dcdcaa;\">rotate_left<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">(<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">degrees<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">)<\/span><\/code><\/pre>\n<\/div>\n    <div class=\"lw-specs-section\">\n  <figure class=\"wp-block-table is-style-stripes\">\n<table class=\"has-fixed-layout\">\n<thead><tr>\n<th>Parameter<\/th>\n<th>Type<\/th>\n<th>Default<\/th>\n<th>Range<\/th>\n<th>Units<\/th>\n<\/tr><\/thead>\n<tbody>\n<tr>\n<td>DEGREES<\/td>\n<td>Number field<\/td>\n<td>90<\/td>\n<td>0 to 360<\/td>\n<td>Degree<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n  \n  <p><strong>Returns:<\/strong> None.<\/p>\n<\/div>\n    <div class=\"callout-box callout-note\"><strong>NOTE:<\/strong> A rotation changes the direction used by later forward and backward movement.<\/div>\n    <div class=\"lw-example-box\">\n  <div class=\"lw-example-header\">Example Routine in Blockly Workspace<\/div>\n  <div class=\"lw-example-img-wrap\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-example-rotate-left-scan.png\" alt=\"Rotate Left 360 Degree Scan Example\" loading=\"lazy\">\n  <\/div>\n<\/div>\n  <\/div>\n<\/div>\n\n<div class=\"lw-block-card\">\n  <div class=\"lw-block-header cat-movement-header\">\n    <div class=\"lw-block-header-left\">\n      <span class=\"lw-cat-badge cat-movement\">Movement<\/span>\n      <h4 class=\"wp-block-heading lw-block-title\" id=\"rotate-right-yaw-litewingrotateright\"><span class=\"ez-toc-section\" id=\"Rotate_right_Yaw\"><\/span>Rotate right (Yaw)<span class=\"ez-toc-section-end\"><\/span><\/h4>\n    <\/div>\n    <code class=\"lw-block-slug\">litewing_rotate_right<\/code>\n  <\/div>\n  <div class=\"lw-block-body\">\n    <div class=\"lw-block-preview-box\">\n  <div class=\"lw-preview-label\">Block Structure<\/div>\n  <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-block-rotate-right-yaw.png\" alt=\"Rotate Right (Yaw) Block\" class=\"lw-block-preview-img\" loading=\"lazy\">\n<\/div>\n    <div class=\"lw-block-desc\">\n      <p>This block rotates the drone clockwise around its vertical axis. Use modest angles such as 45 or 90 degrees while learning, then allow the drone to stabilise before the next movement.<\/p>\n    <\/div>\n    <div class=\"lw-code-container\">\n  <div class=\"lw-code-topbar\">\n    <span class=\"lw-code-lang\">Generated Python<\/span>\n  <\/div>\n  <pre class=\"wp-block-code lw-code-block\"><code class=\"language-python\"><span class=\"py-var\" style=\"color:#9cdcfe;\">drone<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">.<\/span><span class=\"py-func\" style=\"color:#dcdcaa;\">rotate_right<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">(<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">degrees<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">)<\/span><\/code><\/pre>\n<\/div>\n    <div class=\"lw-specs-section\">\n  <figure class=\"wp-block-table is-style-stripes\">\n<table class=\"has-fixed-layout\">\n<thead><tr>\n<th>Parameter<\/th>\n<th>Type<\/th>\n<th>Default<\/th>\n<th>Range<\/th>\n<th>Units<\/th>\n<\/tr><\/thead>\n<tbody>\n<tr>\n<td>DEGREES<\/td>\n<td>Number field<\/td>\n<td>90<\/td>\n<td>0 to 360<\/td>\n<td>Degree<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n  \n  <p><strong>Returns:<\/strong> None.<\/p>\n<\/div>\n    \n    <div class=\"lw-example-box\">\n  <div class=\"lw-example-header\">Example Routine in Blockly Workspace<\/div>\n  <div class=\"lw-example-img-wrap\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-example-rotate-right-inspection.png\" alt=\"Rotate Right Inspection Example\" loading=\"lazy\">\n  <\/div>\n<\/div>\n  <\/div>\n<\/div>\n<h3 class=\"wp-block-heading\" id=\"navigation-commands\"><span class=\"ez-toc-section\" id=\"Navigation_Commands\"><\/span>Navigation Commands<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Navigation blocks work from the launch reference point. In the coordinate system used by LiteWing, positive X is forward, negative X is backward, positive Y is left, and negative Y is right.<\/p>\n<p>Unlike a simple Pitch or Roll movement, a navigation command asks LiteWing to reach a named location. The X and Y values are measured in metres from the point where the flight began. Begin with a small coordinate such as X 0.3, Y 0.0 before creating larger paths.<\/p>\n\n<div class=\"lw-block-card\">\n  <div class=\"lw-block-header cat-navigation-header\">\n    <div class=\"lw-block-header-left\">\n      <span class=\"lw-cat-badge cat-navigation\">Navigation<\/span>\n      <h4 class=\"wp-block-heading lw-block-title\" id=\"fly-to-coordinates-litewingflyto\"><span class=\"ez-toc-section\" id=\"Fly_to_coordinates\"><\/span>Fly to coordinates<span class=\"ez-toc-section-end\"><\/span><\/h4>\n    <\/div>\n    <code class=\"lw-block-slug\">litewing_fly_to<\/code>\n  <\/div>\n  <div class=\"lw-block-body\">\n    <div class=\"lw-block-preview-box\">\n  <div class=\"lw-preview-label\">Block Structure<\/div>\n  <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-block-fly-to-coordinates.png\" alt=\"Fly To Coordinates Block\" class=\"lw-block-preview-img\" loading=\"lazy\">\n<\/div>\n    <div class=\"lw-block-desc\">\n      <p>This block makes the drone fly to a selected X and Y coordinate. You can add Z, rotation, and speed modifier blocks to the open parameter socket.<\/p>\n<p>For example, X 0.5 and Y 0.0 asks LiteWing to fly about half a metre forward from the launch point. X 0.0 and Y 0.3 asks it to move about 0.3 m left. The block can be used repeatedly to build a route one target at a time.<\/p>\n    <\/div>\n    <div class=\"lw-code-container\">\n  <div class=\"lw-code-topbar\">\n    <span class=\"lw-code-lang\">Generated Python<\/span>\n  <\/div>\n  <pre class=\"wp-block-code lw-code-block\"><code class=\"language-python\"><span class=\"py-var\" style=\"color:#9cdcfe;\">drone<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">.<\/span><span class=\"py-func\" style=\"color:#dcdcaa;\">fly_to<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">(<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">x<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">,<\/span> <span class=\"py-var\" style=\"color:#9cdcfe;\">y<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">,<\/span> <span class=\"py-var\" style=\"color:#9cdcfe;\">z<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">,<\/span> <span class=\"py-var\" style=\"color:#9cdcfe;\">yaw<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">,<\/span> <span class=\"py-var\" style=\"color:#9cdcfe;\">speed<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">=<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">value<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">)<\/span><\/code><\/pre>\n<\/div>\n    <div class=\"lw-specs-section\">\n  <figure class=\"wp-block-table is-style-stripes\">\n<table class=\"has-fixed-layout\">\n<thead><tr>\n<th>Parameter<\/th>\n<th>Type<\/th>\n<th>Default<\/th>\n<th>Range<\/th>\n<th>Units<\/th>\n<th>Description<\/th>\n<\/tr><\/thead>\n<tbody>\n<tr>\n<td>X<\/td>\n<td>Number field<\/td>\n<td>0.0<\/td>\n<td>-5.0 to 5.0<\/td>\n<td>meters (m)<\/td>\n<td>Forward\/backward displacement (+X = forward).<\/td>\n<\/tr>\n<tr>\n<td>Y<\/td>\n<td>Number field<\/td>\n<td>0.0<\/td>\n<td>-5.0 to 5.0<\/td>\n<td>meters (m)<\/td>\n<td>Left\/right displacement (+Y = left).<\/td>\n<\/tr>\n<tr>\n<td>Z<\/td>\n<td>Number field(optional)<\/td>\n<td>0.3<\/td>\n<td>0.3 to 2.0<\/td>\n<td>meters (m)<\/td>\n<td>Up\/down displacement (+Z = up).<\/td>\n<\/tr>\n<tr>\n<td>YAW<\/td>\n<td>Number field(optional)<\/td>\n<td>90<\/td>\n<td>-360 to 360<\/td>\n<td>degrees<\/td>\n<td>Rotation (deg)<\/td>\n<\/tr>\n<tr>\n<td>SPEED<\/td>\n<td>Number field(optional)<\/td>\n<td>0.2<\/td>\n<td>0.1 to 2<\/td>\n<td>m\/s<\/td>\n<td>Navigation speed (m\/s)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n  \n  <p><strong>Returns:<\/strong> None.<\/p>\n<\/div>\n    <div class=\"callout-box callout-note\"><strong>NOTE:<\/strong> If no Z value is supplied, the app uses the Takeoff height from the workspace.<\/div>\n    <div class=\"lw-example-box\">\n  <div class=\"lw-example-header\">Example Routine in Blockly Workspace<\/div>\n  <div class=\"lw-example-img-wrap\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-example-fly-to-coordinate.png\" alt=\"Fly To Absolute Coordinate Example\" loading=\"lazy\">\n  <\/div>\n<\/div>\n  <\/div>\n<\/div>\n\n<div class=\"lw-block-card\">\n  <div class=\"lw-block-header cat-navigation-header\">\n    <div class=\"lw-block-header-left\">\n      <span class=\"lw-cat-badge cat-navigation\">Navigation<\/span>\n      <h4 class=\"wp-block-heading lw-block-title\" id=\"fly-path-litewingflypath\"><span class=\"ez-toc-section\" id=\"Fly_path\"><\/span>Fly path<span class=\"ez-toc-section-end\"><\/span><\/h4>\n    <\/div>\n    <code class=\"lw-block-slug\">litewing_fly_path<\/code>\n  <\/div>\n  <div class=\"lw-block-body\">\n    <div class=\"lw-block-preview-box\">\n  <div class=\"lw-preview-label\">Block Structure<\/div>\n  <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-block-fly-path-waypoints.png\" alt=\"Fly Path Waypoints Block\" class=\"lw-block-preview-img\" loading=\"lazy\">\n<\/div>\n    <div class=\"lw-block-desc\">\n      <p>This block makes the drone visit a sequence of waypoint blocks. Place waypoint blocks inside its <strong>waypoints<\/strong> area and optionally attach a speed value.<\/p>\n<p>The waypoint stack is read from top to bottom. Each waypoint becomes one coordinate in the generated Python path list, so the order of the blocks is the order in which LiteWing visits the locations.<\/p>\n    <\/div>\n    <div class=\"lw-code-container\">\n  <div class=\"lw-code-topbar\">\n    <span class=\"lw-code-lang\">Generated Python<\/span>\n  <\/div>\n  <pre class=\"wp-block-code lw-code-block\"><code class=\"language-python\"><span class=\"py-var\" style=\"color:#9cdcfe;\">drone<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">.<\/span><span class=\"py-func\" style=\"color:#dcdcaa;\">fly_path<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">(<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">path_points<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">,<\/span> <span class=\"py-var\" style=\"color:#9cdcfe;\">speed<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">=<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">value<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">)<\/span><\/code><\/pre>\n<\/div>\n    <div class=\"lw-specs-section\">\n  <figure class=\"wp-block-table is-style-stripes\">\n<table class=\"has-fixed-layout\">\n<thead><tr>\n<th>Parameter<\/th>\n<th>Type<\/th>\n<th>Default<\/th>\n<th>Description<\/th>\n<\/tr><\/thead>\n<tbody>\n<tr>\n<td>SPEED<\/td>\n<td>Value input<\/td>\n<td>None<\/td>\n<td>Optional traversal velocity modifier.<\/td>\n<\/tr>\n<tr>\n<td>WAYPOINTS<\/td>\n<td>Statement input<\/td>\n<td>Pre-populated 2 waypoints<\/td>\n<td>Contains one or more litewing_waypoint blocks snapped in sequence.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n  \n  <p><strong>Returns:<\/strong> None.<\/p>\n<\/div>\n    \n    <div class=\"lw-example-box\">\n  <div class=\"lw-example-header\">Example Routine in Blockly Workspace<\/div>\n  <div class=\"lw-example-img-wrap\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-example-fly-path-waypoints.png\" alt=\"Fly Path Multi-Waypoint Mission Example\" loading=\"lazy\">\n  <\/div>\n<\/div>\n  <\/div>\n<\/div>\n\n<div class=\"lw-block-card\">\n  <div class=\"lw-block-header cat-navigation-header\">\n    <div class=\"lw-block-header-left\">\n      <span class=\"lw-cat-badge cat-navigation\">Navigation<\/span>\n      <h4 class=\"wp-block-heading lw-block-title\" id=\"waypoint-coordinate-litewingwaypoint\"><span class=\"ez-toc-section\" id=\"Waypoint_coordinate\"><\/span>Waypoint coordinate<span class=\"ez-toc-section-end\"><\/span><\/h4>\n    <\/div>\n    <code class=\"lw-block-slug\">litewing_waypoint<\/code>\n  <\/div>\n  <div class=\"lw-block-body\">\n    <div class=\"lw-block-preview-box\">\n  <div class=\"lw-preview-label\">Block Structure<\/div>\n  <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-block-waypoint-coordinate.png\" alt=\"Waypoint Coordinate Block\" class=\"lw-block-preview-img\" loading=\"lazy\">\n<\/div>\n    <div class=\"lw-block-desc\">\n      <p>This block defines X and Y points inside a Fly path block. It can accept Z and rotation modifiers. It is not a free-standing flight command, it only belongs inside the waypoint area of a Fly path block.<\/p>\n    <\/div>\n    <div class=\"lw-code-container\">\n  <div class=\"lw-code-topbar\">\n    <span class=\"lw-code-lang\">Generated Python<\/span>\n  <\/div>\n  <pre class=\"wp-block-code lw-code-block\"><code class=\"language-python\"><span class=\"py-punct\" style=\"color:#d4d4d4;\">(<\/span><span class=\"py-num\" style=\"color:#b5cea8;\">0.3<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">,<\/span> <span class=\"py-num\" style=\"color:#b5cea8;\">0.0<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">,<\/span> <span class=\"py-num\" style=\"color:#b5cea8;\">0.3<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">)<\/span>  <span class=\"py-comment\" style=\"color:#6a9955;font-style:italic;\"># Waypoint coordinate tuple (X, Y, Z)<\/span><\/code><\/pre>\n<\/div>\n    <div class=\"lw-specs-section\">\n  <figure class=\"wp-block-table is-style-stripes\">\n<table class=\"has-fixed-layout\">\n<thead><tr>\n<th>Parameter<\/th>\n<th>Type<\/th>\n<th>Default<\/th>\n<th>Range<\/th>\n<th>Units<\/th>\n<th>Description<\/th>\n<\/tr><\/thead>\n<tbody>\n<tr>\n<td>X<\/td>\n<td>Number field<\/td>\n<td>0.0<\/td>\n<td>-5.0 to 5.0<\/td>\n<td>meters (m)<\/td>\n<td>Forward\/backward displacement (+X = forward).<\/td>\n<\/tr>\n<tr>\n<td>Y<\/td>\n<td>Number field<\/td>\n<td>0.0<\/td>\n<td>-5.0 to 5.0<\/td>\n<td>meters (m)<\/td>\n<td>Left\/right displacement (+Y = left).<\/td>\n<\/tr>\n<tr>\n<td>Z<\/td>\n<td>Number field(optional)<\/td>\n<td>0.3<\/td>\n<td>0.3 to 2.0<\/td>\n<td>meters (m)<\/td>\n<td>Up\/down displacement (+Z = up).<\/td>\n<\/tr>\n<tr>\n<td>YAW<\/td>\n<td>Number field(optional)<\/td>\n<td>90<\/td>\n<td>-360 to 360<\/td>\n<td>degrees<\/td>\n<td>Rotation (deg)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n  \n  <p><strong>Returns:<\/strong> a waypoint statement that connects inside the Fly path.<\/p>\n<\/div>\n    \n    <div class=\"lw-example-box\">\n  <div class=\"lw-example-header\">Example Routine in Blockly Workspace<\/div>\n  <div class=\"lw-example-img-wrap\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-example-waypoint-parameter.png\" alt=\"Waypoint Coordinate Parameter Example\" loading=\"lazy\">\n  <\/div>\n<\/div>\n  <\/div>\n<\/div>\n<h3 class=\"wp-block-heading\" id=\"shapes-commands\"><span class=\"ez-toc-section\" id=\"Shapes_Commands\"><\/span>Shapes Commands<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Shape blocks create predefined flight paths. Use them after takeoff. A duration block and a Face flight direction block can be connected to their parameter socket.<\/p>\n<p>These blocks are a convenient introduction to autonomous flight patterns. They still require a clear flight area larger than the shape itself. Measure the available space before choosing a side length or diameter.<\/p>\n\n<div class=\"lw-block-card\">\n  <div class=\"lw-block-header cat-shapes-header\">\n    <div class=\"lw-block-header-left\">\n      <span class=\"lw-cat-badge cat-shapes\">Shapes<\/span>\n      <h4 class=\"wp-block-heading lw-block-title\" id=\"fly-square-litewingsquare\"><span class=\"ez-toc-section\" id=\"Fly_square\"><\/span>Fly square<span class=\"ez-toc-section-end\"><\/span><\/h4>\n    <\/div>\n    <code class=\"lw-block-slug\">litewing_square<\/code>\n  <\/div>\n  <div class=\"lw-block-body\">\n    <div class=\"lw-block-preview-box\">\n  <div class=\"lw-preview-label\">Block Structure<\/div>\n  <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-block-fly-square-shape.png\" alt=\"Fly Square Shape Block\" class=\"lw-block-preview-img\" loading=\"lazy\">\n<\/div>\n    <div class=\"lw-block-desc\">\n      <p>This block makes the drone fly a square path. The specified length determines the distance of each side of the square. It generates and executes a four-sided trajectory, returning the drone to its original hover position after completing the pattern.<\/p>\n    <\/div>\n    <div class=\"lw-code-container\">\n  <div class=\"lw-code-topbar\">\n    <span class=\"lw-code-lang\">Generated Python<\/span>\n  <\/div>\n  <pre class=\"wp-block-code lw-code-block\"><code class=\"language-python\"><span class=\"py-var\" style=\"color:#9cdcfe;\">drone<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">.<\/span><span class=\"py-func\" style=\"color:#dcdcaa;\">square<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">(<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">length<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">=<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">value<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">,<\/span> <span class=\"py-var\" style=\"color:#9cdcfe;\">duration<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">=<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">value<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">,<\/span> <span class=\"py-var\" style=\"color:#9cdcfe;\">face_direction<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">=<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">value<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">)<\/span><\/code><\/pre>\n<\/div>\n    <div class=\"lw-specs-section\">\n  <figure class=\"wp-block-table is-style-stripes\">\n<table class=\"has-fixed-layout\">\n<thead><tr>\n<th>Parameter<\/th>\n<th>Type<\/th>\n<th>Default<\/th>\n<th>Range<\/th>\n<th>Units<\/th>\n<th>Description<\/th>\n<\/tr><\/thead>\n<tbody>\n<tr>\n<td>LENGTH<\/td>\n<td>Number field<\/td>\n<td>0.6<\/td>\n<td>0.2 to 3.0<\/td>\n<td>meters (m)<\/td>\n<td>Length of each side of the square.<\/td>\n<\/tr>\n<tr>\n<td>DURATION<\/td>\n<td>Value input<\/td>\n<td>1<\/td>\n<td>0.1 to 10<\/td>\n<td>seconds (s)<\/td>\n<td>Time period (s)<\/td>\n<\/tr>\n<tr>\n<td>FACE_DIRECTION<\/td>\n<td>Bool<\/td>\n<td>True<\/td>\n<td>&#8211;<\/td>\n<td>&#8211;<\/td>\n<td>Heading behavior<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n  \n  <p><strong>Returns:<\/strong> None.<\/p>\n<\/div>\n    \n    <div class=\"lw-example-box\">\n  <div class=\"lw-example-header\">Example Routine in Blockly Workspace<\/div>\n  <div class=\"lw-example-img-wrap\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-example-fly-square-mission.png\" alt=\"Fly Square Geometric Mission Example\" loading=\"lazy\">\n  <\/div>\n<\/div>\n  <\/div>\n<\/div>\n\n<div class=\"lw-block-card\">\n  <div class=\"lw-block-header cat-shapes-header\">\n    <div class=\"lw-block-header-left\">\n      <span class=\"lw-cat-badge cat-shapes\">Shapes<\/span>\n      <h4 class=\"wp-block-heading lw-block-title\" id=\"fly-triangle-litewingtriangle\"><span class=\"ez-toc-section\" id=\"Fly_triangle\"><\/span>Fly triangle<span class=\"ez-toc-section-end\"><\/span><\/h4>\n    <\/div>\n    <code class=\"lw-block-slug\">litewing_triangle<\/code>\n  <\/div>\n  <div class=\"lw-block-body\">\n    <div class=\"lw-block-preview-box\">\n  <div class=\"lw-preview-label\">Block Structure<\/div>\n  <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-block-fly-triangle-shape.png\" alt=\"Fly Triangle Shape Block\" class=\"lw-block-preview-img\" loading=\"lazy\">\n<\/div>\n    <div class=\"lw-block-desc\">\n      <p>This block enables the drone to fly an equilateral triangle path. The specified length determines the distance of each equal side. It generates and executes a precise three-sided trajectory with 60\u00b0 interior turns, returning the drone to its original hover position after completing the pattern.<\/p>\n    <\/div>\n    <div class=\"lw-code-container\">\n  <div class=\"lw-code-topbar\">\n    <span class=\"lw-code-lang\">Generated Python<\/span>\n  <\/div>\n  <pre class=\"wp-block-code lw-code-block\"><code class=\"language-python\"><span class=\"py-var\" style=\"color:#9cdcfe;\">drone<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">.<\/span><span class=\"py-func\" style=\"color:#dcdcaa;\">triangle<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">(<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">length<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">=<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">value<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">,<\/span> <span class=\"py-var\" style=\"color:#9cdcfe;\">duration<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">=<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">value<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">,<\/span> <span class=\"py-var\" style=\"color:#9cdcfe;\">face_direction<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">=<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">value<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">)<\/span><\/code><\/pre>\n<\/div>\n    <div class=\"lw-specs-section\">\n  <figure class=\"wp-block-table is-style-stripes\">\n<table class=\"has-fixed-layout\">\n<thead><tr>\n<th>Parameter<\/th>\n<th>Type<\/th>\n<th>Default<\/th>\n<th>Range<\/th>\n<th>Units<\/th>\n<th>Description<\/th>\n<\/tr><\/thead>\n<tbody>\n<tr>\n<td>LENGTH<\/td>\n<td>Number field<\/td>\n<td>0.6<\/td>\n<td>0.2 to 3.0<\/td>\n<td>meters (m)<\/td>\n<td>Length of each side of the triangle.<\/td>\n<\/tr>\n<tr>\n<td>DURATION<\/td>\n<td>Value input<\/td>\n<td>1<\/td>\n<td>0.1 to 10<\/td>\n<td>seconds (s)<\/td>\n<td>Time period (s)<\/td>\n<\/tr>\n<tr>\n<td>FACE_DIRECTION<\/td>\n<td>Bool<\/td>\n<td>True<\/td>\n<td>&#8211;<\/td>\n<td>&#8211;<\/td>\n<td>Heading behavior<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n  \n  <p><strong>Returns:<\/strong> None.<\/p>\n<\/div>\n    \n    <div class=\"lw-example-box\">\n  <div class=\"lw-example-header\">Example Routine in Blockly Workspace<\/div>\n  <div class=\"lw-example-img-wrap\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-example-fly-triangle-mission.png\" alt=\"Fly Triangle Geometric Mission Example\" loading=\"lazy\">\n  <\/div>\n<\/div>\n  <\/div>\n<\/div>\n\n<div class=\"lw-block-card\">\n  <div class=\"lw-block-header cat-shapes-header\">\n    <div class=\"lw-block-header-left\">\n      <span class=\"lw-cat-badge cat-shapes\">Shapes<\/span>\n      <h4 class=\"wp-block-heading lw-block-title\" id=\"fly-circle-litewingcircle\"><span class=\"ez-toc-section\" id=\"Fly_circle\"><\/span>Fly circle<span class=\"ez-toc-section-end\"><\/span><\/h4>\n    <\/div>\n    <code class=\"lw-block-slug\">litewing_circle<\/code>\n  <\/div>\n  <div class=\"lw-block-body\">\n    <div class=\"lw-block-preview-box\">\n  <div class=\"lw-preview-label\">Block Structure<\/div>\n  <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-block-fly-circle-shape.png\" alt=\"Fly Circle Shape Block\" class=\"lw-block-preview-img\" loading=\"lazy\">\n<\/div>\n    <div class=\"lw-block-desc\">\n      <p>This block directs the drone along a smooth circular trajectory. Set the diameter in meters to determine the circle&#8217;s overall width, and ensure there is enough open space for the drone to complete the maneuver safely.<\/p>\n    <\/div>\n    <div class=\"lw-code-container\">\n  <div class=\"lw-code-topbar\">\n    <span class=\"lw-code-lang\">Generated Python<\/span>\n  <\/div>\n  <pre class=\"wp-block-code lw-code-block\"><code class=\"language-python\"><span class=\"py-var\" style=\"color:#9cdcfe;\">drone<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">.<\/span><span class=\"py-func\" style=\"color:#dcdcaa;\">circle<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">(<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">diameter<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">=<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">value<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">,<\/span> <span class=\"py-var\" style=\"color:#9cdcfe;\">duration<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">=<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">value<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">,<\/span> <span class=\"py-var\" style=\"color:#9cdcfe;\">face_direction<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">=<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">value<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">)<\/span><\/code><\/pre>\n<\/div>\n    <div class=\"lw-specs-section\">\n  <figure class=\"wp-block-table is-style-stripes\">\n<table class=\"has-fixed-layout\">\n<thead><tr>\n<th>Parameter<\/th>\n<th>Type<\/th>\n<th>Default<\/th>\n<th>Range<\/th>\n<th>Units<\/th>\n<th>Description<\/th>\n<\/tr><\/thead>\n<tbody>\n<tr>\n<td>DIAMETER<\/td>\n<td>Number field<\/td>\n<td>1.0<\/td>\n<td>0.3 to 3.0<\/td>\n<td>meters (m)<\/td>\n<td>Overall width of circle.<\/td>\n<\/tr>\n<tr>\n<td>DURATION<\/td>\n<td>Value input<\/td>\n<td>1<\/td>\n<td>0.1 to 10<\/td>\n<td>seconds (s)<\/td>\n<td>Time period (s)<\/td>\n<\/tr>\n<tr>\n<td>FACE_DIRECTION<\/td>\n<td>Bool<\/td>\n<td>True<\/td>\n<td>&#8211;<\/td>\n<td>&#8211;<\/td>\n<td>Heading behavior<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n  \n  <p><strong>Returns:<\/strong> None.<\/p>\n<\/div>\n    \n    <div class=\"lw-example-box\">\n  <div class=\"lw-example-header\">Example Routine in Blockly Workspace<\/div>\n  <div class=\"lw-example-img-wrap\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-example-fly-circle-trajectory.png\" alt=\"Fly Circle Smooth Trajectory Example\" loading=\"lazy\">\n  <\/div>\n<\/div>\n  <\/div>\n<\/div>\n\n<div class=\"lw-block-card\">\n  <div class=\"lw-block-header cat-shapes-header\">\n    <div class=\"lw-block-header-left\">\n      <span class=\"lw-cat-badge cat-shapes\">Shapes<\/span>\n      <h4 class=\"wp-block-heading lw-block-title\" id=\"fly-pentagon-litewingpentagon\"><span class=\"ez-toc-section\" id=\"Fly_pentagon\"><\/span>Fly pentagon<span class=\"ez-toc-section-end\"><\/span><\/h4>\n    <\/div>\n    <code class=\"lw-block-slug\">litewing_pentagon<\/code>\n  <\/div>\n  <div class=\"lw-block-body\">\n    <div class=\"lw-block-preview-box\">\n  <div class=\"lw-preview-label\">Block Structure<\/div>\n  <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-block-fly-pentagon-shape.png\" alt=\"Fly Pentagon Shape Block\" class=\"lw-block-preview-img\" loading=\"lazy\">\n<\/div>\n    <div class=\"lw-block-desc\">\n      <p>This block makes the drone fly in a regular pentagon pattern. The Length value specifies the length of each side, allowing the drone to trace a five-sided polygon with equal-length sides.<\/p>\n    <\/div>\n    <div class=\"lw-code-container\">\n  <div class=\"lw-code-topbar\">\n    <span class=\"lw-code-lang\">Generated Python<\/span>\n  <\/div>\n  <pre class=\"wp-block-code lw-code-block\"><code class=\"language-python\"><span class=\"py-var\" style=\"color:#9cdcfe;\">drone<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">.<\/span><span class=\"py-func\" style=\"color:#dcdcaa;\">pentagon<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">(<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">length<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">=<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">value<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">,<\/span> <span class=\"py-var\" style=\"color:#9cdcfe;\">duration<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">=<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">value<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">,<\/span> <span class=\"py-var\" style=\"color:#9cdcfe;\">face_direction<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">=<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">value<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">)<\/span><\/code><\/pre>\n<\/div>\n    <div class=\"lw-specs-section\">\n  <figure class=\"wp-block-table is-style-stripes\">\n<table class=\"has-fixed-layout\">\n<thead><tr>\n<th>Parameter<\/th>\n<th>Type<\/th>\n<th>Default<\/th>\n<th>Range<\/th>\n<th>Units<\/th>\n<th>Description<\/th>\n<\/tr><\/thead>\n<tbody>\n<tr>\n<td>LENGTH<\/td>\n<td>Number field<\/td>\n<td>0.6<\/td>\n<td>0.2 to 3.0<\/td>\n<td>meters (m)<\/td>\n<td>Length of each side of the pentagon.<\/td>\n<\/tr>\n<tr>\n<td>DURATION<\/td>\n<td>Value input<\/td>\n<td>1<\/td>\n<td>0.1 to 10<\/td>\n<td>seconds (s)<\/td>\n<td>Time period (s)<\/td>\n<\/tr>\n<tr>\n<td>FACE_DIRECTION<\/td>\n<td>Bool<\/td>\n<td>True<\/td>\n<td>&#8211;<\/td>\n<td>&#8211;<\/td>\n<td>Heading behavior<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n  \n  <p><strong>Returns:<\/strong> None.<\/p>\n<\/div>\n    \n    <div class=\"lw-example-box\">\n  <div class=\"lw-example-header\">Example Routine in Blockly Workspace<\/div>\n  <div class=\"lw-example-img-wrap\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-example-fly-pentagon-mission.png\" alt=\"Fly Pentagon Geometric Mission Example\" loading=\"lazy\">\n  <\/div>\n<\/div>\n  <\/div>\n<\/div>\n\n<div class=\"lw-block-card\">\n  <div class=\"lw-block-header cat-shapes-header\">\n    <div class=\"lw-block-header-left\">\n      <span class=\"lw-cat-badge cat-shapes\">Shapes<\/span>\n      <h4 class=\"wp-block-heading lw-block-title\" id=\"face-flight-direction-litewingfacedirection\"><span class=\"ez-toc-section\" id=\"Face_flight_direction\"><\/span>Face flight direction<span class=\"ez-toc-section-end\"><\/span><\/h4>\n    <\/div>\n    <code class=\"lw-block-slug\">litewing_face_direction<\/code>\n  <\/div>\n  <div class=\"lw-block-body\">\n    <div class=\"lw-block-preview-box\">\n  <div class=\"lw-preview-label\">Block Structure<\/div>\n  <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-block-face-flight-direction.png\" alt=\"Face Flight Direction Modifier Block\" class=\"lw-block-preview-img\" loading=\"lazy\">\n<\/div>\n    <div class=\"lw-block-desc\">\n      <p>This value block chooses whether the drone should point in its direction of travel during a shape path. Select <strong>True<\/strong> when the flight path should guide the drone&#8217;s heading and <strong>False<\/strong> when it does not need that behaviour.<\/p>\n    <\/div>\n    <div class=\"lw-code-container\">\n  <div class=\"lw-code-topbar\">\n    <span class=\"lw-code-lang\">Generated Python<\/span>\n  <\/div>\n  <pre class=\"wp-block-code lw-code-block\"><code class=\"language-python\"><span class=\"py-var\" style=\"color:#9cdcfe;\">face_direction<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">=<\/span><span class=\"py-builtin\" style=\"color:#569cd6;\">True<\/span> <span class=\"py-builtin\" style=\"color:#569cd6;\">or<\/span> <span class=\"py-var\" style=\"color:#9cdcfe;\">face_direction<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">=<\/span><span class=\"py-builtin\" style=\"color:#569cd6;\">False<\/span><\/code><\/pre>\n<\/div>\n    <div class=\"lw-specs-section\">\n  <figure class=\"wp-block-table is-style-stripes\">\n<table class=\"has-fixed-layout\">\n<thead><tr>\n<th>Parameter<\/th>\n<th>Type<\/th>\n<th>Default<\/th>\n<th>Range<\/th>\n<th>Description<\/th>\n<\/tr><\/thead>\n<tbody>\n<tr>\n<td>FACE_DIRECTION<\/td>\n<td>Bool<\/td>\n<td>True<\/td>\n<td>True \/ False<\/td>\n<td>Heading behavior<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n  \n  <p><strong>Returns:<\/strong> a navigation parameter for a compatible shape block.<\/p>\n<\/div>\n    \n    \n  <\/div>\n<\/div>\n<h3 class=\"wp-block-heading\" id=\"sensors-commands\"><span class=\"ez-toc-section\" id=\"Sensors_Commands\"><\/span>Sensors Commands<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Sensor blocks read telemetry from the connected drone. Telemetry is a stream of measurements sent from LiteWing to the app. A sensor reporter can be printed, stored in a variable, or used in a Logic comparison to make the program respond to what the drone measures.<\/p>\n\n<div class=\"lw-block-card\">\n  <div class=\"lw-block-header cat-sensors-header\">\n    <div class=\"lw-block-header-left\">\n      <span class=\"lw-cat-badge cat-sensors\">Sensors<\/span>\n      <h4 class=\"wp-block-heading lw-block-title\" id=\"battery-voltage-litewinggetbattery\"><span class=\"ez-toc-section\" id=\"Battery_voltage\"><\/span>Battery voltage<span class=\"ez-toc-section-end\"><\/span><\/h4>\n    <\/div>\n    <code class=\"lw-block-slug\">litewing_get_battery<\/code>\n  <\/div>\n  <div class=\"lw-block-body\">\n    <div class=\"lw-block-preview-box\">\n  <div class=\"lw-preview-label\">Block Structure<\/div>\n  <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-block-battery-voltage.png\" alt=\"Battery Voltage Reporter Block\" class=\"lw-block-preview-img\" loading=\"lazy\">\n<\/div>\n    <div class=\"lw-block-desc\">\n      <p>This reporter block reads the current battery voltage. It is an important safety value because a low 1S LiPo battery can reduce flight performance and should be charged before flight.<\/p>\n\n<p><strong>Parameters:<\/strong> none.<\/p>\n    <\/div>\n    <div class=\"lw-code-container\">\n  <div class=\"lw-code-topbar\">\n    <span class=\"lw-code-lang\">Generated Python<\/span>\n  <\/div>\n  <pre class=\"wp-block-code lw-code-block\"><code class=\"language-python\"><span class=\"py-var\" style=\"color:#9cdcfe;\">drone<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">.<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">battery<\/span><\/code><\/pre>\n<\/div>\n    <div class=\"lw-specs-section\">\n  \n  \n  <p><strong>Returns:<\/strong> a float in volts.<\/p>\n<\/div>\n    <div class=\"callout-box callout-note\"><strong>NOTE:<\/strong> Do not fly when the battery is low. Charge the battery before the next flight.<\/div>\n    <div class=\"lw-example-box\">\n  <div class=\"lw-example-header\">Example Routine in Blockly Workspace<\/div>\n  <div class=\"lw-example-img-wrap\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-example-battery-voltage-guard.png\" alt=\"Battery Voltage Conditional Guard Example\" loading=\"lazy\">\n  <\/div>\n<\/div>\n  <\/div>\n<\/div>\n\n<div class=\"lw-block-card\">\n  <div class=\"lw-block-header cat-sensors-header\">\n    <div class=\"lw-block-header-left\">\n      <span class=\"lw-cat-badge cat-sensors\">Sensors<\/span>\n      <h4 class=\"wp-block-heading lw-block-title\" id=\"height-sensor-litewinggetheight\"><span class=\"ez-toc-section\" id=\"Height_sensor\"><\/span>Height sensor<span class=\"ez-toc-section-end\"><\/span><\/h4>\n    <\/div>\n    <code class=\"lw-block-slug\">litewing_get_height<\/code>\n  <\/div>\n  <div class=\"lw-block-body\">\n    <div class=\"lw-block-preview-box\">\n  <div class=\"lw-preview-label\">Block Structure<\/div>\n  <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-block-height-sensor.png\" alt=\"Height Sensor Reporter Block\" class=\"lw-block-preview-img\" loading=\"lazy\">\n<\/div>\n    <div class=\"lw-block-desc\">\n      <p>This reporter block reads the current estimated height in metres. The value is based on the available position module height sensing and is especially useful for observing a hover or explaining how a condition can use real sensor data.<\/p>\n\n<p><strong>Parameters:<\/strong> none.<\/p>\n    <\/div>\n    <div class=\"lw-code-container\">\n  <div class=\"lw-code-topbar\">\n    <span class=\"lw-code-lang\">Generated Python<\/span>\n  <\/div>\n  <pre class=\"wp-block-code lw-code-block\"><code class=\"language-python\"><span class=\"py-var\" style=\"color:#9cdcfe;\">drone<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">.<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">height<\/span><\/code><\/pre>\n<\/div>\n    <div class=\"lw-specs-section\">\n  \n  \n  <p><strong>Returns:<\/strong> a float in metres.<\/p>\n<\/div>\n    \n    <div class=\"lw-example-box\">\n  <div class=\"lw-example-header\">Example Routine in Blockly Workspace<\/div>\n  <div class=\"lw-example-img-wrap\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-example-height-sensor-loop.png\" alt=\"Height Sensor Loop Example\" loading=\"lazy\">\n  <\/div>\n<\/div>\n  <\/div>\n<\/div>\n\n<div class=\"lw-block-card\">\n  <div class=\"lw-block-header cat-sensors-header\">\n    <div class=\"lw-block-header-left\">\n      <span class=\"lw-cat-badge cat-sensors\">Sensors<\/span>\n      <h4 class=\"wp-block-heading lw-block-title\" id=\"position-sensor-litewinggetposition\"><span class=\"ez-toc-section\" id=\"Position_sensor\"><\/span>Position sensor<span class=\"ez-toc-section-end\"><\/span><\/h4>\n    <\/div>\n    <code class=\"lw-block-slug\">litewing_get_position<\/code>\n  <\/div>\n  <div class=\"lw-block-body\">\n    <div class=\"lw-block-preview-box\">\n  <div class=\"lw-preview-label\">Block Structure<\/div>\n  <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-block-position-sensor.png\" alt=\"Position Sensor Reporter Block\" class=\"lw-block-preview-img\" loading=\"lazy\">\n<\/div>\n    <div class=\"lw-block-desc\">\n      <p>This reporter block reads the estimated X and Y position relative to the launch point. The values are estimates, not a GPS location, and they depend on optical-flow tracking over a textured, well-lit surface.<\/p>\n\n<p><strong>Parameters:<\/strong> none.<\/p>\n    <\/div>\n    <div class=\"lw-code-container\">\n  <div class=\"lw-code-topbar\">\n    <span class=\"lw-code-lang\">Generated Python<\/span>\n  <\/div>\n  <pre class=\"wp-block-code lw-code-block\"><code class=\"language-python\"><span class=\"py-var\" style=\"color:#9cdcfe;\">drone<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">.<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">position<\/span><\/code><\/pre>\n<\/div>\n    <div class=\"lw-specs-section\">\n  \n  \n  <p><strong>Returns:<\/strong> a position value containing X and Y coordinates.<\/p>\n<\/div>\n    \n    <div class=\"lw-example-box\">\n  <div class=\"lw-example-header\">Example Routine in Blockly Workspace<\/div>\n  <div class=\"lw-example-img-wrap\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-example-position-sensor-telemetry.png\" alt=\"Position Sensor Telemetry Example\" loading=\"lazy\">\n  <\/div>\n<\/div>\n  <\/div>\n<\/div>\n\n<div class=\"lw-block-card\">\n  <div class=\"lw-block-header cat-sensors-header\">\n    <div class=\"lw-block-header-left\">\n      <span class=\"lw-cat-badge cat-sensors\">Sensors<\/span>\n      <h4 class=\"wp-block-heading lw-block-title\" id=\"print-sensor-litewingprintsensor\"><span class=\"ez-toc-section\" id=\"Print_sensor\"><\/span>Print sensor<span class=\"ez-toc-section-end\"><\/span><\/h4>\n    <\/div>\n    <code class=\"lw-block-slug\">litewing_print_sensor<\/code>\n  <\/div>\n  <div class=\"lw-block-body\">\n    <div class=\"lw-block-preview-box\">\n  <div class=\"lw-preview-label\">Block Structure<\/div>\n  <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-block-print-sensor.png\" alt=\"Print Sensor Block\" class=\"lw-block-preview-img\" loading=\"lazy\">\n<\/div>\n    <div class=\"lw-block-desc\">\n      <p>This block prints a selected telemetry value in the console. It is the simplest way to see a live value while testing a connection, a sensor, or a short flight program.<\/p>\n\n<p><strong>Parameters:<\/strong> Battery, Height, Position, or Velocity.<\/p>\n    <\/div>\n    <div class=\"lw-code-container\">\n  <div class=\"lw-code-topbar\">\n    <span class=\"lw-code-lang\">Generated Python<\/span>\n  <\/div>\n  <pre class=\"wp-block-code lw-code-block\"><code class=\"language-python\"><span class=\"py-func\" style=\"color:#dcdcaa;\">print<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">(<\/span><span class=\"py-str\" style=\"color:#ce9178;\">f\"sensor: <\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">{<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">drone<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">.<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">sensor<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">}<\/span><span class=\"py-str\" style=\"color:#ce9178;\">\"<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">)<\/span><\/code><\/pre>\n<\/div>\n    <div class=\"lw-specs-section\">\n  \n  \n  <p><strong>Returns:<\/strong> None.<\/p>\n<\/div>\n    \n    <div class=\"lw-example-box\">\n  <div class=\"lw-example-header\">Example Routine in Blockly Workspace<\/div>\n  <div class=\"lw-example-img-wrap\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-example-print-sensor-readout.png\" alt=\"Print Sensor Console Readout Example\" loading=\"lazy\">\n  <\/div>\n<\/div>\n  <\/div>\n<\/div>\n<h3 class=\"wp-block-heading\" id=\"logging-commands\"><span class=\"ez-toc-section\" id=\"Logging_Commands\"><\/span>Logging Commands<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n<div class=\"lw-block-card\">\n  <div class=\"lw-block-header cat-logging-header\">\n    <div class=\"lw-block-header-left\">\n      <span class=\"lw-cat-badge cat-logging\">Logging<\/span>\n      <h4 class=\"wp-block-heading lw-block-title\" id=\"start-logging-litewingstartlogging\"><span class=\"ez-toc-section\" id=\"Start_logging\"><\/span>Start logging<span class=\"ez-toc-section-end\"><\/span><\/h4>\n    <\/div>\n    <code class=\"lw-block-slug\">litewing_start_logging<\/code>\n  <\/div>\n  <div class=\"lw-block-body\">\n    <div class=\"lw-block-preview-box\">\n  <div class=\"lw-preview-label\">Block Structure<\/div>\n  <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-block-start-logging.png\" alt=\"Start Logging Block\" class=\"lw-block-preview-img\" loading=\"lazy\">\n<\/div>\n    <div class=\"lw-block-desc\">\n      <p>This block starts recording available telemetry data into a CSV file. A CSV file can be opened later in a spreadsheet or data-analysis program.<\/p>\n<p>Telemetry logging is useful for capturing flight data that can be reviewed after the flight. Start logging before the commands or flight sequence you want to analyze, and stop logging after the drone has landed.<\/p>\n\n<p><strong>Parameters:<\/strong> Battery, Height, Position, or Velocity.<\/p>\n    <\/div>\n    <div class=\"lw-code-container\">\n  <div class=\"lw-code-topbar\">\n    <span class=\"lw-code-lang\">Generated Python<\/span>\n  <\/div>\n  <pre class=\"wp-block-code lw-code-block\"><code class=\"language-python\"><span class=\"py-var\" style=\"color:#9cdcfe;\">drone<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">.<\/span><span class=\"py-func\" style=\"color:#dcdcaa;\">start_logging<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">(<\/span><span class=\"py-str\" style=\"color:#ce9178;\">\"filename.csv\"<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">)<\/span><\/code><\/pre>\n<\/div>\n    <div class=\"lw-specs-section\">\n  \n  \n  <p><strong>Returns:<\/strong> Telemetry Flight data.<\/p>\n<\/div>\n    \n    <div class=\"lw-example-box\">\n  <div class=\"lw-example-header\">Example Routine in Blockly Workspace<\/div>\n  <div class=\"lw-example-img-wrap\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-example-start-logging-mission.png\" alt=\"Start Logging Flight Mission Example\" loading=\"lazy\">\n  <\/div>\n<\/div>\n  <\/div>\n<\/div>\n\n<div class=\"lw-block-card\">\n  <div class=\"lw-block-header cat-logging-header\">\n    <div class=\"lw-block-header-left\">\n      <span class=\"lw-cat-badge cat-logging\">Logging<\/span>\n      <h4 class=\"wp-block-heading lw-block-title\" id=\"stop-logging-litewingstoplogging\"><span class=\"ez-toc-section\" id=\"Stop_logging\"><\/span>Stop logging<span class=\"ez-toc-section-end\"><\/span><\/h4>\n    <\/div>\n    <code class=\"lw-block-slug\">litewing_stop_logging<\/code>\n  <\/div>\n  <div class=\"lw-block-body\">\n    <div class=\"lw-block-preview-box\">\n  <div class=\"lw-preview-label\">Block Structure<\/div>\n  <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-block-stop-logging.png\" alt=\"Stop Logging Block\" class=\"lw-block-preview-img\" loading=\"lazy\">\n<\/div>\n    <div class=\"lw-block-desc\">\n      <p>This block stops recording and closes the current CSV file. Always use it after Start logging so the recorded file is finished correctly and can be opened later.<\/p>\n\n<p><strong>Parameters:<\/strong> Battery, Height, Position, or Velocity.<\/p>\n    <\/div>\n    <div class=\"lw-code-container\">\n  <div class=\"lw-code-topbar\">\n    <span class=\"lw-code-lang\">Generated Python<\/span>\n  <\/div>\n  <pre class=\"wp-block-code lw-code-block\"><code class=\"language-python\"><span class=\"py-var\" style=\"color:#9cdcfe;\">drone<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">.<\/span><span class=\"py-func\" style=\"color:#dcdcaa;\">stop_logging<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">(<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">)<\/span><\/code><\/pre>\n<\/div>\n    <div class=\"lw-specs-section\">\n  \n  \n  <p><strong>Returns:<\/strong> Telemetry Flight data.<\/p>\n<\/div>\n    \n    \n  <\/div>\n<\/div>\n<h3 class=\"wp-block-heading\" id=\"utilities-commands\"><span class=\"ez-toc-section\" id=\"Utilities_Commands\"><\/span>Utilities Commands<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n<div class=\"lw-block-card\">\n  <div class=\"lw-block-header cat-utilities-header\">\n    <div class=\"lw-block-header-left\">\n      <span class=\"lw-cat-badge cat-utilities\">Utilities<\/span>\n      <h4 class=\"wp-block-heading lw-block-title\" id=\"speed-modifier-litewingspeed\"><span class=\"ez-toc-section\" id=\"Speed_modifier\"><\/span>Speed modifier<span class=\"ez-toc-section-end\"><\/span><\/h4>\n    <\/div>\n    <code class=\"lw-block-slug\">litewing_speed<\/code>\n  <\/div>\n  <div class=\"lw-block-body\">\n    <div class=\"lw-block-preview-box\">\n  <div class=\"lw-preview-label\">Block Structure<\/div>\n  <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-block-speed-modifier.png\" alt=\"Speed Modifier Block\" class=\"lw-block-preview-img\" loading=\"lazy\">\n<\/div>\n    <div class=\"lw-block-desc\">\n      <p>This value block supplies a movement or navigation speed. It does not run by itself, snap it into a compatible speed socket. A lower speed gives the flight controller more time to correct its position.<\/p>\n    <\/div>\n    <div class=\"lw-code-container\">\n  <div class=\"lw-code-topbar\">\n    <span class=\"lw-code-lang\">Generated Python<\/span>\n  <\/div>\n  <pre class=\"wp-block-code lw-code-block\"><code class=\"language-python\"><span class=\"py-var\" style=\"color:#9cdcfe;\">speed<\/span> <span class=\"py-punct\" style=\"color:#d4d4d4;\">=<\/span> <span class=\"py-num\" style=\"color:#b5cea8;\">0.2<\/span>  <span class=\"py-comment\" style=\"color:#6a9955;font-style:italic;\"># Navigation speed in m\/s<\/span><\/code><\/pre>\n<\/div>\n    <div class=\"lw-specs-section\">\n  <figure class=\"wp-block-table is-style-stripes\">\n<table class=\"has-fixed-layout\">\n<thead><tr>\n<th>Parameter<\/th>\n<th>Type<\/th>\n<th>Default<\/th>\n<th>Range<\/th>\n<th>Units<\/th>\n<\/tr><\/thead>\n<tbody>\n<tr>\n<td>SPEED<\/td>\n<td>Number field<\/td>\n<td>0.2<\/td>\n<td>0.1 to 2.0<\/td>\n<td>m\/s<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n  \n  <p><strong>Returns:<\/strong> Output connection (used by compatible movement and navigation blocks).<\/p>\n<\/div>\n    \n    \n  <\/div>\n<\/div>\n\n<div class=\"lw-block-card\">\n  <div class=\"lw-block-header cat-utilities-header\">\n    <div class=\"lw-block-header-left\">\n      <span class=\"lw-cat-badge cat-utilities\">Utilities<\/span>\n      <h4 class=\"wp-block-heading lw-block-title\" id=\"duration-modifier-litewingduration\"><span class=\"ez-toc-section\" id=\"Duration_modifier\"><\/span>Duration modifier<span class=\"ez-toc-section-end\"><\/span><\/h4>\n    <\/div>\n    <code class=\"lw-block-slug\">litewing_duration<\/code>\n  <\/div>\n  <div class=\"lw-block-body\">\n    <div class=\"lw-block-preview-box\">\n  <div class=\"lw-preview-label\">Block Structure<\/div>\n  <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-block-duration-modifier.png\" alt=\"Duration Modifier Block\" class=\"lw-block-preview-img\" loading=\"lazy\">\n<\/div>\n    <div class=\"lw-block-desc\">\n      <p>This value block supplies a time to Takeoff, Land, or a shape command. It does not run by itself, snap it into the compatible input socket. With a shape block, duration controls the intended time for completing that path.<\/p>\n    <\/div>\n    <div class=\"lw-code-container\">\n  <div class=\"lw-code-topbar\">\n    <span class=\"lw-code-lang\">Generated Python<\/span>\n  <\/div>\n  <pre class=\"wp-block-code lw-code-block\"><code class=\"language-python\"><span class=\"py-var\" style=\"color:#9cdcfe;\">duration<\/span> <span class=\"py-punct\" style=\"color:#d4d4d4;\">=<\/span> <span class=\"py-num\" style=\"color:#b5cea8;\">3<\/span>  <span class=\"py-comment\" style=\"color:#6a9955;font-style:italic;\"># Duration in seconds<\/span><\/code><\/pre>\n<\/div>\n    <div class=\"lw-specs-section\">\n  <figure class=\"wp-block-table is-style-stripes\">\n<table class=\"has-fixed-layout\">\n<thead><tr>\n<th>Parameter<\/th>\n<th>Type<\/th>\n<th>Default<\/th>\n<th>Range<\/th>\n<th>Units<\/th>\n<th>Description<\/th>\n<\/tr><\/thead>\n<tbody>\n<tr>\n<td>DURATION<\/td>\n<td>Value input<\/td>\n<td>1<\/td>\n<td>0.1 to 10<\/td>\n<td>seconds (s)<\/td>\n<td>Time period (s)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n  \n  <p><strong>Returns:<\/strong> a number that can be used by compatible commands.<\/p>\n<\/div>\n    \n    \n  <\/div>\n<\/div>\n\n<div class=\"lw-block-card\">\n  <div class=\"lw-block-header cat-utilities-header\">\n    <div class=\"lw-block-header-left\">\n      <span class=\"lw-cat-badge cat-utilities\">Utilities<\/span>\n      <h4 class=\"wp-block-heading lw-block-title\" id=\"debug-mode-litewingsetdebug\"><span class=\"ez-toc-section\" id=\"Debug_mode\"><\/span>Debug mode<span class=\"ez-toc-section-end\"><\/span><\/h4>\n    <\/div>\n    <code class=\"lw-block-slug\">litewing_set_debug<\/code>\n  <\/div>\n  <div class=\"lw-block-body\">\n    <div class=\"lw-block-preview-box\">\n  <div class=\"lw-preview-label\">Block Structure<\/div>\n  <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-block-debug-mode.png\" alt=\"Debug Mode Block\" class=\"lw-block-preview-img\" loading=\"lazy\">\n<\/div>\n    <div class=\"lw-block-desc\">\n      <p>When Debug mode is on, the program can be tested while keeping the propellers inactive.<\/p>\n<p>Debug mode is useful for checking block order, delays, console output, LED sequences, and sensor logic. It is not a flight simulator, It helps verify the program flow.<\/p>\n    <\/div>\n    <div class=\"lw-code-container\">\n  <div class=\"lw-code-topbar\">\n    <span class=\"lw-code-lang\">Generated Python<\/span>\n  <\/div>\n  <pre class=\"wp-block-code lw-code-block\"><code class=\"language-python\"><span class=\"py-var\" style=\"color:#9cdcfe;\">drone<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">.<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">debug_mode<\/span> <span class=\"py-punct\" style=\"color:#d4d4d4;\">=<\/span> <span class=\"py-builtin\" style=\"color:#569cd6;\">True<\/span> <span class=\"py-builtin\" style=\"color:#569cd6;\">or<\/span> <span class=\"py-var\" style=\"color:#9cdcfe;\">drone<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">.<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">debug_mode<\/span> <span class=\"py-punct\" style=\"color:#d4d4d4;\">=<\/span> <span class=\"py-builtin\" style=\"color:#569cd6;\">False<\/span><\/code><\/pre>\n<\/div>\n    <div class=\"lw-specs-section\">\n  \n  \n  <p><strong>Returns:<\/strong>None.<\/p>\n<\/div>\n    <div class=\"callout-box callout-note\"><strong>NOTE:<\/strong> Turn Debug mode OFF before an intended flight. A Takeoff command will not produce normal motor operation while Debug mode is on.<\/div>\n    <div class=\"lw-example-box\">\n  <div class=\"lw-example-header\">Example Routine in Blockly Workspace<\/div>\n  <div class=\"lw-example-img-wrap\">\n    <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-example-debug-mode-simulation.png\" alt=\"Debug Mode Dry-Run Simulation Example\" loading=\"lazy\">\n  <\/div>\n<\/div>\n  <\/div>\n<\/div>\n\n<div class=\"lw-block-card\">\n  <div class=\"lw-block-header cat-utilities-header\">\n    <div class=\"lw-block-header-left\">\n      <span class=\"lw-cat-badge cat-utilities\">Utilities<\/span>\n      <h4 class=\"wp-block-heading lw-block-title\" id=\"wait-sleep-litewingwait\"><span class=\"ez-toc-section\" id=\"Wait_Sleep\"><\/span>Wait (Sleep)<span class=\"ez-toc-section-end\"><\/span><\/h4>\n    <\/div>\n    <code class=\"lw-block-slug\">litewing_wait<\/code>\n  <\/div>\n  <div class=\"lw-block-body\">\n    <div class=\"lw-block-preview-box\">\n  <div class=\"lw-preview-label\">Block Structure<\/div>\n  <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-block-wait-sleep.png\" alt=\"Wait (Sleep) Block\" class=\"lw-block-preview-img\" loading=\"lazy\">\n<\/div>\n    <div class=\"lw-block-desc\">\n      <p>This block pauses the program for a selected number of seconds. It is useful when a program needs to leave time between visible actions, such as changing an LED colour or fetching sensor value and clearing it later.<\/p>\n\n<p><strong>Parameters:<\/strong> 0.1 s to 60 s in 0.1-second steps.<\/p>\n    <\/div>\n    <div class=\"lw-code-container\">\n  <div class=\"lw-code-topbar\">\n    <span class=\"lw-code-lang\">Generated Python<\/span>\n  <\/div>\n  <pre class=\"wp-block-code lw-code-block\"><code class=\"language-python\"><span class=\"py-var\" style=\"color:#9cdcfe;\">time<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">.<\/span><span class=\"py-func\" style=\"color:#dcdcaa;\">sleep<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">(<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">seconds<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">)<\/span><\/code><\/pre>\n<\/div>\n    <div class=\"lw-specs-section\">\n  \n  \n  <p><strong>Returns:<\/strong> None.<\/p>\n<\/div>\n    \n    \n  <\/div>\n<\/div>\n\n<div class=\"lw-block-card\">\n  <div class=\"lw-block-header cat-utilities-header\">\n    <div class=\"lw-block-header-left\">\n      <span class=\"lw-cat-badge cat-utilities\">Utilities<\/span>\n      <h4 class=\"wp-block-heading lw-block-title\" id=\"print-message-litewingprint\"><span class=\"ez-toc-section\" id=\"Print_message\"><\/span>Print message<span class=\"ez-toc-section-end\"><\/span><\/h4>\n    <\/div>\n    <code class=\"lw-block-slug\">litewing_print<\/code>\n  <\/div>\n  <div class=\"lw-block-body\">\n    <div class=\"lw-block-preview-box\">\n  <div class=\"lw-preview-label\">Block Structure<\/div>\n  <img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-block-print-message.png\" alt=\"Print Message Block\" class=\"lw-block-preview-img\" loading=\"lazy\">\n<\/div>\n    <div class=\"lw-block-desc\">\n      <p>This block prints a text message or compatible value in the console. Print is useful for making a program explain what it is doing, for example Starting LED test, Taking off, or Flight complete.<\/p>\n    <\/div>\n    <div class=\"lw-code-container\">\n  <div class=\"lw-code-topbar\">\n    <span class=\"lw-code-lang\">Generated Python<\/span>\n  <\/div>\n  <pre class=\"wp-block-code lw-code-block\"><code class=\"language-python\"><span class=\"py-func\" style=\"color:#dcdcaa;\">print<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">(<\/span><span class=\"py-var\" style=\"color:#9cdcfe;\">value<\/span><span class=\"py-punct\" style=\"color:#d4d4d4;\">)<\/span><\/code><\/pre>\n<\/div>\n    <div class=\"lw-specs-section\">\n  \n  <p><strong>Parameters:<\/strong> None.<\/p>\n  <p><strong>Returns:<\/strong> text or a compatible value block.<\/p>\n<\/div>\n    \n    \n  <\/div>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"standard-programming-blocks\"><span class=\"ez-toc-section\" id=\"Standard_programming_blocks\"><\/span>Standard programming blocks<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>The lower part of the toolbox contains standard Blockly categories. These blocks make it possible to add decisions, repetition, calculations, data, variables, and reusable commands to drone programs.<\/p>\n<figure class=\"wp-block-table is-style-stripes\">\n<table class=\"has-fixed-layout\">\n<thead><tr>\n<th>Category<\/th>\n<th>Blocks available in LiteWing Blockly<\/th>\n<th>Typical use with LiteWing<\/th>\n<\/tr><\/thead>\n<tbody>\n<tr>\n<td>Logic<\/td>\n<td><strong>if<\/strong>, comparison, <strong>and\/or, not, true\/false<\/strong><\/td>\n<td>Land if battery voltage is below a safe value.<\/td>\n<\/tr>\n<tr>\n<td>Loops<\/td>\n<td>repeat, while\/until, count with<\/td>\n<td>Repeat an LED pattern or a small movement sequence.<\/td>\n<\/tr>\n<tr>\n<td>Math<\/td>\n<td>number, arithmetic, random integer<\/td>\n<td>Calculate a value or choose a random LED colour component.<\/td>\n<\/tr>\n<tr>\n<td>Lists<\/td>\n<td>create list, repeat list item, length, is empty<\/td>\n<td>Store non-flight data or program values.<\/td>\n<\/tr>\n<tr>\n<td>Text<\/td>\n<td>text, join text, print text<\/td>\n<td>Create console messages and labels.<\/td>\n<\/tr>\n<tr>\n<td>Variables<\/td>\n<td>create, set, get, change variable<\/td>\n<td>Store a counter, a target value, or a test result.<\/td>\n<\/tr>\n<tr>\n<td>Functions<\/td>\n<td>define function, call function<\/td>\n<td>Reuse a safe flight routine or LED sequence.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n<h3 class=\"wp-block-heading\" id=\"standard-block-reference\"><span class=\"ez-toc-section\" id=\"Standard_block_reference\"><\/span>Standard block reference<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<figure class=\"wp-block-table is-style-stripes\">\n<table class=\"has-fixed-layout\">\n<thead><tr>\n<th>Block<\/th>\n<th>What it does<\/th>\n<th>Python<\/th>\n<th>Inputs and returns<\/th>\n<th>Example use<\/th>\n<\/tr><\/thead>\n<tbody>\n<tr>\n<td><strong>if \/ else<\/strong><\/td>\n<td>Runs one stack when a condition is true and another stack when it is false.<\/td>\n<td><strong>if condition:<\/strong> and optional <strong>else:<\/strong><\/td>\n<td>Takes a true\/false condition and statement stacks. Returns nothing.<\/td>\n<td>Land when battery voltage is below 3.5 V.<\/td>\n<\/tr>\n<tr>\n<td><strong>comparison<\/strong><\/td>\n<td>Compares two values using equals, not equals, less than, greater than, less than or equal to, or greater than or equal to.<\/td>\n<td>For example, <strong>drone.battery \\&lt; 3.5<\/strong><\/td>\n<td>Takes two values. Returns <strong>True<\/strong> or <strong>False<\/strong>.<\/td>\n<td>Compare Battery voltage with 3.5.<\/td>\n<\/tr>\n<tr>\n<td><strong>and \/ or<\/strong><\/td>\n<td>Combines two conditions. <strong>and<\/strong> needs both conditions to be true, <strong>or<\/strong> needs either one to be true.<\/td>\n<td><strong>first and second<\/strong> or <strong>first or second<\/strong><\/td>\n<td>Takes two true\/false values. Returns <strong>True<\/strong> or <strong>False<\/strong>.<\/td>\n<td>Check that the battery is healthy <strong>and<\/strong> the height is below a limit.<\/td>\n<\/tr>\n<tr>\n<td><strong>not<\/strong><\/td>\n<td>Reverses a true\/false value.<\/td>\n<td><strong>not condition<\/strong><\/td>\n<td>Takes one true\/false value. Returns <strong>True<\/strong> or <strong>False.<\/strong><\/td>\n<td>Use <strong>not<\/strong> with a condition that detects a completed task.<\/td>\n<\/tr>\n<tr>\n<td><strong>true \/ false<\/strong><\/td>\n<td>Supplies a fixed true or false value.<\/td>\n<td><strong>True<\/strong> or <strong>False<\/strong><\/td>\n<td>No inputs. Returns <strong>True<\/strong> or <strong>False.<\/strong><\/td>\n<td>Use it with a condition or an app setting that needs a Boolean value.<\/td>\n<\/tr>\n<tr>\n<td><strong>repeat<\/strong><\/td>\n<td>Repeat the commands inside it a selected number of times.<\/td>\n<td>for count in range(times):<\/td>\n<td>Takes a number and a statement stack. Returns nothing.<\/td>\n<td>Blink LEDs three times or repeat a short movement routine.<\/td>\n<\/tr>\n<tr>\n<td><strong>while \/ until<\/strong><\/td>\n<td>Repeats while a condition remains true, or until a condition becomes true.<\/td>\n<td>while condition: or while not condition:<\/td>\n<td>Takes a condition and a statement stack. Returns nothing.<\/td>\n<td>Keep checking a value during a supervised test.<\/td>\n<\/tr>\n<tr>\n<td><strong>count with<\/strong><\/td>\n<td>Repeats commands while a variable counts from a start value to an end value.<\/td>\n<td>for number in range(start, end, step):<\/td>\n<td>Takes a variable, start, end, step, and statement stack. Returns nothing.<\/td>\n<td>Run a short sequence five times while counting its steps.<\/td>\n<\/tr>\n<tr>\n<td><strong>number<\/strong><\/td>\n<td>Supplies a number.<\/td>\n<td>A numeric literal, such as 0.3<\/td>\n<td>No inputs. Returns a number.<\/td>\n<td>Use it for a height, delay, distance, or comparison value.<\/td>\n<\/tr>\n<tr>\n<td><strong>arithmetic<\/strong><\/td>\n<td>Adds, subtracts, multiplies, divides, or raises one number by another.<\/td>\n<td>For example, <strong>a \\+ b<\/strong><\/td>\n<td>Take two numbers. Returns a number.<\/td>\n<td>Calculate a new value before printing it.<\/td>\n<\/tr>\n<tr>\n<td><strong>random integer<\/strong><\/td>\n<td>Selects a whole number between two limits.<\/td>\n<td>random.randint(from, to)<\/td>\n<td>Takes lower and upper limits. Returns a number.<\/td>\n<td>Select a random value for an LED colour component.<\/td>\n<\/tr>\n<tr>\n<td><strong>create list<\/strong><\/td>\n<td>Creates a list of items.<\/td>\n<td>\\[item1, item2\\]<\/td>\n<td>Takes one or more values. Returns a list.<\/td>\n<td>Store non-flight data used by a lesson activity.<\/td>\n<\/tr>\n<tr>\n<td><strong>repeat list item<\/strong><\/td>\n<td>Creates a list containing the same item a chosen number of times.<\/td>\n<td>\\[item\\] \\* count<\/td>\n<td>Take an item and a count. Returns a list.<\/td>\n<td>Create a repeated data set for a programming exercise.<\/td>\n<\/tr>\n<tr>\n<td><strong>length of list<\/strong><\/td>\n<td>Counts the items in a list.<\/td>\n<td>len(list)<\/td>\n<td>Take a list. Returns a number.<\/td>\n<td>Check how many stored values are available.<\/td>\n<\/tr>\n<tr>\n<td><strong>list is empty<\/strong><\/td>\n<td>Checks whether a list contains no items.<\/td>\n<td>not list<\/td>\n<td>Take a list. Returns <strong>True<\/strong> or <strong>False.<\/strong><\/td>\n<td>Prevent a program from reading an empty list.<\/td>\n<\/tr>\n<tr>\n<td><strong>text<\/strong><\/td>\n<td>Supplies text characters.<\/td>\n<td>A quoted string, such as &#8216;Ready&#8217;<\/td>\n<td>No inputs. Returns text.<\/td>\n<td>Print a message in the console.<\/td>\n<\/tr>\n<tr>\n<td><strong>join text<\/strong><\/td>\n<td>Combines two or more pieces of text.<\/td>\n<td>A joined string expression<\/td>\n<td>Takes text values. Returns text.<\/td>\n<td>Build a message with a label and a variable value.<\/td>\n<\/tr>\n<tr>\n<td><strong>print text<\/strong><\/td>\n<td>Displays a text value in the console.<\/td>\n<td>print(text)<\/td>\n<td>Takes text or a compatible value. Returns nothing.<\/td>\n<td>Show <strong>Flight complete<\/strong> after land.<\/td>\n<\/tr>\n<tr>\n<td><strong>set variable<\/strong><\/td>\n<td>Stores a value in a named variable.<\/td>\n<td>name = value<\/td>\n<td>Takes a variable name and a value. Returns nothing.<\/td>\n<td>Store a selected flight count.<\/td>\n<\/tr>\n<tr>\n<td><strong>get variable<\/strong><\/td>\n<td>Reads the value stored in a variable.<\/td>\n<td>name<\/td>\n<td>No inputs. Returns the stored value.<\/td>\n<td>Use the saved count in a repeat block.<\/td>\n<\/tr>\n<tr>\n<td><strong>change variable by<\/strong><\/td>\n<td>Increases or decreases a numeric variable.<\/td>\n<td>name \\+= value<\/td>\n<td>Take a variable and a number. Returns nothing.<\/td>\n<td>Count completed LED blink cycles.<\/td>\n<\/tr>\n<tr>\n<td><strong>define function<\/strong><\/td>\n<td>Creates a reusable named group of commands.<\/td>\n<td>def function_name():<\/td>\n<td>Takes a function name and a statement stack. Returns nothing until called.<\/td>\n<td>Define a reusable LED-ready sequence.<\/td>\n<\/tr>\n<tr>\n<td><strong>call function<\/strong><\/td>\n<td>Runs a function created elsewhere in the workspace.<\/td>\n<td>function_name()<\/td>\n<td>Take the selected function name. Returns the function result, if any.<\/td>\n<td>Run the same LED-ready sequence before each supervised test.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n<div class=\"callout-box callout-note\"><strong>NOTE:<\/strong> Do not create an uncontrolled or endless flight loop. Always include a clear landing condition, keep the workspace supervised, and test new program logic with Debug mode before flight.<\/div>\n<h3 class=\"wp-block-heading\" id=\"example-low-battery-landing-check\"><span class=\"ez-toc-section\" id=\"Example_low-battery_landing_check\"><\/span>Example: low-battery landing check<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The following block idea combines a sensor reporter with standard Logic:<\/p>\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/litewing-example-low-battery-landing-check.png\" alt=\"Low-Battery Landing Check Complete Block Stack\" class=\"wp-image-image96\" loading=\"lazy\"><\/figure>\n<div class=\"callout-box callout-note\"><strong>NOTE:<\/strong> A program should always contain a safe landing path. Test new logic with Debug mode first.<\/div>\n\n<h2 class=\"wp-block-heading\" id=\"troubleshooting\"><span class=\"ez-toc-section\" id=\"Troubleshooting\"><\/span>Troubleshooting<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<figure class=\"wp-block-table is-style-stripes\">\n<table class=\"has-fixed-layout\">\n<thead><tr>\n<th>Problem<\/th>\n<th>What to check<\/th>\n<\/tr><\/thead>\n<tbody>\n<tr>\n<td>The app says the drone is not connected<\/td>\n<td>Check that the computer is connected to LiteWing Wi-Fi, confirm the IP address, then select Connect again.<\/td>\n<\/tr>\n<tr>\n<td>Sensors tab has no live values<\/td>\n<td>Confirm that the connection status is green and that the Drone Positioning Module is installed with compatible v3.0.0 or later firmware.<\/td>\n<\/tr>\n<tr>\n<td>LED test does not run<\/td>\n<td>Read the console, check the Wi-Fi connection, and reconnect before running the program again.<\/td>\n<\/tr>\n<tr>\n<td>The drone does not take off<\/td>\n<td>Confirm that the Arm <strong>drone<\/strong> comes before <strong>Takeoff<\/strong>, Debug mode is OFF, the battery is charged, and the positioning module and compatible firmware are installed.<\/td>\n<\/tr>\n<tr>\n<td>The drone drifts<\/td>\n<td>Use a flat, well-lit, textured floor. Clean the optical-flow sensor area and keep the first movements short.<\/td>\n<\/tr>\n<tr>\n<td>The drone needs to be stopped immediately<\/td>\n<td>Press Spacebar or select Stop. Remember that this cuts motor power and the drone falls.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n<script>\n(function() {\n  function initDownloadToggle() {\n    var btn = document.getElementById('lw-download-toggle-btn');\n    var p = document.getElementById('lw-platforms');\n    var c = document.getElementById('lw-caret');\n    if (!btn || !p) return;\n    btn.onclick = function(e) {\n      if (e) e.preventDefault();\n      var open = p.classList.toggle('is-open');\n      if (c) c.style.transform = open ? 'rotate(180deg)' : 'rotate(0deg)';\n    };\n  }\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', initDownloadToggle);\n  } else {\n    initDownloadToggle();\n  }\n})();\n<\/script>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Introduction LiteWing Blockly is a visual programming app for the LiteWing Drone. Instead of writing every command by hand, you [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":740,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_uag_custom_page_level_css":"","site-sidebar-layout":"left-sidebar","site-content-layout":"","ast-site-content-layout":"normal","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-739","page","type-page","status-publish","has-post-thumbnail","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>LiteWing Blockly - Wiki Page - CircuitDigest Wiki<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/circuitdigest.com\/wiki\/litewing-blockly-wiki-page\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"LiteWing Blockly - Wiki Page - CircuitDigest Wiki\" \/>\n<meta property=\"og:description\" content=\"Introduction LiteWing Blockly is a visual programming app for the LiteWing Drone. Instead of writing every command by hand, you [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/circuitdigest.com\/wiki\/litewing-blockly-wiki-page\/\" \/>\n<meta property=\"og:site_name\" content=\"CircuitDigest Wiki\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/circuitdigest\/\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-26T12:36:28+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/Screenshot-2026-09-18-120443.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1267\" \/>\n\t<meta property=\"og:image:height\" content=\"793\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@CircuitDigest\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"49 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/circuitdigest.com\/wiki\/litewing-blockly-wiki-page\/\",\"url\":\"https:\/\/circuitdigest.com\/wiki\/litewing-blockly-wiki-page\/\",\"name\":\"LiteWing Blockly - Wiki Page - CircuitDigest Wiki\",\"isPartOf\":{\"@id\":\"https:\/\/circuitdigest.com\/wiki\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/circuitdigest.com\/wiki\/litewing-blockly-wiki-page\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/circuitdigest.com\/wiki\/litewing-blockly-wiki-page\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/Screenshot-2026-09-18-120443.png\",\"datePublished\":\"2026-09-21T12:08:50+00:00\",\"dateModified\":\"2026-09-26T12:36:28+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/circuitdigest.com\/wiki\/litewing-blockly-wiki-page\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/circuitdigest.com\/wiki\/litewing-blockly-wiki-page\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/circuitdigest.com\/wiki\/litewing-blockly-wiki-page\/#primaryimage\",\"url\":\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/Screenshot-2026-09-18-120443.png\",\"contentUrl\":\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/Screenshot-2026-09-18-120443.png\",\"width\":1267,\"height\":793},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/circuitdigest.com\/wiki\/litewing-blockly-wiki-page\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/circuitdigest.com\/wiki\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"LiteWing Blockly &#8211; Wiki Page\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/circuitdigest.com\/wiki\/#website\",\"url\":\"https:\/\/circuitdigest.com\/wiki\/\",\"name\":\"CircuitDigest Wiki\",\"description\":\"Wiki Page for Circuit Digest\",\"publisher\":{\"@id\":\"https:\/\/circuitdigest.com\/wiki\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/circuitdigest.com\/wiki\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/circuitdigest.com\/wiki\/#organization\",\"name\":\"CircuitDigest Wiki\",\"url\":\"https:\/\/circuitdigest.com\/wiki\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/circuitdigest.com\/wiki\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2025\/12\/cd-logo-trans.png\",\"contentUrl\":\"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2025\/12\/cd-logo-trans.png\",\"width\":156,\"height\":40,\"caption\":\"CircuitDigest Wiki\"},\"image\":{\"@id\":\"https:\/\/circuitdigest.com\/wiki\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/circuitdigest\/\",\"https:\/\/x.com\/CircuitDigest\",\"https:\/\/www.youtube.com\/circuitdigest\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"LiteWing Blockly - Wiki Page - CircuitDigest Wiki","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/circuitdigest.com\/wiki\/litewing-blockly-wiki-page\/","og_locale":"en_US","og_type":"article","og_title":"LiteWing Blockly - Wiki Page - CircuitDigest Wiki","og_description":"Introduction LiteWing Blockly is a visual programming app for the LiteWing Drone. Instead of writing every command by hand, you [&hellip;]","og_url":"https:\/\/circuitdigest.com\/wiki\/litewing-blockly-wiki-page\/","og_site_name":"CircuitDigest Wiki","article_publisher":"https:\/\/www.facebook.com\/circuitdigest\/","article_modified_time":"2026-09-26T12:36:28+00:00","og_image":[{"width":1267,"height":793,"url":"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/Screenshot-2026-09-18-120443.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_site":"@CircuitDigest","twitter_misc":{"Est. reading time":"49 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/circuitdigest.com\/wiki\/litewing-blockly-wiki-page\/","url":"https:\/\/circuitdigest.com\/wiki\/litewing-blockly-wiki-page\/","name":"LiteWing Blockly - Wiki Page - CircuitDigest Wiki","isPartOf":{"@id":"https:\/\/circuitdigest.com\/wiki\/#website"},"primaryImageOfPage":{"@id":"https:\/\/circuitdigest.com\/wiki\/litewing-blockly-wiki-page\/#primaryimage"},"image":{"@id":"https:\/\/circuitdigest.com\/wiki\/litewing-blockly-wiki-page\/#primaryimage"},"thumbnailUrl":"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/Screenshot-2026-09-18-120443.png","datePublished":"2026-09-21T12:08:50+00:00","dateModified":"2026-09-26T12:36:28+00:00","breadcrumb":{"@id":"https:\/\/circuitdigest.com\/wiki\/litewing-blockly-wiki-page\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/circuitdigest.com\/wiki\/litewing-blockly-wiki-page\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/circuitdigest.com\/wiki\/litewing-blockly-wiki-page\/#primaryimage","url":"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/Screenshot-2026-09-18-120443.png","contentUrl":"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/Screenshot-2026-09-18-120443.png","width":1267,"height":793},{"@type":"BreadcrumbList","@id":"https:\/\/circuitdigest.com\/wiki\/litewing-blockly-wiki-page\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/circuitdigest.com\/wiki\/"},{"@type":"ListItem","position":2,"name":"LiteWing Blockly &#8211; Wiki Page"}]},{"@type":"WebSite","@id":"https:\/\/circuitdigest.com\/wiki\/#website","url":"https:\/\/circuitdigest.com\/wiki\/","name":"CircuitDigest Wiki","description":"Wiki Page for Circuit Digest","publisher":{"@id":"https:\/\/circuitdigest.com\/wiki\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/circuitdigest.com\/wiki\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/circuitdigest.com\/wiki\/#organization","name":"CircuitDigest Wiki","url":"https:\/\/circuitdigest.com\/wiki\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/circuitdigest.com\/wiki\/#\/schema\/logo\/image\/","url":"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2025\/12\/cd-logo-trans.png","contentUrl":"https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2025\/12\/cd-logo-trans.png","width":156,"height":40,"caption":"CircuitDigest Wiki"},"image":{"@id":"https:\/\/circuitdigest.com\/wiki\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/circuitdigest\/","https:\/\/x.com\/CircuitDigest","https:\/\/www.youtube.com\/circuitdigest"]}]}},"uagb_featured_image_src":{"full":["https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/Screenshot-2026-09-18-120443.png",1267,793,false],"thumbnail":["https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/Screenshot-2026-09-18-120443-150x150.png",150,150,true],"medium":["https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/Screenshot-2026-09-18-120443-300x188.png",300,188,true],"medium_large":["https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/Screenshot-2026-09-18-120443-768x481.png",768,481,true],"large":["https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/Screenshot-2026-09-18-120443-1024x641.png",1024,641,true],"1536x1536":["https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/Screenshot-2026-09-18-120443.png",1267,793,false],"2048x2048":["https:\/\/circuitdigest.com\/wiki\/wp-content\/uploads\/2026\/09\/Screenshot-2026-09-18-120443.png",1267,793,false]},"uagb_author_info":{"display_name":"wiki_admin","author_link":"https:\/\/circuitdigest.com\/wiki\/author\/wiki_admin\/"},"uagb_comment_info":0,"uagb_excerpt":"Introduction LiteWing Blockly is a visual programming app for the LiteWing Drone. Instead of writing every command by hand, you [&hellip;]","_links":{"self":[{"href":"https:\/\/circuitdigest.com\/wiki\/wp-json\/wp\/v2\/pages\/739","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/circuitdigest.com\/wiki\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/circuitdigest.com\/wiki\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/circuitdigest.com\/wiki\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/circuitdigest.com\/wiki\/wp-json\/wp\/v2\/comments?post=739"}],"version-history":[{"count":29,"href":"https:\/\/circuitdigest.com\/wiki\/wp-json\/wp\/v2\/pages\/739\/revisions"}],"predecessor-version":[{"id":904,"href":"https:\/\/circuitdigest.com\/wiki\/wp-json\/wp\/v2\/pages\/739\/revisions\/904"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/circuitdigest.com\/wiki\/wp-json\/wp\/v2\/media\/740"}],"wp:attachment":[{"href":"https:\/\/circuitdigest.com\/wiki\/wp-json\/wp\/v2\/media?parent=739"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}