\documentclass[]{schuleab}
\usepackage[utf8]{inputenc}
\usepackage{schulinf}

% Dieses Dokument ist in der Zusammenarbeit von Informatikreferendaren und
% ehemaligen Informatikreferendaren der Studienseminare (heute ZfsL) Arnsberg,
% Hamm und Solingen entstanden.
%
% Das Dokument steht unter der Lizenz: Creative Commons by-nc-sa Version 4.0
% http://creativecommons.org/licenses/by-nc-sa/4.0/deed.de
%
% Nach dieser Lizenz darf das Dokument beliebig kopiert und bearbeitet werden,
% sofern das Folgeprodukt wiederum unter gleichen Lizenzbedingungen vertrieben
% und auf die ursprünglichen Urheber verwiesen wird.
% Eine kommerzielle Nutzung ist ausdrücklich ausgeschlossen.
%
% Die Namensnennung durch einen Verweis und die Lizenzangabe der ursprünglichen
% Urheber auf den Materialien für Schülerinnen und Schüler ist erforderlich.
%
% Die Sammlung der Dokumente steht unter
% http://ddi.uni-wuppertal.de/material/materialsammlung/
% zur Verfügung.
%
% Das LaTeX-Paket zum Setzen der Dokumente der Sammlung steht
% unter  http://www.ctan.org/pkg/schule
% zur Verfügung.

\usepackage[pdfauthor={Referendare der Informatikfachseminare Arnsberg, Hamm und Solingen}]{hyperref}
\includexmp{lizenz}
\cclizenz{byncsaeu}
\footerQRLink{materialsammlung_qr_url.pdf}

\svnid{$Id: ab_04_gpio_python.tex 626 2014-05-22 21:36:50Z pieper $}

\dokName{RasPi: GPIO und Python}
\jahrgang{9}

\lstset{% 
	breaklines=true, % Zeilenumbrüche
	language=python, % Sprache
	basicstyle=\ttfamily\small,
	% breakindent=1pt,
	breakatwhitespace=false,
% 	framexleftmargin=5mm,
	% breakautoindent=false,
	numbers=left, numberstyle=\footnotesize,  numbersep=5pt,
	tabsize=2,
}

\begin{document}
\section*{Der GPIO und Python}

Wie bei fast allen Programmiersprachen, muss man in Python das komplette Programm selber schreiben und kann es nicht wie in Scratch aus Elementen zusammenziehen. Dem entsprechend muss man sich bei Python die nötigen Befehle, wenn man sie nicht kennt, aus entsprechenden Hilfen zusammensuchen. Ein wichtiges Element bei Python ist das Einrücken der Befehle, da durch die Einrückung verdeutlicht wird, wann z.\,B. eine Wiederholung oder eine bedingte Anweisung beendet ist.

Das einfaches Programm \verb|blinker.py| in Python für ein Wechsellicht von zwei LEDs sieht wie folgt aus:

\lstinputlisting{blinker.py}

In den ersten beiden Zeilen wird dafür gesorgt, dass das Programm die Befehle zum GPIO und für den Timer kennt. Danach wird der GPIO in den Initialzustand gesetzt und ab Zeile 16 wird alles was eingerückt ist wiederholt. Dabei ist \lstinline|while 1:| eine Wiederholung die nie von alleine abbricht. Will man ein solches Programm beenden, muss man z.\,B. mit Strg+C eingreifen und das Programm in seiner Ausführung stoppen.

Da die Methoden von Python für den GPIO auf besondere Bereiche zugreifen, muss man das Programm mit Rootrechten starten. Mit \lstinline|sudo python blinker.py| startet man so das obige Programm.

\end{document}