Doç. Dr. GÜRAY SONUGÜR

Doç. Dr. Güray SONUGÜR – Öğrenci Bilgi Paylaşım Platformu

Matlab ile Kontrol Kartından Okunan Verileri TXT Dosyaya Yazma İşlemi

clc;
clear;
%COM5 de kurulu olan mega2560 arduino sınıfını “a” değişkenine atadık.
a=arduino(‘COM5′,’Mega2560’);

%arduino üzerindeki sensörlerden aldığımız her değeri biz dizide (array)
%tutmamız gerekir. Üç sensörümüz var.
%1.) Potansiyometre 2.) Işık sensörü LDR  3.) Sıcaklık sensörü
%Dizide indis değişkenini “i” olarak seçtik.

% tarih ve saat değerlerini ayırıyoruz.
x=strsplit(datestr(datetime),’ ‘);
%dosya adı günün tarihi olarak veriliyor. Uzantısı “.txt”
dosya=fopen(strcat(datestr(date),’.txt’),’a+’);% dosya append modda açılıyor.

for i=1:50
voltage(i)=readVoltage(a,’A0′); %Potansiyometre verilerinin tutulduğu dizi
ldr(i)=readVoltage(a,’A1′); % LDR veriklerinin tutulduğu dizi
sck(i)=readVoltage(a,’A3′); % Sıcaklık verilerinin tutulduğu dizi.
pause(0.5); % 0.5 saniyelik duraklama tanımlandı.

% Eğer potansiyometreden okunan değer 4.7 Voltu aşarsa bir kısım işlemler
% yapılacak.
if voltage(i)>4.7
fprintf(‘POT voltajı beklenen değeri aştı!!’); %Ekrana uyarı yaz!
writeDigitalPin(a,’D46′,1); %Arduino 46 nolu dijital pini 1 yap. Yani 5V gönder.
else
writeDigitalPin(a,’D46′,0); %4.7 Voltu aşmazsa 46 nolu pini 0 yap.

end

fprintf(dosya,’%s’,x{2}); % x{2} zamanı gösteriyor. Dosyaya okuma zamanını da %kaydediyoruz.
fprintf(dosya,’ i=%d’,i);
fprintf(dosya,’   voltage=%f’,voltage(i));
fprintf(dosya,’   ldr=%f’,ldr(i));
fprintf(dosya,’   sicaklik=%f\n’,sck(i));

%okunan değerler for döngüsü içinde grafiğe yansıtılıyor.
%”hold on” komutu ile tüm grafiklerin aynı ekrana çıkması sağlandı.
%”drawnow” komutu ile gerçek zamanlı grafik çizildi.
plot(voltage,’b’); % potansiyometre grafiği mavi
hold on;
plot(ldr,’r’); % LDR grafiği kırmızı
plot(sck,’g’); % sıcaklık grafiği yeşil
drawnow;
end

fclose(dosya);%dosya kapandı.