Arduino Programmierung mit MATLAB: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| (6 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 6: | Zeile 6: | ||
* [https://de.mathworks.com/discovery/arduino-programming-matlab-simulink.html Arduino Programmierung mit MATLAB<sup>®</sup>] | * [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] | * [https://de.mathworks.com/help/matlab/supportpkg/arduinoio.ultrasonic.html Ultraschallsensor einlesen] | ||
= Aufgabe 1: Arduino Explorer = | = 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> | 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> | <code>>> arduinoExplorer</code> | ||
| Zeile 14: | Zeile 14: | ||
# Schalten Sie die Diode via <code>arduinoExplorer</code> an uns aus. | # Schalten Sie die Diode via <code>arduinoExplorer</code> an uns aus. | ||
= Aufgabe 2: Poti mit MATLAB<sup>®</sup> lesen = | = Aufgabe 1.2: Poti mit MATLAB<sup>®</sup> lesen = | ||
# Schließen Sie ein Potentiometer an den analogen Eingang <code>A0</code> an. | # 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. | # Visualisieren Sie die Spannung an <code>A0</code> mit einem MATLAB<sup>®</sup>-Skript für 100 Werte über der Zeit in s. | ||
| Zeile 38: | Zeile 38: | ||
|} | |} | ||
= Aufgabe 3: LED mit MATLAB<sup>®</sup> schalten = | = Aufgabe 1.3: LED mit MATLAB<sup>®</sup> schalten = | ||
# Stecken Sie eine Diode in D13 gegen GND. | # Stecken Sie eine Diode in D13 gegen GND. | ||
# Schalten Sie die Diode mit einem MATLAB<sup>®</sup>-Skript zyklisch an und aus. | # Schalten Sie die Diode mit einem MATLAB<sup>®</sup>-Skript zyklisch an und aus. | ||
| Zeile 60: | Zeile 60: | ||
</source> | </source> | ||
|} | |} | ||
= Aufgabe 4: LED mit MATLAB<sup>®</sup> dimmen = | = 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]] | [[Datei:ArduinoGettingStartedExample 02.png|thumb|rigth|300px|Abb. 1: LED und Potentiometer mit dem Arduino verbinden]] | ||
# Stecken Sie eine Diode in D11 gegen GND. | # Stecken Sie eine Diode in D11 gegen GND. | ||
| Zeile 83: | Zeile 83: | ||
</source> | </source> | ||
|} | |} | ||
= Aufgabe 5: Taster und Summer = | = Aufgabe 1.5: Taster und Summer = | ||
[[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 D12 ein (vgl. Abb 2). | # Lesen Sie den Taster via D12 ein (vgl. Abb 2). | ||
| Zeile 115: | Zeile 115: | ||
</source> | </source> | ||
|} | |} | ||
= Aufgabe 6: Entfernungsmessung mit Ultraschall = | = Aufgabe 1.6: Entfernungsmessung mit Ultraschall = | ||
Mit der Lösung dieser Aufgabe und Sicherung in SVN können Sie Bonuspunkte erwerben. | [[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]. | # 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. | # 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. | ||
# Nutzen Sie ein Tiefpassfilter, um das Messwertrauschen zu | # Sichern Sie Ihre Messwerte in der Datei <code>Ultraschall.mat</code>. | ||
# Ein Ampelmodul zeigt die Entfernung an | # Nutzen Sie ein [[Arduino:_Ultraschallsensor_entstören|Tiefpassfilter]], um das Messwertrauschen zu entstören. | ||
# Ein Ampelmodul zeigt die Entfernung an. | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
| Zeile 133: | Zeile 134: | ||
|} | |} | ||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | {| role="presentation" class="wikitable mw-collapsible mw-collapsed" | ||
| <strong> | | <strong>Teillösung </strong> | ||
|- | |- | ||
| <source line lang="matlab" style="font-size:medium">clear all; close all; clc; % Initialisierung | | <source line lang="matlab" style="font-size:medium">clear all; close all; clc; % Initialisierung | ||
| Zeile 157: | Zeile 158: | ||
</source> | </source> | ||
|} | |} | ||
'''Arbeitsergebnis:''' <code>messeUltraschallEntfernung.m</code> | |||
---- | ---- | ||
→ zurück zum Hauptartikel: [[BSE Angewandte Informatik - SoSe25]] | → 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