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 A0 an.
Visualisieren Sie die Spannung an A0 mit dem arduinoExplorer.
Stecken Sie eine Diode in D13 gegen GND.
Schalten Sie die Diode via arduinoExplorer an uns aus.
Aufgabe 2: Poti mit MATLAB® lesen
Schließen Sie ein Potentiometer an den analogen Eingang A0 an.
Visualisieren Sie die Spannung an A0 mit einem MATLAB®-Skript für 100 Werte über der Zeit in s.
Musterlösung
closeall;clc;% Initialisierungif~isobject(hArduino)hArduino=arduino('COM8','Uno')% Verbindung aufbauenendtic% Timer startenfori=1:100Spannung(i)=readVoltage(hArduino,'A0');Zeit(i)=toc;pause(0.1)% in sendplot(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
closeall;clc;% Initialisierungifexist('hArduino')==0hArduino=arduino('COM8','Uno');% Arduino Objekt erzeugendisp('Neues Arduino Objekt erzeugt.')endnMesswerte=100;%% Messschleifefori=1:nMesswertewriteDigitalPin(hArduino,'D13',0);pause(0.5);writeDigitalPin(hArduino,'D13',1);pause(0.5);endclearhArduino
Aufgabe 4: LED mit MATLAB® dimmen
Abb. 1: LED und Potentiometer mit dem Arduino verbinden
Stecken Sie eine Diode in D11 gegen GND.
Dimmen Sie die Diode mit einem MATLAB®-Skript mittels Potentiometer (vgl. Aufgabe 2).
Musterlösung
closeall;clc;% Initialisierungifexist('hArduino')==0hArduino=arduino('COM8','Uno');% Arduino Objekt erzeugendisp('Neues Arduino Objekt erzeugt.')endnMesswerte=100;%% Messschleifefori=1:nMesswerteSpannung=readVoltage(hArduino,'A0')% Spannung messenwritePWMVoltage(hArduino,'D11',Spannung);% LED via PWM dimmenpause(0.1);endclearhArduino
Aufgabe 5: Taster und Summer
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.
Musterlösung
closeall;clc;% Initialisierungifexist('hArduino')==0hArduino=arduino('COM8','Uno');% Arduino Objekt erzeugendisp('Neues Arduino Objekt erzeugt.')endconfigurePin(hArduino,'D12','pullup');nMesswerte=100;%% Messschleifefori=1:nMesswertewriteDigitalPin(hArduino,'D13',1);% Achtung - System läuftspeaker_status=readDigitalPin(hArduino,'D12');ifspeaker_status==0playTone(hArduino,'D11',1200,1);else% Change duration to zero to mute the speakerplayTone(hArduino,'D11',1200,0);endendwriteDigitalPin(hArduino,'D13',0);clearhArduino
Aufgabe 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
clearall;closeall;clc;% Initialisierungifexist('hArduino')==0hArduino=arduino('COM8','Uno','Libraries','Ultrasonic');% Arduino Objekt erzeugendisp('Neues Arduino Objekt mit Ultrasonic-Bib erzeugt.')endhUltraschall=ultrasonic(hArduino,'D2','D3','OutputFormat','double')nMesswerte=100;%% MessschleifeticwriteDigitalPin(hArduino,'D13',1);fori=1:nMesswerteDistanz(i)=readDistance(hUltraschall);Zeit(i)=toc;endwriteDigitalPin(hArduino,'D13',0);%% Ergebnisdarstellungplot(Zeit,Distanz*100,'r.-');xlabel('Zeit in s')ylabel('Distanz in cm')clearhArduino