Arduino Programmierung mit MATLAB: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 115: | Zeile 115: | ||
</source> | </source> | ||
|} | |} | ||
= Aufgabe 6: Entfernungsmessung mit Ultraschall = | |||
# Lesen Sie die Messwerte des Ultraschallsensor ein [https://de.mathworks.com/help/matlab/supportpkg/arduinoio.ultrasonic.html?searchHighlight=arduino+matlab+ultrasonic&s_tid=srchtitle_support_results_2_arduino+matlab+ultrasonic]. | |||
# Steuern Sie das Ampelmodul | |||
# Eine rote LED signalisiert die aktive Programmlaufzeit. | |||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | |||
| <strong>Musterlösung </strong> | |||
|- | |||
| <source line lang="matlab" style="font-size:medium">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 | |||
</source> | |||
|} | |||
---- | ---- | ||
→ zurück zum Hauptartikel: [[BSE Angewandte Informatik - SoSe25]] | → zurück zum Hauptartikel: [[BSE Angewandte Informatik - SoSe25]] | ||
Version vom 31. März 2025, 14:36 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].
- Steuern Sie das Ampelmodul
- Eine rote LED signalisiert die aktive Programmlaufzeit.
| 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