schlammbad edited this page Feb 21, 2024 · 5 revisions

Below are the descriptions of the included examples. You can find these in the Library menu item.

BlinkUsingTaskFunctions

This demonstrates the use of the FunctionTask feature of Task library. It will use tasks to blink an LED repeatedly without the use of delay(). In this example, tasks are declared at the top and are associated with a function that will be run when the task gets called to update. The tasks will continuously toggle their running state; starting the other, which will turn off and on the LED.

BlinkUsingTaskMacros

This demonstrates the use of the Task macros feature of Task library. It will use a custom task defined using the helper macros to blink an LED repeatedly. This is intended for intermediate level coders where more control is needed. This exposes to the developer the functions that are called when the task is started and stopped along with updated. The custom task is defined in the taskBlinkLed.h tab.

BlinkUsingCustomTask

This demonstrates the use of the custom Task object feature of Task library. It will use a custom task to blink a LED repeatedly. This is intended for advanced level coders where the most control is required and knowledge of C++ is understood.

ButtonTask

This demonstrates the use of the custom Task object feature of Task library.
It will instance two custom ButtonTasks to monitor two different pins and make a call back when they change state; with de-bounce and auto repeat support.

This requires two momentary buttons attached to any io pins and ground. One button will turn on the onboard LED when it is pressed down, the other button turn off the onboard LED when it is released. Both will send useful information to the serial monitor.
The custom task is defined in the ButtonTask.h tab.

ButtonInterrupt

NOTE: Due to differences between how CPU architectures sleep, this example is aimed at AVR chipsets.

This demonstrates the use of the Sleep feature of the Task library.
It will instance two custom ButtonTasks to monitor two different pins and call back when they change state; with de-bounce and auto repeat support. An external interrupt is tied to the buttons to wake the Arduino up on any button press. There are two tasks implementing a LED Blink showing a "heartbeat" that can only run when awake. There is a task that will put the Arduino into a deep sleep 15 seconds after any button press.

This requires two momentary buttons attached any io pins and ground. This requires a diode per button be attached between the button pin and a single external interrupt pin. The cathode (black band) end of the diode is attached to the button pin; the anode to the interrupt pin.

MessageTask

This demonstrates the use of the message passing feature of Task library. It will instance two custom ButtonTasks to monitor two different pins and they will send messages when they change state. It will also have tasks that provide a heartbeat message.

This requires two momentary buttons attached between pins 4 & 5 and ground, you can change the pins to any digital pin

RotaryEncoder

This demonstrates creating a task to manage the details of rotary encoder. The task will track a value and increment and decrement it when the encoder is rotated. It will also provide a callback so the application can respond. Further, it provides a de-bounced button callback for the encoder press feature.

This requires a common rotary encoder be connected to available pins.

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
schlammbad edited this page Feb 21, 2024 · 5 revisions

Below are the descriptions of the included examples. You can find these in the Library menu item.

BlinkUsingTaskFunctions

This demonstrates the use of the FunctionTask feature of Task library. It will use tasks to blink an LED repeatedly without the use of delay(). In this example, tasks are declared at the top and are associated with a function that will be run when the task gets called to update. The tasks will continuously toggle their running state; starting the other, which will turn off and on the LED.

BlinkUsingTaskMacros

This demonstrates the use of the Task macros feature of Task library. It will use a custom task defined using the helper macros to blink an LED repeatedly. This is intended for intermediate level coders where more control is needed. This exposes to the developer the functions that are called when the task is started and stopped along with updated. The custom task is defined in the taskBlinkLed.h tab.

BlinkUsingCustomTask

This demonstrates the use of the custom Task object feature of Task library. It will use a custom task to blink a LED repeatedly. This is intended for advanced level coders where the most control is required and knowledge of C++ is understood.

ButtonTask

This demonstrates the use of the custom Task object feature of Task library.
It will instance two custom ButtonTasks to monitor two different pins and make a call back when they change state; with de-bounce and auto repeat support.

This requires two momentary buttons attached to any io pins and ground. One button will turn on the onboard LED when it is pressed down, the other button turn off the onboard LED when it is released. Both will send useful information to the serial monitor.
The custom task is defined in the ButtonTask.h tab.

ButtonInterrupt

NOTE: Due to differences between how CPU architectures sleep, this example is aimed at AVR chipsets.

This demonstrates the use of the Sleep feature of the Task library.
It will instance two custom ButtonTasks to monitor two different pins and call back when they change state; with de-bounce and auto repeat support. An external interrupt is tied to the buttons to wake the Arduino up on any button press. There are two tasks implementing a LED Blink showing a "heartbeat" that can only run when awake. There is a task that will put the Arduino into a deep sleep 15 seconds after any button press.

This requires two momentary buttons attached any io pins and ground. This requires a diode per button be attached between the button pin and a single external interrupt pin. The cathode (black band) end of the diode is attached to the button pin; the anode to the interrupt pin.

MessageTask

This demonstrates the use of the message passing feature of Task library. It will instance two custom ButtonTasks to monitor two different pins and they will send messages when they change state. It will also have tasks that provide a heartbeat message.

This requires two momentary buttons attached between pins 4 & 5 and ground, you can change the pins to any digital pin

RotaryEncoder

This demonstrates creating a task to manage the details of rotary encoder. The task will track a value and increment and decrement it when the encoder is rotated. It will also provide a callback so the application can respond. Further, it provides a de-bounced button callback for the encoder press feature.

This requires a common rotary encoder be connected to available pins.

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
schlammbad edited this page Feb 21, 2024 · 5 revisions

Below are the descriptions of the included examples. You can find these in the Library menu item.

BlinkUsingTaskFunctions

This demonstrates the use of the FunctionTask feature of Task library. It will use tasks to blink an LED repeatedly without the use of delay(). In this example, tasks are declared at the top and are associated with a function that will be run when the task gets called to update. The tasks will continuously toggle their running state; starting the other, which will turn off and on the LED.

BlinkUsingTaskMacros

This demonstrates the use of the Task macros feature of Task library. It will use a custom task defined using the helper macros to blink an LED repeatedly. This is intended for intermediate level coders where more control is needed. This exposes to the developer the functions that are called when the task is started and stopped along with updated. The custom task is defined in the taskBlinkLed.h tab.

BlinkUsingCustomTask

This demonstrates the use of the custom Task object feature of Task library. It will use a custom task to blink a LED repeatedly. This is intended for advanced level coders where the most control is required and knowledge of C++ is understood.

ButtonTask

This demonstrates the use of the custom Task object feature of Task library.
It will instance two custom ButtonTasks to monitor two different pins and make a call back when they change state; with de-bounce and auto repeat support.

This requires two momentary buttons attached to any io pins and ground. One button will turn on the onboard LED when it is pressed down, the other button turn off the onboard LED when it is released. Both will send useful information to the serial monitor.
The custom task is defined in the ButtonTask.h tab.

ButtonInterrupt

NOTE: Due to differences between how CPU architectures sleep, this example is aimed at AVR chipsets.

This demonstrates the use of the Sleep feature of the Task library.
It will instance two custom ButtonTasks to monitor two different pins and call back when they change state; with de-bounce and auto repeat support. An external interrupt is tied to the buttons to wake the Arduino up on any button press. There are two tasks implementing a LED Blink showing a "heartbeat" that can only run when awake. There is a task that will put the Arduino into a deep sleep 15 seconds after any button press.

This requires two momentary buttons attached any io pins and ground. This requires a diode per button be attached between the button pin and a single external interrupt pin. The cathode (black band) end of the diode is attached to the button pin; the anode to the interrupt pin.

MessageTask

This demonstrates the use of the message passing feature of Task library. It will instance two custom ButtonTasks to monitor two different pins and they will send messages when they change state. It will also have tasks that provide a heartbeat message.

This requires two momentary buttons attached between pins 4 & 5 and ground, you can change the pins to any digital pin

RotaryEncoder

This demonstrates creating a task to manage the details of rotary encoder. The task will track a value and increment and decrement it when the encoder is rotated. It will also provide a callback so the application can respond. Further, it provides a de-bounced button callback for the encoder press feature.

This requires a common rotary encoder be connected to available pins.

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
schlammbad edited this page Feb 21, 2024 · 5 revisions

Below are the descriptions of the included examples. You can find these in the Library menu item.

BlinkUsingTaskFunctions

This demonstrates the use of the FunctionTask feature of Task library. It will use tasks to blink an LED repeatedly without the use of delay(). In this example, tasks are declared at the top and are associated with a function that will be run when the task gets called to update. The tasks will continuously toggle their running state; starting the other, which will turn off and on the LED.

BlinkUsingTaskMacros

This demonstrates the use of the Task macros feature of Task library. It will use a custom task defined using the helper macros to blink an LED repeatedly. This is intended for intermediate level coders where more control is needed. This exposes to the developer the functions that are called when the task is started and stopped along with updated. The custom task is defined in the taskBlinkLed.h tab.

BlinkUsingCustomTask

This demonstrates the use of the custom Task object feature of Task library. It will use a custom task to blink a LED repeatedly. This is intended for advanced level coders where the most control is required and knowledge of C++ is understood.

ButtonTask

This demonstrates the use of the custom Task object feature of Task library.
It will instance two custom ButtonTasks to monitor two different pins and make a call back when they change state; with de-bounce and auto repeat support.

This requires two momentary buttons attached to any io pins and ground. One button will turn on the onboard LED when it is pressed down, the other button turn off the onboard LED when it is released. Both will send useful information to the serial monitor.
The custom task is defined in the ButtonTask.h tab.

ButtonInterrupt

NOTE: Due to differences between how CPU architectures sleep, this example is aimed at AVR chipsets.

This demonstrates the use of the Sleep feature of the Task library.
It will instance two custom ButtonTasks to monitor two different pins and call back when they change state; with de-bounce and auto repeat support. An external interrupt is tied to the buttons to wake the Arduino up on any button press. There are two tasks implementing a LED Blink showing a "heartbeat" that can only run when awake. There is a task that will put the Arduino into a deep sleep 15 seconds after any button press.

This requires two momentary buttons attached any io pins and ground. This requires a diode per button be attached between the button pin and a single external interrupt pin. The cathode (black band) end of the diode is attached to the button pin; the anode to the interrupt pin.

MessageTask

This demonstrates the use of the message passing feature of Task library. It will instance two custom ButtonTasks to monitor two different pins and they will send messages when they change state. It will also have tasks that provide a heartbeat message.

This requires two momentary buttons attached between pins 4 & 5 and ground, you can change the pins to any digital pin

RotaryEncoder

This demonstrates creating a task to manage the details of rotary encoder. The task will track a value and increment and decrement it when the encoder is rotated. It will also provide a callback so the application can respond. Further, it provides a de-bounced button callback for the encoder press feature.

This requires a common rotary encoder be connected to available pins.

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
schlammbad edited this page Feb 21, 2024 · 5 revisions

Below are the descriptions of the included examples. You can find these in the Library menu item.

BlinkUsingTaskFunctions

This demonstrates the use of the FunctionTask feature of Task library. It will use tasks to blink an LED repeatedly without the use of delay(). In this example, tasks are declared at the top and are associated with a function that will be run when the task gets called to update. The tasks will continuously toggle their running state; starting the other, which will turn off and on the LED.

BlinkUsingTaskMacros

This demonstrates the use of the Task macros feature of Task library. It will use a custom task defined using the helper macros to blink an LED repeatedly. This is intended for intermediate level coders where more control is needed. This exposes to the developer the functions that are called when the task is started and stopped along with updated. The custom task is defined in the taskBlinkLed.h tab.

BlinkUsingCustomTask

This demonstrates the use of the custom Task object feature of Task library. It will use a custom task to blink a LED repeatedly. This is intended for advanced level coders where the most control is required and knowledge of C++ is understood.

ButtonTask

This demonstrates the use of the custom Task object feature of Task library.
It will instance two custom ButtonTasks to monitor two different pins and make a call back when they change state; with de-bounce and auto repeat support.

This requires two momentary buttons attached to any io pins and ground. One button will turn on the onboard LED when it is pressed down, the other button turn off the onboard LED when it is released. Both will send useful information to the serial monitor.
The custom task is defined in the ButtonTask.h tab.

ButtonInterrupt

NOTE: Due to differences between how CPU architectures sleep, this example is aimed at AVR chipsets.

This demonstrates the use of the Sleep feature of the Task library.
It will instance two custom ButtonTasks to monitor two different pins and call back when they change state; with de-bounce and auto repeat support. An external interrupt is tied to the buttons to wake the Arduino up on any button press. There are two tasks implementing a LED Blink showing a "heartbeat" that can only run when awake. There is a task that will put the Arduino into a deep sleep 15 seconds after any button press.

This requires two momentary buttons attached any io pins and ground. This requires a diode per button be attached between the button pin and a single external interrupt pin. The cathode (black band) end of the diode is attached to the button pin; the anode to the interrupt pin.

MessageTask

This demonstrates the use of the message passing feature of Task library. It will instance two custom ButtonTasks to monitor two different pins and they will send messages when they change state. It will also have tasks that provide a heartbeat message.

This requires two momentary buttons attached between pins 4 & 5 and ground, you can change the pins to any digital pin

RotaryEncoder

This demonstrates creating a task to manage the details of rotary encoder. The task will track a value and increment and decrement it when the encoder is rotated. It will also provide a callback so the application can respond. Further, it provides a de-bounced button callback for the encoder press feature.

This requires a common rotary encoder be connected to available pins.

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
schlammbad edited this page Feb 21, 2024 · 5 revisions

Below are the descriptions of the included examples. You can find these in the Library menu item.

BlinkUsingTaskFunctions

This demonstrates the use of the FunctionTask feature of Task library. It will use tasks to blink an LED repeatedly without the use of delay(). In this example, tasks are declared at the top and are associated with a function that will be run when the task gets called to update. The tasks will continuously toggle their running state; starting the other, which will turn off and on the LED.

BlinkUsingTaskMacros

This demonstrates the use of the Task macros feature of Task library. It will use a custom task defined using the helper macros to blink an LED repeatedly. This is intended for intermediate level coders where more control is needed. This exposes to the developer the functions that are called when the task is started and stopped along with updated. The custom task is defined in the taskBlinkLed.h tab.

BlinkUsingCustomTask

This demonstrates the use of the custom Task object feature of Task library. It will use a custom task to blink a LED repeatedly. This is intended for advanced level coders where the most control is required and knowledge of C++ is understood.

ButtonTask

This demonstrates the use of the custom Task object feature of Task library.
It will instance two custom ButtonTasks to monitor two different pins and make a call back when they change state; with de-bounce and auto repeat support.

This requires two momentary buttons attached to any io pins and ground. One button will turn on the onboard LED when it is pressed down, the other button turn off the onboard LED when it is released. Both will send useful information to the serial monitor.
The custom task is defined in the ButtonTask.h tab.

ButtonInterrupt

NOTE: Due to differences between how CPU architectures sleep, this example is aimed at AVR chipsets.

This demonstrates the use of the Sleep feature of the Task library.
It will instance two custom ButtonTasks to monitor two different pins and call back when they change state; with de-bounce and auto repeat support. An external interrupt is tied to the buttons to wake the Arduino up on any button press. There are two tasks implementing a LED Blink showing a "heartbeat" that can only run when awake. There is a task that will put the Arduino into a deep sleep 15 seconds after any button press.

This requires two momentary buttons attached any io pins and ground. This requires a diode per button be attached between the button pin and a single external interrupt pin. The cathode (black band) end of the diode is attached to the button pin; the anode to the interrupt pin.

MessageTask

This demonstrates the use of the message passing feature of Task library. It will instance two custom ButtonTasks to monitor two different pins and they will send messages when they change state. It will also have tasks that provide a heartbeat message.

This requires two momentary buttons attached between pins 4 & 5 and ground, you can change the pins to any digital pin

RotaryEncoder

This demonstrates creating a task to manage the details of rotary encoder. The task will track a value and increment and decrement it when the encoder is rotated. It will also provide a callback so the application can respond. Further, it provides a de-bounced button callback for the encoder press feature.

This requires a common rotary encoder be connected to available pins.

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
schlammbad edited this page Feb 21, 2024 · 5 revisions

Below are the descriptions of the included examples. You can find these in the Library menu item.

BlinkUsingTaskFunctions

This demonstrates the use of the FunctionTask feature of Task library. It will use tasks to blink an LED repeatedly without the use of delay(). In this example, tasks are declared at the top and are associated with a function that will be run when the task gets called to update. The tasks will continuously toggle their running state; starting the other, which will turn off and on the LED.

BlinkUsingTaskMacros

This demonstrates the use of the Task macros feature of Task library. It will use a custom task defined using the helper macros to blink an LED repeatedly. This is intended for intermediate level coders where more control is needed. This exposes to the developer the functions that are called when the task is started and stopped along with updated. The custom task is defined in the taskBlinkLed.h tab.

BlinkUsingCustomTask

This demonstrates the use of the custom Task object feature of Task library. It will use a custom task to blink a LED repeatedly. This is intended for advanced level coders where the most control is required and knowledge of C++ is understood.

ButtonTask

This demonstrates the use of the custom Task object feature of Task library.
It will instance two custom ButtonTasks to monitor two different pins and make a call back when they change state; with de-bounce and auto repeat support.

This requires two momentary buttons attached to any io pins and ground. One button will turn on the onboard LED when it is pressed down, the other button turn off the onboard LED when it is released. Both will send useful information to the serial monitor.
The custom task is defined in the ButtonTask.h tab.

ButtonInterrupt

NOTE: Due to differences between how CPU architectures sleep, this example is aimed at AVR chipsets.

This demonstrates the use of the Sleep feature of the Task library.
It will instance two custom ButtonTasks to monitor two different pins and call back when they change state; with de-bounce and auto repeat support. An external interrupt is tied to the buttons to wake the Arduino up on any button press. There are two tasks implementing a LED Blink showing a "heartbeat" that can only run when awake. There is a task that will put the Arduino into a deep sleep 15 seconds after any button press.

This requires two momentary buttons attached any io pins and ground. This requires a diode per button be attached between the button pin and a single external interrupt pin. The cathode (black band) end of the diode is attached to the button pin; the anode to the interrupt pin.

MessageTask

This demonstrates the use of the message passing feature of Task library. It will instance two custom ButtonTasks to monitor two different pins and they will send messages when they change state. It will also have tasks that provide a heartbeat message.

This requires two momentary buttons attached between pins 4 & 5 and ground, you can change the pins to any digital pin

RotaryEncoder

This demonstrates creating a task to manage the details of rotary encoder. The task will track a value and increment and decrement it when the encoder is rotated. It will also provide a callback so the application can respond. Further, it provides a de-bounced button callback for the encoder press feature.

This requires a common rotary encoder be connected to available pins.

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
schlammbad edited this page Feb 21, 2024 · 5 revisions

Below are the descriptions of the included examples. You can find these in the Library menu item.

BlinkUsingTaskFunctions

This demonstrates the use of the FunctionTask feature of Task library. It will use tasks to blink an LED repeatedly without the use of delay(). In this example, tasks are declared at the top and are associated with a function that will be run when the task gets called to update. The tasks will continuously toggle their running state; starting the other, which will turn off and on the LED.

BlinkUsingTaskMacros

This demonstrates the use of the Task macros feature of Task library. It will use a custom task defined using the helper macros to blink an LED repeatedly. This is intended for intermediate level coders where more control is needed. This exposes to the developer the functions that are called when the task is started and stopped along with updated. The custom task is defined in the taskBlinkLed.h tab.

BlinkUsingCustomTask

This demonstrates the use of the custom Task object feature of Task library. It will use a custom task to blink a LED repeatedly. This is intended for advanced level coders where the most control is required and knowledge of C++ is understood.

ButtonTask

This demonstrates the use of the custom Task object feature of Task library.
It will instance two custom ButtonTasks to monitor two different pins and make a call back when they change state; with de-bounce and auto repeat support.

This requires two momentary buttons attached to any io pins and ground. One button will turn on the onboard LED when it is pressed down, the other button turn off the onboard LED when it is released. Both will send useful information to the serial monitor.
The custom task is defined in the ButtonTask.h tab.

ButtonInterrupt

NOTE: Due to differences between how CPU architectures sleep, this example is aimed at AVR chipsets.

This demonstrates the use of the Sleep feature of the Task library.
It will instance two custom ButtonTasks to monitor two different pins and call back when they change state; with de-bounce and auto repeat support. An external interrupt is tied to the buttons to wake the Arduino up on any button press. There are two tasks implementing a LED Blink showing a "heartbeat" that can only run when awake. There is a task that will put the Arduino into a deep sleep 15 seconds after any button press.

This requires two momentary buttons attached any io pins and ground. This requires a diode per button be attached between the button pin and a single external interrupt pin. The cathode (black band) end of the diode is attached to the button pin; the anode to the interrupt pin.

MessageTask

This demonstrates the use of the message passing feature of Task library. It will instance two custom ButtonTasks to monitor two different pins and they will send messages when they change state. It will also have tasks that provide a heartbeat message.

This requires two momentary buttons attached between pins 4 & 5 and ground, you can change the pins to any digital pin

RotaryEncoder

This demonstrates creating a task to manage the details of rotary encoder. The task will track a value and increment and decrement it when the encoder is rotated. It will also provide a callback so the application can respond. Further, it provides a de-bounced button callback for the encoder press feature.

This requires a common rotary encoder be connected to available pins.

Clone this wiki locally