Angewandte Informatik: Analoge und digitale Ein-und Ausgänge
| Autor: | Prof. Dr.-Ing. Schneider |
| Lektion 3 | 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
- 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.3 ein
switch...caseverwendet? - Welche Version der RGB-LED haben Sie verwendet (gemeinsame Anode oder Kathode)?
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.
Versuchsvorbereitung
- Studieren Sie die Tutorials
- Versuchen Sie die Lernzielkontrollfragen zu beantworten
Aufgabe 2: LED mit MATLAB® dimmen

- Schließen Sie das Potentiometer an den analogen Eingang des Arduino an.
- Messen Sie den Weg mittels Simulink.
- Stecken Sie eine Diode in D11 gegen GND.
- Dimmen Sie die Diode mit einem MATLAB®-Skript mittels Potentiometer (vgl. Aufgabe 2).
- Stellen Sie das Ergebnis als
- Digitalwort D
- Widerstand in Ω
- Helligkeit in %
- Strecke in m
dar.
| Teillösung |
close all; clc; % Initialisierung
if exist('hArduino')==0
hArduino = arduino('COM8','Uno'); % Arduino Objekt erzeugen
disp('Neues Arduino Objekt erzeugt.')
end
nMesswerte = 100;
%% Messschleife
for i=1:nMesswerte
Spannung = readVoltage(hArduino, 'A0') % Spannung messen
writePWMVoltage(hArduino, 'D11', Spannung); % LED via PWM dimmen
pause(0.1);
end
clear hArduino
|
Arbeitsergebnis: dimmeLED.m
Aufgabe 2.2: Taster und Summer

- Lesen Sie den Taster via D12 ein (vgl. Abb 2).
- Steuern Sie den Summer bei Tasterdruck via D11 an.
- Eine rote LED signalisiert die aktive Programmlaufzeit.
| Teillösung |
close all; clc; % Initialisierung
if exist('hArduino')==0
hArduino = arduino('COM8','Uno'); % Arduino Objekt erzeugen
disp('Neues Arduino Objekt erzeugt.')
end
configurePin(hArduino, 'D12', 'pullup');
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