Mündəricat:
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-13 06:56
Home System 3000, Arduino, bir temperatur sensoru, bir piezo səs siqnalı, bir optik detektor/fototransistor və bir evin enerji səmərəliliyinin artırılması yollarını göstərmək üçün istifadə edən bir cihazdır.
Addım 1: Temperatur Sensoru
· Gücünüzü və torpaq tellərinizi işə salın
çörək taxtasının yan tərəfindəki mikro nəzarətçi
· İstilik sensörünü çörək taxtasına yerləşdirin və müvafiq olaraq elektrik və torpaq tellərini çəkin
· Diqqət yetirin ki, temperatur sensorunun üç ucu var, orta ucunda isə "A0" limanından keçən tel var.
· İstilik sensoru kodu:
answer = questdlg ('Arduino və servo başlanğıc kodunu işlədin', 'cavab', 'Ok', 'Ok')
prompt = 'Başlamaq üçün hər hansı bir düyməni basın'
fasilə
prompt1 = 'Minimum temperaturu təyin et'
x = giriş (istək1)
prompt2 = 'Maksimum temperaturu təyin et'
y = giriş (istək2)
prompt3 = 'Başlamaq üçün hər hansı bir düyməni basın'
fasilə
rəqəm
h = cizgi xətti;
ax = gca;
ax. YGrid = 'açıq';
ax. YLim = [65 85];
stop = yalan;
startTime = datetime ('indi');
while ~ stop
% Cari gərginlik dəyərini oxuyun
v = readVoltage (a, 'A0');
% İstiliyi gərginlikdən hesablayın (məlumat vərəqinə əsasən)
TempC = (v - 0.5)*100;
TempF = 9/5*TempC + 32;
Cari vaxt alın
t = datetime ('indi') - startTime;
Animasiyaya bal əlavə edin
əlavə nöqtələr (h, datenum (t), TempF)
Oxları yeniləyin
ax. XLim = datenum ([t-saniyə (15) t]);
məlumat seçimi ('x', 'keeplimits')
çəkilmiş
Stop vəziyyətini yoxlayın
stop = readDigitalPin (a, 'D12');
Addım 2: Buzzer
· Həddindən artıq yüksək və ya həddindən artıq aşağı temperaturun oxunması üçün istifadə ediləcək səs siqnalı
Pozitiv sütundan siqnalın müsbət tərəfinə heç bir tel çəkilmir
· Bunun əvəzinə siqnalın müsbət tərəfindən "11" etiketli bir limana bir tel çəkilir.
Bu, yazılı kodda səs siqnalının yerini çağırmaq üçün daha sonra istifadə ediləcək.
· Zəng kodu:
TempF> = y olarsa
disp ('yaxın qapı isti')
playTone (a, 'D11', 500, 1)
başqa TempF <= x
disp ('qapını bağla soyuq')
playTone (a, 'D11', 250, 1)
bitmək
bitmək
Addım 3: Optik Detektor/Fototransistor
· Bu sensor digərlərindən fərqli olaraq müqavimətçilər tələb edir
· Telləri bağladıqdan sonra sensorun bütün dörd ucunun döngəyə daxil olduğundan əmin olun
· Sensor, hərəkəti əks etdirən işıqda bir dəyişiklik algılar və onu giriş olaraq qeyd edir
· Optik Detektor/Fototransistor Kodu:
aydın a
a = arduino ('/dev/tty.usbserial-DN01DVI2', 'Uno', 'Kitabxanalar', 'Servo');
prompt = 'İşıq səviyyəsi eşikini təyin et'
z = giriş (istək)
işıq səviyyəsi = 0
yüngülLevel ~ = -1
lightLevel = readVoltage (a, 'A1')
lightLevel> = z olarsa
answer = questdlg ('AC -ni dəyişmək istərdinizmi?', 'Bəli', 'Xeyr')
cavabı dəyişdirin
hal 'Bəli'
answer2 = questdlg ('AC -ni yuxarı və ya aşağı çevirin?', 'cavab', 'Aşağı', 'Yuxarı', 'Yuxarı')
cavabı dəyişdir 2
dava 'aşağı'
s = servo (a, 'D10');
bucaq üçün = 0:.1:.5
yazma mövqeyi (lər, bucaq);
current_position = readPosition (s);
current_position = current_position * 180;
% servo motorun cari vəziyyətini çap edin
fprintf ('Cari mövqe %d / n', current_position);
% gecikmə tələb olunur, belə ki servo mövqeyə yerləşdirilə bilər
% bucaq ona deyildi.
fasilə (2);
bitmək
% motoru 0 açılı vəziyyətə qaytarın
yazma mövqeyi (lər, 0);
aydın s
prompt = 'Davam etmək üçün hər hansı bir düyməyə basın'
questdlg ('AC geri çevrildi', 'cavab', 'Ok', 'Ok')
dava 'yuxarı'
s = servo (a, 'D10');
bucaq üçün =.5:.1: 1
yazma mövqeyi (lər, bucaq);
current_position = readPosition (s);
current_position = current_position * 180;
% servo motorun cari vəziyyətini çap edin
fprintf ('Cari mövqe %d / n', current_position);
% gecikmə tələb olunur, belə ki servo mövqeyində yerləşdirilə bilər
% bucaq ona deyildi.
fasilə (2);
bitmək
Addım 4: Servo
· Servo təmsil edir
bir kondisioner və hərəkət algılama girişinin çıxışıdır
· Müsbət bir tel, topraklama teli və "D9" limanından servoya qədər bir tel tələb olunur
· Servo kodu:
% motoru 0 açı vəziyyətinə qaytarın
yazma mövqeyi (lər, 0);
aydın s
prompt = 'Davam etmək üçün hər hansı bir düyməyə basın'
questdlg ('AC açıldı', 'cavab', 'Ok', 'Ok')
bitmək
bitmək
fasilə
fasilə
bitmək
bitmək
*Xüsusi qeyd: servo kodunun bir hissəsi optik detektor/fototransistor kodu ilə birləşdirilmişdir.