Angewandte Informatik: Taster entprellen: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| (Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt) | |||
| Zeile 46: | Zeile 46: | ||
# Versuchen Sie die Lernzielkontrollfragen zu beantworten | # Versuchen Sie die Lernzielkontrollfragen zu beantworten | ||
= Aufgabe | = Aufgabe 4: Taster entprellen = | ||
[[Datei:ArduinoGettingStartedExample 03.png|thumb|rigth|300px|Abb. 2: Verkabelungsplan für taster und Summer]] | [[Datei:ArduinoGettingStartedExample 03.png|thumb|rigth|300px|Abb. 2: Verkabelungsplan für taster und Summer]] | ||
# Lesen Sie den Taster via <code>readDigitalPin</code> (vgl. Abb. 2) ein und entprellen Sie diesen über einen Zeitvergleich. | # Lesen Sie den Taster via <code>readDigitalPin</code> (vgl. Abb. 2) ein und entprellen Sie diesen über einen Zeitvergleich. | ||
| Zeile 70: | Zeile 70: | ||
end | end | ||
configurePin(hArduino, 'D12', 'pullup'); | configurePin(hArduino, 'D12', 'pullup'); % Interner Pull-up-Widerstand verwendet | ||
nMesswerte = 100; | nMesswerte = 100; | ||
%% Messschleife | %% Messschleife | ||
Aktuelle Version vom 28. April 2026, 06:29 Uhr
| Autor: | Prof. Dr.-Ing. Schneider |
| Lektion 4 | Business and Systems Engineering, Angewandte Mathematik und Informatik, Übung, Sommersemester |
| Modulbezeichnung: | BSE-M-2-1.09 |
Inhalt
- Programmierrichtlinien
- Taster mittels Arduino auslesen, entprellen, Pull-Up/Pull-Down-Widerstand
- Zähler inkrementieren
switch..case-Verzweigung- Ansteuerung einer RGB-LED
- Programmierrichtlinie für C
Lernziele
Nach Durchführung dieser Lektion
- können Sie Quelltext entsprechend der Programmierrichtlinien schreiben.
- einen Taster über eine Iterrupt-Leitung einlesen und entprellen.
- können Sie mittels Taster und
switch..case-Verzweigung eine LED in verschiedenen Helligkeiten ansteuern - eine RGB-LED in verschiedenen Farben ansteuern.
Lernzielkontrolle
- Wie liest man mit dem MATLAB Support Package for Arduino einen Iterrupt ein?
- Wurde der Taster erfolgreich eingelesen und entprellt?
- Wozu benötigt man einen Pull-Up/Pull-Down-Widerstand?
- Wurde der Quelltext durch Header und Kommentare aufgewertet?
- Welche Möglichkeiten gibt es einen Zähler zu in-/dekrementieren?
- Wurde in Aufgabe 3.4 ein
switch...caseverwendet?
Tutorials
- Erste Schritte mit dem MATLAB-Supportpaket für Arduino-Hardware
- Arduino Explorer App
- Erste Schritte mit MATLAB
- Arduino Programmierung mit MATLAB®
- Wiki-Artikel: Linearpotentiometer
- Wiki-Artikel: Piezo_Lautsprecher
- Wiki-Artikel: Passiver_Lautsprecher
- Studieren Sie den Artikel Interrupt Service Routine.
- YouTube: Arduino Tutorial #1.2 - Taster entprellen
Versuchsvorbereitung
- Studieren Sie die Tutorials
- Versuchen Sie die Lernzielkontrollfragen zu beantworten
Aufgabe 4: Taster entprellen

- Lesen Sie den Taster via
readDigitalPin(vgl. Abb. 2) ein und entprellen Sie diesen über einen Zeitvergleich. - Steuern Sie den Summer bei Tasterdruck via
playTonean. - Eine rote LED signalisiert die aktive Programmlaufzeit.
- Erweitern Sie Ihren Aufbau auf 3 LEDs (Rot, Gelb und Blau). Bei Tasterdruck wird der Status um 1 inkrementiert. Je nach Status leuchtet eine andere LED. Der Summer wird in diesem Programmteil nicht mehr angesteuert.
- Status 0: LEDs aus
- Status 1: Rote LED 1
- Status 2: Gelbe LED blinkt langsam (1 Hz)
- Status 3: Blaue LED blinkt schnell (5 Hz)
- Langen Tastendruck erkennen:ein kurzer Druck wechselt den Zustand (0 → 1 → 2 → 3 → 0) und ein langer Druck wechselt direkt in Zustand 3.
- Zeigen Sie den aktuellen Status im
MATLAB Command Windowan.
Nützliche Befehle: tic, toc, switch, case, arduino, configurePin, playTone, readDigitalPin, writeDigitalPin
Arbeitsergebnis: leseTaster.m
| Teillösung |
close all; clc; % Initialisierung
if ~exist('hArduino','var')
hArduino = arduino('COM8','Uno'); % Arduino Objekt erzeugen
disp('Neues Arduino Objekt erzeugt.')
end
configurePin(hArduino, 'D12', 'pullup'); % Interner Pull-up-Widerstand verwendet
nMesswerte = 100;
%% Messschleife
for i=1:nMesswerte
writeDigitalPin(hArduino, 'D13', 1); % Achtung - System läuft
speaker_status = readDigitalPin(hArduino, 'D12');
if speaker_status == 0
playTone(hArduino, 'D11', 1200, 1);
else
% Change duration to zero to mute the speaker
playTone(hArduino, 'D11', 1200, 0);
end
end
writeDigitalPin(hArduino, 'D13', 0);
clear hArduino
|
→ zurück zum Hauptartikel: BSE Angewandte Informatik - SoSe26