<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Avni</title>
    <description>The latest articles on DEV Community by Avni (@avniemini).</description>
    <link>https://dev.to/avniemini</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3549984%2Fd43a300a-2f57-4367-94c5-b187378ace78.png</url>
      <title>DEV Community: Avni</title>
      <link>https://dev.to/avniemini</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/avniemini"/>
    <language>en</language>
    <item>
      <title>Rubber Ducky clone with Pro Micro micro controller</title>
      <dc:creator>Avni</dc:creator>
      <pubDate>Wed, 15 Oct 2025 15:18:14 +0000</pubDate>
      <link>https://dev.to/avniemini/rubber-ducky-clone-with-pro-micro-micro-controller-5352</link>
      <guid>https://dev.to/avniemini/rubber-ducky-clone-with-pro-micro-micro-controller-5352</guid>
      <description>&lt;h2&gt;
  
  
  ⚠️ Disclaimer
&lt;/h2&gt;

&lt;p&gt;This project is for &lt;strong&gt;educational purposes only&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
Devices like the Rubber Ducky and its DIY clones can be powerful tools for penetration testing and automation but they should only be strictly used on systems you &lt;strong&gt;own&lt;/strong&gt; or have &lt;strong&gt;explicit permission&lt;/strong&gt; to test.&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  The Idea
&lt;/h2&gt;

&lt;p&gt;The idea for this project came while watching a movie where the main character wanted to damage a bank that caused problems to his parents, so he went inside the bank pretending to be a British business man that wanted to create an account at their bank, he "accidentally" pushes the pen case to the ground so he can plug a tiny USB device in the computer. Once he does that the bankers monitor is blocked and you can see code being executed with lightning speeds. &lt;/p&gt;

&lt;p&gt;So I had to find out what that tiny USB device was that did all of this chaos. I researched a bit and it turned out to be a &lt;strong&gt;Rubber Ducky&lt;/strong&gt;, they were on sale but lets be real, when you are a student and on a budget you aren't going to spend  &lt;strong&gt;$100&lt;/strong&gt; on a USB that acts as a keyboard and mouse, you have to improvise.&lt;br&gt;
So I said lets try and do this myself with the resources I had.&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Pro Micro with 32u4 Chip&lt;/li&gt;
&lt;li&gt;Slide Switches (Pack of 40)&lt;/li&gt;
&lt;li&gt;DuPont female cables (Pack of 40)
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Total:&lt;/strong&gt; ~$30&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;The Process&lt;/strong&gt;
&lt;/h2&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;Wiring the switch&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;I first started with the switch. Out of the pack, I had two types of switches. One had big pins that didn't fit the DuPont cable, and the other one had small pins and holes for connecting wires. Naturally I went with the second one since I had no other choice. I took 1 DuPont cable and cut it in half with pliers and stripped about 1.5 cm of insulation covering the cable inside. Then I tied one half of the cable to the middle pin of the switch, and the other one to an outer pin.&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Schema:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fakgdghqklrjskvnwqy7p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fakgdghqklrjskvnwqy7p.png" alt=" " width="488" height="483"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;Why the switch?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Once the code has been uploaded to the Pro Micro, it cannot be plugged into your computer to change the code without causing the payload to be executed.&lt;/p&gt;

&lt;p&gt;So this switch acts like a &lt;strong&gt;mode selector:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Left:&lt;/strong&gt; Programming mode (safe to upload new code)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Right:&lt;/strong&gt; Execution mode (it runs the payload once plugged in)
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;Programming the board&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Now comes the fun part...programming!&lt;/p&gt;

&lt;p&gt;I used the &lt;strong&gt;Arduino IDE&lt;/strong&gt; to make the write and upload the code into the board.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The setup&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Tools -&amp;gt; Board -&amp;gt; Boards Manager&lt;/li&gt;
&lt;li&gt;Select "&lt;strong&gt;Arduino Leonardo&lt;/strong&gt;" (it uses the same bootloader as the Pro Micro)&lt;/li&gt;
&lt;li&gt;Choose your port and board&lt;/li&gt;
&lt;li&gt;Create a new sketch&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffgqgef8yq9858va1rva9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffgqgef8yq9858va1rva9.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is how it should look like when you first start your project.&lt;/p&gt;

&lt;p&gt;Now we are going to start by including the libraries.&lt;br&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;Keyboard.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;setup&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

    &lt;span class="c1"&gt;// put your setup code here, to run once:&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;



&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;loop&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

    &lt;span class="c1"&gt;// put your main code here, to run repeatedly&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We will include the &lt;strong&gt;Keyboard&lt;/strong&gt; library so the Pro Micro board can act as a Keyboard.&lt;br&gt;
Next we need to act logic to the switch.&lt;/p&gt;
&lt;h4&gt;
  
  
  &lt;strong&gt;Adding the mode switch logic&lt;/strong&gt;
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;Keyboard.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;switch_mode&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// You can change this depending on which pin you wired the middle pin of the switch&lt;/span&gt;

&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;setup&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

    &lt;span class="n"&gt;pinMode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;switch_mode&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;INPUT_PULLUP&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Normally HIGH, LOW when switch connect to GND (When we slide it to the left)&lt;/span&gt;

    &lt;span class="kt"&gt;bool&lt;/span&gt; &lt;span class="n"&gt;execute_mode&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;digitalRead&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;switch_mode&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;LOW&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;execute_mode&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
        &lt;span class="c1"&gt;// Off / Standby (Payload doesn't execute)&lt;/span&gt;
        &lt;span class="c1"&gt;// So it gives us the opportunity to change and upload new&lt;/span&gt;
        &lt;span class="c1"&gt;// code to the board&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="c1"&gt;// if it's on the other side then we will execute code down here&lt;/span&gt;



&lt;span class="p"&gt;}&lt;/span&gt;



&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;loop&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

    &lt;span class="c1"&gt;// put your main code here, to run repeatedly:&lt;/span&gt;



&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Now the board can tell weather to execute the payload or to stay idle based on where the switch is staying.&lt;/p&gt;
&lt;h4&gt;
  
  
  &lt;strong&gt;Writing the payload&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Here's a more complete version that opens the terminal(on Linux) and executes &lt;code&gt;whoami&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;Keyboard.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="kt"&gt;uint8_t&lt;/span&gt; &lt;span class="n"&gt;switch_mode&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// D2 (switch middle)&lt;/span&gt;
&lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="kt"&gt;unsigned&lt;/span&gt; &lt;span class="kt"&gt;long&lt;/span&gt; &lt;span class="n"&gt;WAIT_SHORT&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;300&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// short pause&lt;/span&gt;
&lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="kt"&gt;unsigned&lt;/span&gt; &lt;span class="kt"&gt;long&lt;/span&gt; &lt;span class="n"&gt;WAIT_MED&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;550&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// medium pause&lt;/span&gt;

&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;attempt_open_terminal&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;Keyboard&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;press&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;KEY_LEFT_CTRL&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;Keyboard&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;press&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;KEY_LEFT_ALT&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;delay&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;Keyboard&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sc"&gt;'t'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;Keyboard&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;releaseAll&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;send_payload&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;delay&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;WAIT_MED&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="n"&gt;Keyboard&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;begin&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="n"&gt;delay&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;Keyboard&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"whoami"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="n"&gt;delay&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;Keyboard&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;end&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;



&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;setup&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;pinMode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;switch_mode&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;INPUT_PULLUP&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
    &lt;span class="c1"&gt;// HIGH normally, LOW when switch connects to GND&lt;/span&gt;

    &lt;span class="n"&gt;delay&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="kt"&gt;bool&lt;/span&gt; &lt;span class="n"&gt;executeMode&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;digitalRead&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;switch_mode&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;LOW&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;executeMode&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// Off / Standby (Payload doesn't execute)&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="n"&gt;delay&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// give OS/USB time to detect the HID device&lt;/span&gt;
    &lt;span class="n"&gt;attempt_open_terminal&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="n"&gt;send_payload&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;loop&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="c1"&gt;// nothing repeated&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  &lt;strong&gt;Breaking it down&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;We added the &lt;code&gt;attempt_open_terminal&lt;/code&gt; and &lt;code&gt;send_payload_commands&lt;/code&gt; functions. Lets go through each one of them and see what they do.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;attempt_open_terminal()&lt;/strong&gt;
This function simulates pressing &lt;strong&gt;CTRL + ALT + T&lt;/strong&gt;, the linux shortcut to open the terminal.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It uses the &lt;strong&gt;Keyboard&lt;/strong&gt; library to press multiple keys at once (&lt;strong&gt;CTRL + ALT  + T&lt;/strong&gt;) and then release them, just like a real user would do.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;send_payload()&lt;/strong&gt;
Once the terminal opens, this function executese the payload.
Here, it simply types &lt;code&gt;whoami&lt;/code&gt;, which prints the currently logged-in user.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can replace that line with any other commands, like opening websites, or running system commands (ethically, of course).&lt;/p&gt;

&lt;h2&gt;
  
  
  Reference
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.arduino.cc/language-reference/en/functions/usb/Keyboard/keyboardModifiers/#international-keyboard-layouts" rel="noopener noreferrer"&gt;https://docs.arduino.cc/language-reference/en/functions/usb/Keyboard/keyboardModifiers/#international-keyboard-layouts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.arduino.cc/learn/microcontrollers/digital-pins/" rel="noopener noreferrer"&gt;https://docs.arduino.cc/learn/microcontrollers/digital-pins/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>programming</category>
      <category>cybersecurity</category>
      <category>c</category>
      <category>iot</category>
    </item>
  </channel>
</rss>
