1 In the
\emph{Arduino
} ecosystem, shields are available to plug into the
2 microcontroller and add functionality. These shields range from Bluetooth,
3 WiFi, Ethernet, LoRa, LCD screens and much more. Often the functionality
4 available in these shields is housed in a
\gls{C++
} class. This functionality
5 is ported using little work to
\gls{mTask
} by just creating a corresponding
6 class with the same functions. As an example, Listing~
\ref{lst:lcd
} shows parts
7 of the
\gls{LCD
} class as an
\gls{mTask
} class functions and as
8 Listing~
\ref{lst:lcdc
} shown the corresponding
\emph{Arduino
} class functions.
10 \begin{lstlisting
}[label=
{lst:lcd
},
%
11 caption=
{Adding the
\gls{LCD
} to the
\gls{mTask
} language
}]
15 begin :: (v LCD Expr) (v Int p) (v Int q) -> v () Expr
16 LCD :: Int Int
[DigitalPin
] ((v LCD Expr) -> Main (v b q)) -> Main (v b q)
18 scrollLeft :: (v LCD Expr) -> v () Expr
19 scrollRight :: (v LCD Expr) -> v () Expr
23 \begin{lstlisting
}[language=C++,label=
{lst:lcdc
},
%
24 caption=
{Functions from the
\gls{Arduino
} \gls{LCD
} library
}]
27 void begin(uint8_t cols, uint8_t rows);
29 void scrollDisplayLeft();
30 void scrollDisplayRight();