diff --git a/20231109/400_points_breadboard.jpg b/20231109/400_points_breadboard.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8ba048255851581a84db16c4d5a50802f7521486 Binary files /dev/null and b/20231109/400_points_breadboard.jpg differ diff --git a/20231109/hp-2023ws-p2.pdf b/20231109/hp-2023ws-p2.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f5e458a3e21ddbb169161002ad8995835ed3dcdc Binary files /dev/null and b/20231109/hp-2023ws-p2.pdf differ diff --git a/20231109/hp-2023ws-p2.tex b/20231109/hp-2023ws-p2.tex new file mode 100644 index 0000000000000000000000000000000000000000..3b5868deaa42a08c9d238c9e778dc330b81c76bb --- /dev/null +++ b/20231109/hp-2023ws-p2.tex @@ -0,0 +1,180 @@ +% hp-2023ws-p2.pdf - Labor Notes on Low-Level Programming +% Copyright (C) 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 Peter Gerwinski +% +% This document is free software: you can redistribute it and/or +% modify it either under the terms of the Creative Commons +% Attribution-ShareAlike 3.0 License, or under the terms of the +% GNU General Public License as published by the Free Software +% Foundation, either version 3 of the License, or (at your option) +% any later version. +% +% This document is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this document. If not, see <http://www.gnu.org/licenses/>. +% +% You should have received a copy of the Creative Commons +% Attribution-ShareAlike 3.0 Unported License along with this +% document. If not, see <http://creativecommons.org/licenses/>. + +% README: Versuch 2: Druckknopfampel + +\documentclass[a4paper]{article} + +\usepackage{pgscript} +\usepackage{multicol} +\usepackage{amsmath} +\usepackage{sfmath} + +\sloppy +\raggedcolumns +\pagestyle{empty} +\addtolength{\textheight}{1cm} +\newcommand{\sep}{~$\cdot$~} +\newcommand{\mylicense}{CC-by-sa (Version 3.0) oder GNU GPL (Version 3 oder höher)} + +\begin{document} + + \makebox(0,0.005)[tl]{\includegraphics[scale=0.72]{logo-hochschule-bochum-cvh-text-v2.pdf}}\hfill + \makebox(0,0)[tr]{\includegraphics[scale=0.5]{logo-hochschule-bochum.pdf}} + \par\bigskip\bigskip + \begin{center} + \Large\textbf{Praktikumsversuch 2: Druckknopfampel} + \par\medskip + \normalsize Hardwarenahe Programmierung\sep + Wintersemester 2023/24\sep + Prof.~Dr.~Peter Gerwinski + \end{center} + + Aufgabe: Programmieren Sie einen Mikrocontroller so, + daß er eine Druckknopfampel steuern kann. + + \begin{multicols}{2} + + \begin{itemize} + \item + Normalerweise zeigt eine Druckknopfampel rotes Licht für die + Fußgänger und grünes Licht für die Straße. + \item + Nach Knopfdruck wechselt die Straße über Gelb nach Rot. + Danach bekommen die Fußgänger Grün. + Nach einer gewissen Zeit bekommen die Fußgänger wieder Rot, + und die Straße wechselt über Rot-Gelb wieder zu Grün. + + \medskip + \item + Als Mikrocontroller-Entwicklungsplattform stellen wir Ihnen + einen \emph{Arduino Uno\/} zur Verfügung. + \item + Software-Entwiklung für den Arduino geschieht üblicherweise + mit Hilfe der Entwicklungswerkzeuge \emph{GCC, binutils und + glibc für AVR} sowie \emph{avrdude\/} für das Herunterladen + des geschriebenen Programms vom PC auf den Mikrocontroller. + + Die Arduino-Entwicklungsumgebung (siehe z.\,B.\ + \url{https://www.arduino.cc/en/Main/Software}) integriert + alle diese Komponenten. + \item + Wir schreiben unser Programm in C und nicht in der INO-Sprache. + Wenn die Quelltext-Dateien in der Arduino-Entwicklungsumgebung + die Endung \file{.ino} haben, ist das kein Problem, + sofern der Inhalt der Datei in C geschrieben ist. + \item + Den Schaltplan des Arduino Uno sowie das Datenblatt des + ATmega328p finden Sie per Web-Recherche. + + \columnbreak + + \item + Sie können Ihr Programm direkt aus der Arduino-Entwicklungsumgebung heraus + compilieren und auf den Mikrocontroller herunterladen. + Wenn Sie dies von der Kommandozeile aus machen möchten, + geht dies folgendermaßen: + + \lstinline[style=cmd]{avr-gcc -Wall -Os -mmcu=atmega328p \}\\ + \lstinline[style=cmd]{dateiname.c -o dateiname.elf} + + \lstinline[style=cmd]{avr-objcopy -O ihex \}\\ + \lstinline[style=cmd]{dateiname-4.elf dateiname-4.hex} + + \lstinline[style=cmd]{avrdude -P /dev/ttyACM0 -c arduino \}\\ + \lstinline[style=cmd]{-p m328p -U flash:w:dateiname.hex} + +% Notfalls: \lstinline[style=cmd]{sudo chmod 666 /dev/ttyACM0} + + \medskip + \item + Die Verdrahtung erfolgt auf Steckplatinen -- siehe + Abb.~\ref{Steckplatine}. + Die mit roten und blauen Streifen markierten Lochreihen sind + in Längsrichtung elektrisch verbunden, alle anderen in + Querrichtung mit einer Trennung in der Mitte. Üblicherweise + verwendet man die Längsrichtung für die Stromversorgung: Rot + = Versorgungsspannung, Blau = 0\,V. + \item + LEDs sind keine Glühlampen! Sie haben einen Pluspol (länger) + und einen Minuspol (kürzer, Gehäuse abgeflacht), und sie dürfen + \textbf{nur mit Vorwiderstand} betrieben werden, + andernfalls besteht die Gefahr einer Zerstörung der LED + und/oder des Arduino. + \item + Anstelle eines Drucktasters verwenden wir ein Stück Draht. + \item + Bevor Sie Ihre Schaltung unter Strom setzen, lassen Sie + diese \textbf{durch einen Betreuer prüfen}. + \end{itemize} + + \vspace*{-\medskipamount} + + \strut\hfill\emph{Viel Erfolg!}\\[-3.5cm] + + \end{multicols} + + \vspace*{-1.5\bigskipamount} + + \begin{figure}[h] + \begin{minipage}{7.3cm} + \includegraphics[width=8cm]{400_points_breadboard.jpg} + \vspace*{-1cm} + \caption{Steckplatine\label{Steckplatine}} + \vspace*{1cm} + \end{minipage}% + \begin{minipage}{9cm} + \small\raggedright + \vspace*{1cm} + Bildquelle: + \href{https://commons.wikimedia.org/wiki/File:400_points_breadboard.jpg}% + {\nolinkurl{https://commons.wikimedia.org/}\\ + \nolinkurl{wiki/File:400_points_breadboard.jpg}}\\ + Autor: \url{https://www.flickr.com/people/33504192@N00}\\ + Lizenz: CC-BY-SA 2.0 Generic + \end{minipage} + \end{figure} + + \vspace*{-1.5\bigskipamount} + + \vfill + + \begingroup + + \small + + \setlength{\leftskip}{3cm} + + Stand: 9.\ November 2023 + +% Soweit nicht anders angegeben:\\ + Copyright \copyright\ 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023\quad Peter Gerwinski\\ + Lizenz: \mylicense + + Sie können diese Praktikumsunterlagen einschließlich \LaTeX-Quelltext +% und Beispielprogramme\\ + herunterladen unter:\\ + \url{https://gitlab.cvh-server.de/pgerwinski/hp} + + \endgroup + +\end{document} diff --git a/README.md b/README.md index d128bc2664dee18913b849b94dd49a441d04f66e..a6235d5cb3b725dd9a94bf26f0dfb554238d3348 100644 --- a/README.md +++ b/README.md @@ -45,6 +45,7 @@ Musterlösungen: Praktikumsunterlagen: --------------------- * [Versuch 1: RSA-Verschlüsselung](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2023ws/20231012/hp-2023ws-p1.pdf) + * [Versuch 2: Druckknopfampel](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2023ws/20231109/hp-2023ws-p2.pdf) Alte Klausuren: ---------------