Arduino Programmierung mit MATLAB: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 119: | Zeile 119: | ||
# Eine rote LED signalisiert die aktive Programmlaufzeit. | # Eine rote LED signalisiert die aktive Programmlaufzeit. | ||
# Zeigen Sie die Distanzwerte in cm über der Zeit an. | # Zeigen Sie die Distanzwerte in cm über der Zeit an. | ||
# Ein Ampelmodul zeigt die Entfernung an | # Nutzen Sie ein Tiefpassfilter, um das Messwertrauschen zu glätten. | ||
# Ein Ampelmodul zeigt die Entfernung an | |||
{| class="wikitable" | |||
|- | |||
! Entfernung !! Farbe | |||
|- | |||
| x> 20 cm || grün | |||
|- | |||
| 10 cm < x < 20 cm|| gelb | |||
|- | |||
| x < 10 cm rot || rot | |||
|} | |||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | {| role="presentation" class="wikitable mw-collapsible mw-collapsed" | ||
| <strong>Musterlösung </strong> | | <strong>Musterlösung </strong> | ||
Version vom 31. März 2025, 14:41 Uhr
Inhalt
- Erste Schritte mit dem MATLAB-Supportpaket für Arduino-Hardware
- Arduino Explorer App
- Erste Schritte mit MATLAB
- Arduino Programmierung mit MATLAB®
- Ultraschallsensor einlesen
Aufgabe 1: Arduino Explorer
Testen Sie zuerst die Verbindung zum Arduino mit dem Arduino Explorer. Den passenden port finden Sie über den Windows Geräte-Manager.
>> arduinoExplorer
- Schließen Sie ein Potentiometer an den analogen Eingang
A0an. - Visualisieren Sie die Spannung an
A0mit demarduinoExplorer. - Stecken Sie eine Diode in D13 gegen GND.
- Schalten Sie die Diode via
arduinoExploreran uns aus.
Aufgabe 2: Poti mit MATLAB® lesen
- Schließen Sie ein Potentiometer an den analogen Eingang
A0an. - Visualisieren Sie die Spannung an
A0mit einem MATLAB®-Skript für 100 Werte über der Zeit in s.
| Musterlösung |
close all; clc; % Initialisierung
if ~isobject(hArduino)
hArduino = arduino('COM8','Uno') % Verbindung aufbauen
end
tic % Timer starten
for i=1:100
Spannung(i)= readVoltage(hArduino,'A0');
Zeit(i) = toc;
pause(0.1) % in s
end
plot(Zeit,Spannung,'r.-')
xlabel('Zeit in s')
ylabel('Spannung in V')
|
Aufgabe 3: LED mit MATLAB® schalten
- Stecken Sie eine Diode in D13 gegen GND.
- Schalten Sie die Diode mit einem MATLAB®-Skript zyklisch an und aus.
| Musterlö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
writeDigitalPin(hArduino, 'D13', 0);
pause(0.5);
writeDigitalPin(hArduino, 'D13', 1);
pause(0.5);
end
clear hArduino
|
Aufgabe 4: LED mit MATLAB® dimmen

- Stecken Sie eine Diode in D11 gegen GND.
- Dimmen Sie die Diode mit einem MATLAB®-Skript mittels Potentiometer (vgl. Aufgabe 2).
| Musterlö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
|
Aufgabe 5: 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.
| Musterlö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
|
Aufgabe 6: Entfernungsmessung mit Ultraschall
- Lesen Sie die Messwerte des Ultraschallsensor ein [1].
- Eine rote LED signalisiert die aktive Programmlaufzeit.
- Zeigen Sie die Distanzwerte in cm über der Zeit an.
- Nutzen Sie ein Tiefpassfilter, um das Messwertrauschen zu glätten.
- Ein Ampelmodul zeigt die Entfernung an
| Entfernung | Farbe |
|---|---|
| x> 20 cm | grün |
| 10 cm < x < 20 cm | gelb |
| x < 10 cm rot | rot |
| Musterlösung |
clear all; close all; clc; % Initialisierung
if exist('hArduino')==0
hArduino = arduino('COM8','Uno','Libraries','Ultrasonic'); % Arduino Objekt erzeugen
disp('Neues Arduino Objekt mit Ultrasonic-Bib erzeugt.')
end
hUltraschall = ultrasonic(hArduino,'D2','D3','OutputFormat','double')
nMesswerte = 100;
%% Messschleife
tic
writeDigitalPin(hArduino, 'D13', 1);
for i=1:nMesswerte
Distanz(i) = readDistance(hUltraschall);
Zeit(i) = toc;
end
writeDigitalPin(hArduino, 'D13', 0);
%% Ergebnisdarstellung
plot(Zeit,Distanz*100,'r.-');
xlabel('Zeit in s')
ylabel('Distanz in cm')
clear hArduino
|
→ zurück zum Hauptartikel: BSE Angewandte Informatik - SoSe25