Arduino Programmierung mit MATLAB: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| (35 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
== Inhalt == | == Inhalt == | ||
* [https://www.mathworks.com/help/matlab/arduinoio-get-started-with-matlab-support-package-for-arduino-hardware.html?s_tid=CRUX_lftnav Erste Schritte mit dem MATLAB-Supportpaket für Arduino-Hardware] | |||
* [https://www.mathworks.com/help/matlab/supportpkg/using-arduino-explorer.html Arduino Explorer App] | * [https://www.mathworks.com/help/matlab/supportpkg/using-arduino-explorer.html Arduino Explorer App] | ||
* [https://www.mathworks.com/help/matlab/supportpkg/getting-started-with-matlab-support-package-for-arduino-hardware.html Erste Schritte mit MATLAB] | |||
* [https://de.mathworks.com/discovery/arduino-programming-matlab-simulink.html Arduino Programmierung mit MATLAB<sup>®</sup>] | |||
* [https://de.mathworks.com/help/matlab/supportpkg/arduinoio.ultrasonic.html Ultraschallsensor einlesen] | |||
= Aufgabe 1.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'''.<br> | |||
<code>>> arduinoExplorer</code> | |||
# Schließen Sie ein Potentiometer an den analogen Eingang <code>A0</code> an. | |||
# Visualisieren Sie die Spannung an <code>A0</code> mit dem <code>arduinoExplorer</code>. | |||
# Stecken Sie eine Diode in D13 gegen GND. | |||
# Schalten Sie die Diode via <code>arduinoExplorer</code> an uns aus. | |||
= Aufgabe 1.2: Poti mit MATLAB<sup>®</sup> lesen = | |||
# Schließen Sie ein Potentiometer an den analogen Eingang <code>A0</code> an. | |||
# Visualisieren Sie die Spannung an <code>A0</code> mit einem MATLAB<sup>®</sup>-Skript für 100 Werte über der Zeit in s. | |||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | |||
| <strong>Musterlösung </strong> | |||
|- | |||
| <source line lang="matlab" style="font-size:medium">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') | |||
</source> | |||
|} | |||
= Aufgabe 1.3: LED mit MATLAB<sup>®</sup> schalten = | |||
# Stecken Sie eine Diode in D13 gegen GND. | |||
# Schalten Sie die Diode mit einem MATLAB<sup>®</sup>-Skript zyklisch an und aus. | |||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | |||
| <strong>Musterlösung </strong> | |||
|- | |||
| <source line lang="matlab" style="font-size:medium">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 | |||
</source> | |||
|} | |||
= Aufgabe 1.4: LED mit MATLAB<sup>®</sup> dimmen = | |||
[[Datei:ArduinoGettingStartedExample 02.png|thumb|rigth|300px|Abb. 1: LED und Potentiometer mit dem Arduino verbinden]] | |||
# Stecken Sie eine Diode in D11 gegen GND. | |||
# Dimmen Sie die Diode mit einem MATLAB<sup>®</sup>-Skript mittels Potentiometer (vgl. Aufgabe 2). | |||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | |||
| <strong>Musterlösung </strong> | |||
|- | |||
| <source line lang="matlab" style="font-size:medium">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 | |||
</source> | |||
|} | |||
= Aufgabe 1.5: Taster und Summer = | |||
[[Datei:ArduinoGettingStartedExample 03.png|thumb|rigth|300px|Abb. 2: Verkabelungsplan für 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. | |||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | |||
| <strong>Musterlösung </strong> | |||
|- | |||
| <source line lang="matlab" style="font-size:medium">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 | |||
</source> | |||
|} | |||
= Aufgabe 1.6: Entfernungsmessung mit Ultraschall = | |||
[[Datei:Gift-9344 128.gif|50px]]'''Hinweis: Mit der Lösung dieser Aufgabe und Sicherung in SVN können Sie Bonuspunkte erwerben.''' | |||
# 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]. | |||
# Eine rote LED signalisiert die aktive Programmlaufzeit. | |||
# Zeigen Sie die Distanzwerte in cm über der Zeit an. | |||
# Sichern Sie Ihre Messwerte in der Datei <code>Ultraschall.mat</code>. | |||
# Nutzen Sie ein [[Arduino:_Ultraschallsensor_entstören|Tiefpassfilter]], um das Messwertrauschen zu entstören. | |||
# 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" | |||
| <strong>Teillö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> | |||
|} | |||
'''Arbeitsergebnis:''' <code>messeUltraschallEntfernung.m</code> | |||
---- | |||
→ zurück zum Hauptartikel: [[BSE Angewandte Informatik - SoSe25]] | |||
Aktuelle Version vom 13. Mai 2025, 09:49 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.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 1.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 1.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 1.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 1.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 1.6: Entfernungsmessung mit Ultraschall
Hinweis: Mit der Lösung dieser Aufgabe und Sicherung in SVN können Sie Bonuspunkte erwerben.
- 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.
- Sichern Sie Ihre Messwerte in der Datei
Ultraschall.mat. - Nutzen Sie ein Tiefpassfilter, um das Messwertrauschen zu entstören.
- Ein Ampelmodul zeigt die Entfernung an.
| Entfernung | Farbe |
|---|---|
| x > 20 cm | grün |
| 10 cm < x < 20 cm | gelb |
| x < 10 cm rot | rot |
| Teillö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
|
Arbeitsergebnis: messeUltraschallEntfernung.m
→ zurück zum Hauptartikel: BSE Angewandte Informatik - SoSe25