Get properly started on writing manual

This commit is contained in:
redfast00 2022-02-01 08:00:20 +01:00
parent d63fc4055a
commit e7eea065bf
No known key found for this signature in database
GPG key ID: 5946E0E34FD0553C
14 changed files with 1064 additions and 19 deletions

View file

@ -1,12 +1,28 @@
import glob
import os
from pathlib import PurePath
import sys
# https://tex.stackexchange.com/questions/101717/converting-markdown-to-latex-in-latex/246871#246871
remove_testmodules = True
if len(sys.argv) >= 2:
remove_testmodules = False
outfilename = '/tmp/out.md'
with open(outfilename, 'w') as outfile:
for filepath in glob.iglob('../src/modules/*/doc/index.md'):
all_modules = sorted(glob.glob('../src/modules/*/doc/index.md'))
if remove_testmodules:
all_modules = [p for p in all_modules if 'testmodule_' not in p]
without_info = [p for p in all_modules if "info_" not in p]
only_info = [p for p in all_modules if "info_" in p]
for filepath in without_info:
with open(filepath) as infile:
outfile.write(infile.read())
outfile.write("\n\\newpage{}\n")
os.system(f"pandoc --from=markdown --output=docs.pdf {outfilename} --highlight-style=espresso")
outfile.write("\n\\part{Appendix}\\newpage\n")
for filepath in only_info:
with open(filepath) as infile:
outfile.write(infile.read())
outfile.write("\n\\newpage{}\n")
os.system(f"pandoc --from=markdown --template=template.tex --output=docs.pdf prefix.yaml {outfilename} --highlight-style=espresso")

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

11
docs/prefix.yaml Normal file
View file

@ -0,0 +1,11 @@
---
title: OBUS handleiding
author: Zeus WPI
papersize: a4
documentclass: scrartcl
geometry: "left=2cm,right=2cm,top=2cm,bottom=3cm"
fontsize: 14pt
---
\graphicspath{ {./images/} }
\newpage{}

552
docs/template.tex Normal file
View file

@ -0,0 +1,552 @@
% Options for packages loaded elsewhere
\PassOptionsToPackage{unicode$for(hyperrefoptions)$,$hyperrefoptions$$endfor$}{hyperref}
\PassOptionsToPackage{hyphens}{url}
$if(colorlinks)$
\PassOptionsToPackage{dvipsnames,svgnames,x11names}{xcolor}
$endif$
$if(dir)$
$if(latex-dir-rtl)$
\PassOptionsToPackage{RTLdocument}{bidi}
$endif$
$endif$
$if(CJKmainfont)$
\PassOptionsToPackage{space}{xeCJK}
$endif$
%
\documentclass[
$if(fontsize)$
$fontsize$,
$endif$
$if(lang)$
$babel-lang$,
$endif$
$if(papersize)$
$papersize$paper,
$endif$
$if(beamer)$
ignorenonframetext,
$if(handout)$
handout,
$endif$
$if(aspectratio)$
aspectratio=$aspectratio$,
$endif$
$endif$
$for(classoption)$
$classoption$$sep$,
$endfor$
]{$documentclass$}
$if(beamer)$
$if(background-image)$
\usebackgroundtemplate{%
\includegraphics[width=\paperwidth]{$background-image$}%
}
$endif$
\usepackage{pgfpages}
\setbeamertemplate{caption}[numbered]
\setbeamertemplate{caption label separator}{: }
\setbeamercolor{caption name}{fg=normal text.fg}
\beamertemplatenavigationsymbols$if(navigation)$$navigation$$else$empty$endif$
$for(beameroption)$
\setbeameroption{$beameroption$}
$endfor$
% Prevent slide breaks in the middle of a paragraph
\widowpenalties 1 10000
\raggedbottom
$if(section-titles)$
\setbeamertemplate{part page}{
\centering
\begin{beamercolorbox}[sep=16pt,center]{part title}
\usebeamerfont{part title}\insertpart\par
\end{beamercolorbox}
}
\setbeamertemplate{section page}{
\centering
\begin{beamercolorbox}[sep=12pt,center]{part title}
\usebeamerfont{section title}\insertsection\par
\end{beamercolorbox}
}
\setbeamertemplate{subsection page}{
\centering
\begin{beamercolorbox}[sep=8pt,center]{part title}
\usebeamerfont{subsection title}\insertsubsection\par
\end{beamercolorbox}
}
\AtBeginPart{
\frame{\partpage}
}
\AtBeginSection{
\ifbibliography
\else
\frame{\sectionpage}
\fi
}
\AtBeginSubsection{
\frame{\subsectionpage}
}
$endif$
$endif$
$if(beamerarticle)$
\usepackage{beamerarticle} % needs to be loaded first
$endif$
\usepackage{amsmath,amssymb}
$if(fontfamily)$
\usepackage[$for(fontfamilyoptions)$$fontfamilyoptions$$sep$,$endfor$]{$fontfamily$}
$else$
\usepackage{lmodern}
$endif$
$if(linestretch)$
\usepackage{setspace}
$endif$
\usepackage{iftex}
\ifPDFTeX
\usepackage[$if(fontenc)$$fontenc$$else$T1$endif$]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{textcomp} % provide euro and other symbols
\else % if luatex or xetex
$if(mathspec)$
\ifXeTeX
\usepackage{mathspec}
\else
\usepackage{unicode-math}
\fi
$else$
\usepackage{unicode-math}
$endif$
\defaultfontfeatures{Scale=MatchLowercase}
\defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1}
$if(mainfont)$
\setmainfont[$for(mainfontoptions)$$mainfontoptions$$sep$,$endfor$]{$mainfont$}
$endif$
$if(sansfont)$
\setsansfont[$for(sansfontoptions)$$sansfontoptions$$sep$,$endfor$]{$sansfont$}
$endif$
$if(monofont)$
\setmonofont[$for(monofontoptions)$$monofontoptions$$sep$,$endfor$]{$monofont$}
$endif$
$for(fontfamilies)$
\newfontfamily{$fontfamilies.name$}[$for(fontfamilies.options)$$fontfamilies.options$$sep$,$endfor$]{$fontfamilies.font$}
$endfor$
$if(mathfont)$
$if(mathspec)$
\ifXeTeX
\setmathfont(Digits,Latin,Greek)[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$}
\else
\setmathfont[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$}
\fi
$else$
\setmathfont[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$}
$endif$
$endif$
$if(CJKmainfont)$
\ifXeTeX
\usepackage{xeCJK}
\setCJKmainfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmainfont$}
\fi
$endif$
$if(luatexjapresetoptions)$
\ifLuaTeX
\usepackage[$for(luatexjapresetoptions)$$luatexjapresetoptions$$sep$,$endfor$]{luatexja-preset}
\fi
$endif$
$if(CJKmainfont)$
\ifLuaTeX
\usepackage[$for(luatexjafontspecoptions)$$luatexjafontspecoptions$$sep$,$endfor$]{luatexja-fontspec}
\setmainjfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmainfont$}
\fi
$endif$
\fi
$if(zero-width-non-joiner)$
%% Support for zero-width non-joiner characters.
\makeatletter
\def\zerowidthnonjoiner{%
% Prevent ligatures and adjust kerning, but still support hyphenating.
\texorpdfstring{%
\textormath{\nobreak\discretionary{-}{}{\kern.03em}%
\ifvmode\else\nobreak\hskip\z@skip\fi}{}%
}{}%
}
\makeatother
\ifPDFTeX
\DeclareUnicodeCharacter{200C}{\zerowidthnonjoiner}
\else
\catcode`^^^^200c=\active
\protected\def ^^^^200c{\zerowidthnonjoiner}
\fi
%% End of ZWNJ support
$endif$
$if(beamer)$
$if(theme)$
\usetheme[$for(themeoptions)$$themeoptions$$sep$,$endfor$]{$theme$}
$endif$
$if(colortheme)$
\usecolortheme{$colortheme$}
$endif$
$if(fonttheme)$
\usefonttheme{$fonttheme$}
$endif$
$if(mainfont)$
\usefonttheme{serif} % use mainfont rather than sansfont for slide text
$endif$
$if(innertheme)$
\useinnertheme{$innertheme$}
$endif$
$if(outertheme)$
\useoutertheme{$outertheme$}
$endif$
$endif$
% Use upquote if available, for straight quotes in verbatim environments
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
\IfFileExists{microtype.sty}{% use microtype if available
\usepackage[$for(microtypeoptions)$$microtypeoptions$$sep$,$endfor$]{microtype}
\UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
}{}
$if(indent)$
$else$
\makeatletter
\@ifundefined{KOMAClassName}{% if non-KOMA class
\IfFileExists{parskip.sty}{%
\usepackage{parskip}
}{% else
\setlength{\parindent}{0pt}
\setlength{\parskip}{6pt plus 2pt minus 1pt}}
}{% if KOMA class
\KOMAoptions{parskip=half}}
\makeatother
$endif$
$if(verbatim-in-note)$
\usepackage{fancyvrb}
$endif$
\usepackage{xcolor}
\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available
\IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}}
\hypersetup{
$if(title-meta)$
pdftitle={$title-meta$},
$endif$
$if(author-meta)$
pdfauthor={$author-meta$},
$endif$
$if(lang)$
pdflang={$lang$},
$endif$
$if(subject)$
pdfsubject={$subject$},
$endif$
$if(keywords)$
pdfkeywords={$for(keywords)$$keywords$$sep$, $endfor$},
$endif$
$if(colorlinks)$
colorlinks=true,
linkcolor={$if(linkcolor)$$linkcolor$$else$Maroon$endif$},
filecolor={$if(filecolor)$$filecolor$$else$Maroon$endif$},
citecolor={$if(citecolor)$$citecolor$$else$Blue$endif$},
urlcolor={$if(urlcolor)$$urlcolor$$else$Blue$endif$},
$else$
hidelinks,
$endif$
pdfcreator={LaTeX via pandoc}}
\urlstyle{same} % disable monospaced font for URLs
$if(verbatim-in-note)$
\VerbatimFootnotes % allow verbatim text in footnotes
$endif$
$if(geometry)$
$if(beamer)$
\geometry{$for(geometry)$$geometry$$sep$,$endfor$}
$else$
\usepackage[$for(geometry)$$geometry$$sep$,$endfor$]{geometry}
$endif$
$endif$
$if(beamer)$
\newif\ifbibliography
$endif$
$if(listings)$
\usepackage{listings}
\newcommand{\passthrough}[1]{#1}
\lstset{defaultdialect=[5.3]Lua}
\lstset{defaultdialect=[x86masm]Assembler}
$endif$
$if(lhs)$
\lstnewenvironment{code}{\lstset{language=Haskell,basicstyle=\small\ttfamily}}{}
$endif$
$if(highlighting-macros)$
$highlighting-macros$
$endif$
$if(tables)$
\usepackage{longtable,booktabs,array}
$if(multirow)$
\usepackage{multirow}
$endif$
\usepackage{calc} % for calculating minipage widths
$if(beamer)$
\usepackage{caption}
% Make caption package work with longtable
\makeatletter
\def\fnum@table{\tablename~\thetable}
\makeatother
$else$
% Correct order of tables after \paragraph or \subparagraph
\usepackage{etoolbox}
\makeatletter
\patchcmd\longtable{\par}{\if@noskipsec\mbox{}\fi\par}{}{}
\makeatother
% Allow footnotes in longtable head/foot
\IfFileExists{footnotehyper.sty}{\usepackage{footnotehyper}}{\usepackage{footnote}}
\makesavenoteenv{longtable}
$endif$
$endif$
\usepackage{graphicx}
\makeatletter
\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi}
\def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi}
\makeatother
% Scale images if necessary, so that they will not overflow the page
% margins by default, and it is still possible to overwrite the defaults
% using explicit options in \includegraphics[width, height, ...]{}
\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio}
% Set default figure placement to htbp
\makeatletter
\def\fps@figure{htbp}
\makeatother
$if(links-as-notes)$
% Make links footnotes instead of hotlinks:
\DeclareRobustCommand{\href}[2]{#2\footnote{\url{#1}}}
$endif$
$if(strikeout)$
$-- also used for underline
\usepackage[normalem]{ulem}
% Avoid problems with \sout in headers with hyperref
\pdfstringdefDisableCommands{\renewcommand{\sout}{}}
$endif$
\setlength{\emergencystretch}{3em} % prevent overfull lines
\providecommand{\tightlist}{%
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
$if(numbersections)$
\setcounter{secnumdepth}{$if(secnumdepth)$$secnumdepth$$else$5$endif$}
$else$
\setcounter{secnumdepth}{-\maxdimen} % remove section numbering
$endif$
$if(beamer)$
$else$
$if(block-headings)$
% Make \paragraph and \subparagraph free-standing
\ifx\paragraph\undefined\else
\let\oldparagraph\paragraph
\renewcommand{\paragraph}[1]{\oldparagraph{#1}\mbox{}}
\fi
\ifx\subparagraph\undefined\else
\let\oldsubparagraph\subparagraph
\renewcommand{\subparagraph}[1]{\oldsubparagraph{#1}\mbox{}}
\fi
$endif$
$endif$
$if(pagestyle)$
\pagestyle{$pagestyle$}
$endif$
$if(csl-refs)$
\newlength{\cslhangindent}
\setlength{\cslhangindent}{1.5em}
\newlength{\csllabelwidth}
\setlength{\csllabelwidth}{3em}
\newlength{\cslentryspacingunit} % times entry-spacing
\setlength{\cslentryspacingunit}{\parskip}
\newenvironment{CSLReferences}[2] % #1 hanging-ident, #2 entry spacing
{% don't indent paragraphs
\setlength{\parindent}{0pt}
% turn on hanging indent if param 1 is 1
\ifodd #1
\let\oldpar\par
\def\par{\hangindent=\cslhangindent\oldpar}
\fi
% set entry spacing
\setlength{\parskip}{#2\cslentryspacingunit}
}%
{}
\usepackage{calc}
\newcommand{\CSLBlock}[1]{#1\hfill\break}
\newcommand{\CSLLeftMargin}[1]{\parbox[t]{\csllabelwidth}{#1}}
\newcommand{\CSLRightInline}[1]{\parbox[t]{\linewidth - \csllabelwidth}{#1}\break}
\newcommand{\CSLIndent}[1]{\hspace{\cslhangindent}#1}
$endif$
$for(header-includes)$
$header-includes$
$endfor$
$if(lang)$
\ifXeTeX
% Load polyglossia as late as possible: uses bidi with RTL langages (e.g. Hebrew, Arabic)
\usepackage{polyglossia}
\setmainlanguage[$for(polyglossia-lang.options)$$polyglossia-lang.options$$sep$,$endfor$]{$polyglossia-lang.name$}
$for(polyglossia-otherlangs)$
\setotherlanguage[$for(polyglossia-otherlangs.options)$$polyglossia-otherlangs.options$$sep$,$endfor$]{$polyglossia-otherlangs.name$}
$endfor$
\else
\usepackage[$for(babel-otherlangs)$$babel-otherlangs$,$endfor$main=$babel-lang$]{babel}
% get rid of language-specific shorthands (see #6817):
\let\LanguageShortHands\languageshorthands
\def\languageshorthands#1{}
$if(babel-newcommands)$
$babel-newcommands$
$endif$
\fi
$endif$
\ifLuaTeX
\usepackage{selnolig} % disable illegal ligatures
\fi
$if(dir)$
\ifXeTeX
% Load bidi as late as possible as it modifies e.g. graphicx
\usepackage{bidi}
\fi
\ifPDFTeX
\TeXXeTstate=1
\newcommand{\RL}[1]{\beginR #1\endR}
\newcommand{\LR}[1]{\beginL #1\endL}
\newenvironment{RTL}{\beginR}{\endR}
\newenvironment{LTR}{\beginL}{\endL}
\fi
$endif$
$if(natbib)$
\usepackage[$natbiboptions$]{natbib}
\bibliographystyle{$if(biblio-style)$$biblio-style$$else$plainnat$endif$}
$endif$
$if(biblatex)$
\usepackage[$if(biblio-style)$style=$biblio-style$,$endif$$for(biblatexoptions)$$biblatexoptions$$sep$,$endfor$]{biblatex}
$for(bibliography)$
\addbibresource{$bibliography$}
$endfor$
$endif$
$if(nocite-ids)$
\nocite{$for(nocite-ids)$$it$$sep$, $endfor$}
$endif$
$if(csquotes)$
\usepackage{csquotes}
$endif$
$if(title)$
\title{$title$$if(thanks)$\thanks{$thanks$}$endif$}
$endif$
$if(subtitle)$
$if(beamer)$
$else$
\usepackage{etoolbox}
\makeatletter
\providecommand{\subtitle}[1]{% add subtitle to \maketitle
\apptocmd{\@title}{\par {\large #1 \par}}{}{}
}
\makeatother
$endif$
\subtitle{$subtitle$}
$endif$
\author{$for(author)$$author$$sep$ \and $endfor$}
\date{$date$}
$if(beamer)$
$if(institute)$
\institute{$for(institute)$$institute$$sep$ \and $endfor$}
$endif$
$if(titlegraphic)$
\titlegraphic{\includegraphics{$titlegraphic$}}
$endif$
$if(logo)$
\logo{\includegraphics{$logo$}}
$endif$
$endif$
\usepackage{wrapfig}
\begin{document}
$if(has-frontmatter)$
\frontmatter
$endif$
$if(title)$
$if(beamer)$
\frame{\titlepage}
$else$
\maketitle
$endif$
$if(abstract)$
\begin{abstract}
$abstract$
\end{abstract}
$endif$
$endif$
$for(include-before)$
$include-before$
$endfor$
$if(toc)$
$if(toc-title)$
\renewcommand*\contentsname{$toc-title$}
$endif$
$if(beamer)$
\begin{frame}[allowframebreaks]
$if(toc-title)$
\frametitle{$toc-title$}
$endif$
\tableofcontents[hideallsubsections]
\end{frame}
$else$
{
$if(colorlinks)$
\hypersetup{linkcolor=$if(toccolor)$$toccolor$$else$$endif$}
$endif$
\setcounter{tocdepth}{$toc-depth$}
\tableofcontents
}
$endif$
$endif$
$if(lof)$
\listoffigures
$endif$
$if(lot)$
\listoftables
$endif$
$if(linestretch)$
\setstretch{$linestretch$}
$endif$
$if(has-frontmatter)$
\mainmatter
$endif$
$body$
$if(has-frontmatter)$
\backmatter
$endif$
$if(natbib)$
$if(bibliography)$
$if(biblio-title)$
$if(has-chapters)$
\renewcommand\bibname{$biblio-title$}
$else$
\renewcommand\refname{$biblio-title$}
$endif$
$endif$
$if(beamer)$
\begin{frame}[allowframebreaks]{$biblio-title$}
\bibliographytrue
$endif$
\bibliography{$for(bibliography)$$bibliography$$sep$,$endfor$}
$if(beamer)$
\end{frame}
$endif$
$endif$
$endif$
$if(biblatex)$
$if(beamer)$
\begin{frame}[allowframebreaks]{$biblio-title$}
\bibliographytrue
\printbibliography[heading=none]
\end{frame}
$else$
\printbibliography$if(biblio-title)$[title=$biblio-title$]$endif$
$endif$
$endif$
$for(include-after)$
$include-after$
$endfor$
\end{document}

View file

@ -183,6 +183,12 @@ pre {
</tr>
</thead>
<tbody>
<tr id="puzzle-0">
<td class="mod-id">0</td>
<td class="issuee">Zeus WPI</td>
<td class="mod-nm">Doolhof</td>
<td class="remark"></td>
</tr>
<tr id="puzzle-255">
<td class="mod-id">255</td>
<td class="issuee"><span class="keyword">private use</span></td>

View file

@ -1,8 +1,4 @@
## Serial number
# Appendix A: Serienummer
This module provides a serial number for other modules to use. It consists of
7 random letters/digits that are shown on a LCD display. The serial number has
at least one digit and one letter.
### Credits
Module developed by redfast00.
Het serienummer bestaat uit 7 willekeurige letters/cijfers, en bevat ten minste
één cijfer en één letter. Het wordt op een LCD-scherm getoond.

View file

@ -1,6 +1,3 @@
## Testmodule needy buttons
# Testmodule needy buttons
If the module starts making a sound, press the button.
### Credits
Module developed by redfast00.
Als de module geluid maakt, druk op de knop.

1
src/modules/puzzle_maze/3d/.gitignore vendored Normal file
View file

@ -0,0 +1 @@
*.stl

View file

@ -0,0 +1,117 @@
led_display_size=32;
led_display_total_size=50;
border_clearance = 10;
front_panel_thickness=2;
button_size=12;
button_clearance=1.5;
cut=50;
button_under_size=button_size+3;
button_under_thickness=2;
container_wall_thickness=1;
$fn=50;
front_panel_height=border_clearance + led_display_size + 3 * button_under_size + 4 + border_clearance/4;
front_panel_width=border_clearance + led_display_size + border_clearance;
module ccube(size = [1,1,1], center = false)
{
sz = (len(size) == 3)?size:[size,size,size];
if (len(center) == 1)
cube(size, center);
else
translate([center[0]?-sz[0]/2:0,center[1]?-sz[1]/2:0,center[2]?-sz[2]/2:0])
cube(size);
}
module button() {
color([1, 0.5, 0]) difference() {
union() {
translate([0, 0, -front_panel_thickness]) cylinder(d=button_size, h=front_panel_thickness+button_under_thickness, $fn=3);
translate([0, 0, -front_panel_thickness]) cylinder(d=button_under_size, h=button_under_thickness, $fn=3);
}
translate([0, 0, -front_panel_thickness -0.2]) cylinder(d=3.55, h=1);
}
}
module front_panel() {
difference() {
union() {
ccube([front_panel_height, front_panel_width, front_panel_thickness], center=[0, 1, 0]);
translate([0, 0, -4]) {
translate([container_wall_thickness, -front_panel_width/2 + container_wall_thickness]) cube(5);
translate([container_wall_thickness, front_panel_width/2 - container_wall_thickness - 5]) cube(5);
translate([front_panel_height-container_wall_thickness-5, -front_panel_width/2 + container_wall_thickness]) cube(5);
translate([front_panel_height-container_wall_thickness-5, front_panel_width/2 - container_wall_thickness - 5]) cube(5);
}
}
translate([0, 0, -1]) union() {
translate([border_clearance, 0, 0]) ccube([led_display_size, led_display_size, cut], center=[0, 1, 0]);
%translate([border_clearance, 0, -12.6+1+front_panel_thickness]) ccube([50, led_display_size, 12.6], center=[0, 1, 0]);
up_button_trans=border_clearance+led_display_total_size+button_under_size/2+1;
// Up button
translate([up_button_trans, 0]) rotate([0, 0, 180]) {
translate([0, 0, 1]) %button();
cylinder(d=button_size+button_clearance, h=cut ,$fn=3);
}
// Down button
translate([up_button_trans+(button_size+button_clearance), 0]) rotate([0, 0, 0]) {
translate([0, 0, 1]) %button();
cylinder(d=button_size+button_clearance, h=cut ,$fn=3);
}
// Right button
translate([up_button_trans+(button_size+button_clearance)/2, button_size]) rotate([0, 0, 90]) {
translate([0, 0, 1]) %button();
cylinder(d=button_size+button_clearance, h=cut ,$fn=3);
}
// Left button
translate([up_button_trans+(button_size+button_clearance)/2, -button_size]) rotate([0, 0, -90]) {
translate([0, 0, 1]) %button();
cylinder(d=button_size+button_clearance, h=cut ,$fn=3);
}
}
}
}
button_height=5;
module back_panel() {
difference() {
union() {
ccube([front_panel_height, front_panel_width, 13+container_wall_thickness], center=[0, 1, 0]);
}
union() {
translate([container_wall_thickness, 0, container_wall_thickness]) ccube([front_panel_height-2*container_wall_thickness, front_panel_width-2*container_wall_thickness, cut], center=[0, 1, 0]);
translate([0, 0, -1]) {
translate([container_wall_thickness, -front_panel_width/2 + container_wall_thickness]) cube(5);
translate([container_wall_thickness, front_panel_width/2 - container_wall_thickness - 5]) cube(5);
translate([front_panel_height-container_wall_thickness-5, -front_panel_width/2 + container_wall_thickness]) cube(5);
translate([front_panel_height-container_wall_thickness-5, front_panel_width/2 - container_wall_thickness - 5]) cube(5);
}
translate([border_clearance+led_display_total_size, 0, -1]) cylinder(d=10, h=cut);
}
}
up_button_trans=border_clearance+led_display_total_size+button_under_size/2+1;
button_bottom_size=6;
pillar_height=13+container_wall_thickness - button_height - button_under_thickness;
// Up button
translate([up_button_trans, 0]) rotate([0, 0, 180+45]) {
cylinder(d=button_bottom_size, h=pillar_height, $fn=4);
}
// Down button
translate([up_button_trans+(button_size+button_clearance), 0]) rotate([0, 0, 45]) {
cylinder(d=button_bottom_size, h=pillar_height, $fn=4);
}
// Right button
translate([up_button_trans+(button_size+button_clearance)/2, button_size]) rotate([0, 0, 90+45]) {
cylinder(d=button_bottom_size, h=pillar_height, $fn=4);
}
// Left button
translate([up_button_trans+(button_size+button_clearance)/2, -button_size]) rotate([0, 0, -90+45]) {
cylinder(d=button_bottom_size, h=pillar_height, $fn=4);
}
}
// front_panel();
// button();
translate([0, 0, -13-container_wall_thickness]) back_panel();

View file

@ -0,0 +1,20 @@
# Doolhof
\begin{figure}[!b]
\centering
\includegraphics[width=24cm,height=5cm,keepaspectratio]{./puzzle_maze/description.png}
\end{figure}
- Zoek het juiste doolhof en oriëntatie van dit doolhof aan de hand van de cirkelvormige markeringen op de rand van de doolhofkaarten
- Het knipperend licht in het doolhof is de bestemming, het licht dat blijft branden
is je karakter. Navigeer je karakter naar de bestemming met de gele knoppen, zonder
dat die door de muren van het doolhof gaat. Let wel, de ontmijner kan de muren niet zien!
## Doolhofkaarten
\begin{center}
\includegraphics[width=10cm, height=10cm,keepaspectratio]{./puzzle_maze/maze.png}
\end{center}

View file

@ -0,0 +1,309 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg5" width="210mm" height="297mm" version="1.1" viewBox="0 0 210 297" xmlns="http://www.w3.org/2000/svg">
<g id="layer1">
<path id="path2299-0" d="m48 100v4z" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2303-4" d="m48 116v4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2299-3-8" d="m48 104v4z" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2299-6-71" d="m48 112v4z" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2299-7-7" d="m48 108v4z" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2299-3-5-2" d="m52 104v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-6-6-2" d="m52 112v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-7-2-6" d="m52 108v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-3-2-6" d="m56 104v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-93-9" d="m60 100v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2303-6-4" d="m60 116v4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-7-6-9" d="m60 108v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-6-9-1" d="m64 112v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-2-5" d="m68 100v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2303-37-9" d="m68 116v4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-7-28-6" d="m68 108v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-97-7" d="m72 100v4z" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2303-36-3" d="m72 116v4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2299-3-1-6" d="m72 104v4z" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2299-6-29-5" d="m72 112v4z" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2299-7-3-6" d="m72 108v4z" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2303-19-9" d="m48 120v4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2303-19-7-4" d="m56 120v4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2303-19-8-8" d="m60 120v4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2303-19-0-2" d="m64 120v4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2303-19-3-9" d="m72 120v4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-6-39" d="m48 124h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-1-0" d="m52 124h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-0-8" d="m56 124h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-63-85" d="m60 124h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-2-0" d="m64 124h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-06-9" d="m68 124h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-0-5-8" d="m56 116h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-06-6-1" d="m68 116h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-1-6-5" d="m52 120h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-63-3-8" d="m60 120h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-0-6-7" d="m56 108h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-63-8-6" d="m60 108h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-06-4-1" d="m68 108h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-6-3-7" d="m48 104h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-0-4-9" d="m56 104h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-63-9-6" d="m60 104h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-6-8-7" d="m48 100h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-1-9-8" d="m52 100h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-0-2-5" d="m56 100h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-63-6-7" d="m60 100h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-2-6-4" d="m64 100h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-06-49-1" d="m68 100h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-0-7-3-8" d="m52 112h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-63-44-0" d="m64 112h4" fill="none" stroke="#000" stroke-width=".2"/>
<rect id="rect31-3-7" x="143.5" y="23.5" width="33" height="33" fill="none" stroke="#000" stroke-linecap="round"/>
<path id="path2299" d="m148 28v4z" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2303" d="m148 44v4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2299-3" d="m148 32v4z" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2299-6" d="m148 40v4z" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2299-7" d="m148 36v4z" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2299-5" d="m152 28v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2303-3" d="m152 44v4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-3-5" d="m152 32v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-6-6" d="m152 40v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-7-2" d="m152 36v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-9" d="m156 28v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2303-1" d="m156 44v4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-3-2" d="m156 32v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-6-7" d="m156 40v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-7-0" d="m156 36v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-93" d="m160 28v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2303-6" d="m160 44v4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-3-0" d="m160 32v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-6-62" d="m160 40v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-7-6" d="m160 36v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-1" d="m164 28v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2303-8" d="m164 44v4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-3-7" d="m164 32v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-6-9" d="m164 40v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-7-20" d="m164 36v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-2" d="m168 28v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2303-37" d="m168 44v4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-3-59" d="m168 32v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-6-2" d="m168 40v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-7-28" d="m168 36v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-97" d="m172 28v4z" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2303-36" d="m172 44v4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2299-3-1" d="m172 32v4z" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2299-6-29" d="m172 40v4z" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2299-7-3" d="m172 36v4z" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2303-19-4" d="m152 48v4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2303-19" d="m148 48v4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2303-19-7" d="m156 48v4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2303-19-8" d="m160 48v4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2303-19-45" d="m168 48v4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2303-19-0" d="m164 48v4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2303-19-3" d="m172 48v4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-6" d="m148 52h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-1" d="m152 52h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-0" d="m156 52h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-63" d="m160 52h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-2" d="m164 52h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-06" d="m168 52h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-6-1" d="m148 44h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-1-5" d="m152 44h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-0-5" d="m156 44h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-63-4" d="m160 44h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-2-7" d="m164 44h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-06-6" d="m168 44h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-6-5" d="m148 48h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-1-6" d="m152 48h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-0-9" d="m156 48h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-63-3" d="m160 48h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-2-74" d="m164 48h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-06-5" d="m168 48h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-6-2" d="m148 40h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-1-54" d="m152 40h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-0-7" d="m156 40h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-63-44" d="m160 40h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-2-3" d="m164 40h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-06-0" d="m168 40h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-6-7" d="m148 36h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-1-8" d="m152 36h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-0-6" d="m156 36h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-63-8" d="m160 36h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-2-8" d="m164 36h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-06-4" d="m168 36h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-6-3" d="m148 32h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-1-1" d="m152 32h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-0-4" d="m156 32h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-63-9" d="m160 32h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-2-2" d="m164 32h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-06-06" d="m168 32h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-6-8" d="m148 28h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-1-9" d="m152 28h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-0-2" d="m156 28h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-63-6" d="m160 28h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-2-6" d="m164 28h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-06-49" d="m168 28h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2299-75" d="m96 100v4z" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2303-38" d="m96 116v4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2299-3-83" d="m96 104v4z" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2299-6-1" d="m96 112v4z" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2299-7-8" d="m96 108v4z" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2299-5-9" d="m100 100v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2303-3-6" d="m100 116v4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-7-2-3" d="m100 108v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2303-1-8" d="m104 116v4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-6-7-4" d="m104 112v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2303-6-8" d="m108 116v4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-3-0-9" d="m108 104v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-6-62-7" d="m108 112v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-1-6" d="m112 100v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-6-9-0" d="m112 112v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-3-59-5" d="m116 104v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-6-2-4" d="m116 112v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-97-5" d="m120 100v4z" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2303-36-9" d="m120 116v4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2299-3-1-4" d="m120 104v4z" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2299-6-29-6" d="m120 112v4z" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2299-7-3-9" d="m120 108v4z" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2303-19-2" d="m96 120v4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2303-19-8-7" d="m108 120v4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2303-19-45-5" d="m116 120v4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2303-19-0-4" d="m112 120v4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2303-19-3-8" d="m120 120v4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-6-12" d="m96 124h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-1-89" d="m100 124h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-0-3" d="m104 124h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-63-68" d="m108 124h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-2-02" d="m112 124h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-06-1" d="m116 124h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-6-1-0" d="m96 116h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-1-5-5" d="m100 116h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-63-4-1" d="m108 116h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-2-3-8" d="m112 112h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-1-8-2" d="m100 108h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-0-6-4" d="m104 108h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-63-8-0" d="m108 108h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-2-8-6" d="m112 108h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-06-4-2" d="m116 108h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-0-4-0" d="m104 104h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-6-8-1" d="m96 100h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-1-9-1" d="m100 100h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-0-2-0" d="m104 100h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-63-6-3" d="m108 100h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-2-6-40" d="m112 100h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-06-49-3" d="m116 100h4" fill="none" stroke="#000" stroke-width=".5"/>
<rect id="rect31-3-7-1" x="44" y="144" width="32" height="32" fill="none" stroke="#000" stroke-linecap="round" stroke-width=".5"/>
<path id="path2299-4" d="m48 148v4z" fill="none" stroke="#000" stroke-linejoin="bevel" stroke-width=".5"/>
<path id="path2303-69" d="m48 164v4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2299-3-4" d="m48 152v4z" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2299-6-22" d="m48 160v4z" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2299-7-64" d="m48 156v4z" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2299-5-1" d="m52 148v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-6-6-8" d="m52 160v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-9-2" d="m56 148v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-3-2-8" d="m56 152v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-6-7-6" d="m56 160v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-7-0-8" d="m56 156v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-3-0-3" d="m60 152v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-7-6-8" d="m60 156v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-6-9-6" d="m64 160v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-7-28-7" d="m68 156v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-97-9" d="m72 148v4z" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2303-36-0" d="m72 164v4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2299-3-1-3" d="m72 152v4z" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2299-6-29-3" d="m72 160v4z" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2299-7-3-3" d="m72 156v4z" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2303-19-32" d="m48 168v4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2303-19-45-2" d="m68 168v4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2303-19-0-6" d="m64 168v4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2303-19-3-5" d="m72 168v4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-6-87" d="m48 172h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-1-96" d="m52 172h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-0-0" d="m56 172h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-63-41" d="m60 172h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-2-04" d="m64 172h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-06-8" d="m68 172h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-63-4-2" d="m60 164h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-2-7-4" d="m64 164h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-6-5-9" d="m48 168h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-1-6-3" d="m52 168h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-0-9-9" d="m56 168h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-6-2-0" d="m48 160h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-0-7-7" d="m56 160h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-63-44-8" d="m60 160h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-06-0-1" d="m68 160h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-1-8-4" d="m52 156h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-2-8-5" d="m64 156h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-2-2-9" d="m64 152h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-06-06-3" d="m68 152h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-6-8-5" d="m48 148h4" fill="none" stroke="#000" stroke-linejoin="bevel" stroke-width=".5"/>
<path id="path3322-1-9-7" d="m52 148h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-0-2-08" d="m56 148h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-63-6-1" d="m60 148h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-2-6-9" d="m64 148h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-06-49-9" d="m68 148h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2299-13" d="m96 148v4z" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2303-7" d="m96 164v4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2299-3-72" d="m96 152v4z" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2299-6-64" d="m96 160v4z" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2299-7-5" d="m96 156v4z" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2299-5-2" d="m100 148v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-7-2-9" d="m100 156v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-3-2-5" d="m104 152v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2303-6-7" d="m108 164v4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-3-0-8" d="m108 152v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-6-62-8" d="m108 160v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-7-6-6" d="m108 156v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2303-8-4" d="m112 164v4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2303-37-97" d="m116 164v4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-6-2-7" d="m116 160v4z" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2299-97-53" d="m120 148v4z" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2303-36-38" d="m120 164v4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2299-3-1-37" d="m120 152v4z" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2299-6-29-9" d="m120 160v4z" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2299-7-3-37" d="m120 156v4z" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2303-19-4-8" d="m100 168v4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path2303-19-74" d="m96 168v4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path2303-19-3-88" d="m120 168v4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-6-58" d="m96 172h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-1-4" d="m100 172h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-0-37" d="m104 172h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-63-1" d="m108 172h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-2-38" d="m112 172h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-06-09" d="m116 172h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-6-1-7" d="m96 164h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-1-5-9" d="m100 164h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-63-4-3" d="m108 164h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-2-7-2" d="m112 164h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-1-6-7" d="m100 168h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-6-2-2" d="m96 160h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-0-7-75" d="m104 160h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-63-44-1" d="m108 160h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-1-8-7" d="m100 156h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-2-8-1" d="m112 156h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-06-4-7" d="m116 156h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-0-4-08" d="m104 152h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-63-9-5" d="m108 152h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-2-2-1" d="m112 152h4" fill="none" stroke="#000" stroke-width=".2"/>
<path id="path3322-6-8-6" d="m96 148h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-1-9-2" d="m100 148h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-0-2-1" d="m104 148h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-63-6-9" d="m108 148h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-2-6-6" d="m112 148h4" fill="none" stroke="#000" stroke-width=".5"/>
<path id="path3322-06-49-4" d="m116 148h4" fill="none" stroke="#000" stroke-width=".5"/>
<circle id="path19291-0" cx="46" cy="170" r="1.5" fill-rule="evenodd" stroke-width=".26458"/>
<circle id="path19291-2" cx="58" cy="146" r="1.5" fill-rule="evenodd" stroke-width=".26458"/>
<circle id="path19291-2-9" cx="50" cy="146" r="1.5" fill-rule="evenodd" stroke-width=".26458"/>
<circle id="path19291-2-7" cx="94" cy="150" r="1.5" fill-rule="evenodd" stroke-width=".26458"/>
<circle id="path19291-2-5" cx="98" cy="174" r="1.5" fill-rule="evenodd" stroke-width=".26458"/>
<circle id="path19291-2-6" cx="122" cy="154" r="1.5" fill-rule="evenodd" stroke-width=".26458"/>
<circle id="path19291-2-4" cx="50" cy="126" r="1.5" fill-rule="evenodd" stroke-width=".26458"/>
<circle id="path19291-2-63" cx="70" cy="126" r="1.5" fill-rule="evenodd" stroke-width=".26458"/>
<circle id="path19291-2-79" cx="70" cy="98" r="1.5" fill-rule="evenodd" stroke-width=".26458"/>
<circle id="path19291-2-74" cx="94" cy="110" r="1.5" fill-rule="evenodd" stroke-width=".26458"/>
<circle id="path19291-2-91" cx="122" cy="114" r="1.5" fill-rule="evenodd" stroke-width=".26458"/>
<circle id="path19291-2-70" cx="106" cy="126" r="1.5" fill-rule="evenodd" stroke-width=".26458"/>
<rect id="rect31-3-7-1-0" x="44" y="96" width="32" height="32" fill="none" stroke="#000" stroke-linecap="round" stroke-width=".5"/>
<rect id="rect31-3-7-1-8" x="92" y="96" width="32" height="32" fill="none" stroke="#000" stroke-linecap="round" stroke-width=".5"/>
<rect id="rect31-3-7-1-5" x="92" y="144" width="32" height="32" fill="none" stroke="#000" stroke-linecap="round" stroke-width=".5"/>
<path id="path22143" transform="matrix(0 -.26458 .26458 0 80 208)" d="m514.02 257.01 13.093 22.677h-26.185z" fill-rule="evenodd"/>
<path id="path22143-3" transform="matrix(.26458 0 0 .26458 24 -4)" d="m514.02 257.01 13.093 22.677h-26.185z" fill-rule="evenodd"/>
<path id="path22143-9" transform="matrix(0 .26458 -.26458 0 240 -64)" d="m514.02 257.01 13.093 22.677h-26.185z" fill-rule="evenodd"/>
<path id="path22143-4" transform="matrix(-.26458 0 0 -.26458 296 148)" d="m514.02 257.01 13.093 22.677h-26.185z" fill-rule="evenodd"/>
<rect id="rect22295" x="136" y="16" width="48" height="68" fill="none" stroke="#000" stroke-width=".26458"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 27 KiB

View file

@ -0,0 +1,23 @@
// (c) 2022, redfast00
// See the LICENSE file for conditions for copying
#include <obus_module.h>
void setup() {
Serial.begin(115200);
obus_module::setup(OBUS_TYPE_PUZZLE, 0);
}
obus_can::message message;
void loop() {
bool is_message_valid = obus_module::loopPuzzle(&message, callback_game_start, callback_game_stop);
}
void callback_game_start() {
}
void callback_game_stop() {
}

View file

@ -1,6 +1,3 @@
## Testmodule buttons
# Testmodule knoppen
If the blue LED is lit, press the green button, otherwise press the red button.
### Credits
Module developed by redfast00.
Als de LED aan is, druk op de groene knop, anders op de rode knop.