Turinys:
2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-13 06:57
„Home System 3000“yra įrenginys, kuriame naudojamas „Arduino“, temperatūros jutiklis, pjezo garsinis signalas, optinis detektorius/fototransistorius ir servo, kad būtų rodomi būdai, kaip pagerinti namų energijos vartojimo efektyvumą.
1 žingsnis: temperatūros jutiklis
· Išjunkite maitinimo ir įžeminimo laidus
mikrovaldiklį prie duonos lentos
· Įdėkite temperatūros jutiklį į duonos lentą ir atitinkamai prijunkite maitinimo ir įžeminimo laidus
· Atkreipkite dėmesį, kad temperatūros jutiklis turi tris kištukus, o vidurinis - laidą, einantį iš „A0“prievado.
· Temperatūros jutiklio kodas:
answer = questdlg ('Prašome paleisti arduino ir servo pradžios kodą', 'atsakymas', 'Gerai', 'Gerai')
prompt = 'Norėdami pradėti, paspauskite bet kurį klavišą'
Pauzė
prompt1 = 'Nustatyti mažiausią temperatūrą'
x = įvestis (eilutė1)
prompt2 = 'Nustatyti maksimalią temperatūrą'
y = įvestis (eilutė2)
prompt3 = 'Norėdami pradėti, paspauskite bet kurį klavišą'
Pauzė
figūra
h = animuota linija;
kirvis = gca;
ax. YGrid = 'įjungtas';
ax. YLim = [65 85];
stop = klaidinga;
startTime = datetime ('dabar');
o ~ sustok
% Skaityti dabartinės įtampos vertę
v = skaitymo įtampa (a, 'A0');
% Apskaičiuokite temperatūrą pagal įtampą (remiantis duomenų lapu)
TempC = (v - 0,5)*100;
TempF = 9/5*TempC + 32;
% Gaukite dabartinį laiką
t = datetime ('dabar') - startTime;
% Pridėti taškų prie animacijos
priedai (h, datenum (t), TempF)
% Atnaujinti ašis
ax. XLim = datenum ([t-sekundės (15) t]);
duomenų žyma ('x', 'keeplimits')
ištrauktas
% Patikrinkite sustabdymo būseną
stop = readDigitalPin (a, 'D12');
2 žingsnis: garsinis signalas
· Viela garsiakalbyje, kuri bus naudojama signalizuoti apie itin aukštą ar labai žemą temperatūrą
· Iš teigiamo stulpelio į teigiamą garsinio signalo pusę laidas nevedamas
· Vietoj to viela iš teigiamos garsinio signalo pusės nuvedama į prievadą, pažymėtą „11“
Tai vėliau bus naudojama skambinančiojo skambučio vietai parašytame kode paskambinti.
· Garso signalo kodas:
jei TempF> = y
disp („uždarykite duris, karšta“)
playTone (a, „D11“, 500, 1)
elseif TempF <= x
disp („uždarykite duris, šalta“)
„playTone“(a, „D11“, 250, 1)
galas
galas
3 žingsnis: optinis detektorius/fototransistorius
· Šiam jutikliui reikalingi rezistoriai, skirtingai nuo kitų
· Įsitikinkite, kad prijungę laidus, visi keturi jutiklio kištukai yra įtraukti į kilpą
· Jutiklis aptinka šviesos pasikeitimą, vaizduojantį judesį, ir įrašo jį kaip įvestį
· Optinio detektoriaus/fototransistoriaus kodas:
aišku a
a = arduino ('/dev/tty.usbserial-DN01DVI2', 'Uno', 'Bibliotekos', 'Servo');
prompt = 'Nustatyti šviesos lygio slenkstį'
z = įvestis (raginimas)
„LightLevel“= 0
o lightLevel ~ = -1
lightLevel = readVoltage (a, 'A1')
jei lightLevel> = z
atsakymas = questdlg ('norėtų pakeisti AC?', 'Taip', 'Ne')
perjungti atsakymą
atvejis „Taip“
answer2 = questdlg („Pasukti AC aukštyn arba žemyn?“, „atsakymas“, „Žemyn“, „aukštyn“, „aukštyn“)
perjungti atsakymą2
atvejis „žemyn“
s = servo (a, 'D10');
kampu = 0:.1:.5
writePosition (s, kampas);
current_position = readPosition (s);
dabartinė_ pozicija = dabartinė_ pozicija * 180;
% spausdinama dabartinė servo variklio padėtis
fprintf ('Dabartinė padėtis yra %d / n', dabartinė_pozicija);
% mažo delsos reikia, kad servo būtų galima nustatyti
% kampas, pasakytas.
pauzė (2);
galas
% grąžinkite variklį į 0 kampo padėtį
writePosition (s, 0);
aišku s
prompt = 'Norėdami tęsti, paspauskite bet kurį klavišą'
questdlg („AC atmestas“, „atsakymas“, „Gerai“, „Gerai“)
byla „aukštyn“
s = servo (a, 'D10');
kampu =.5:.1: 1
writePosition (s, kampas);
current_position = readPosition (s);
dabartinė_ pozicija = dabartinė_ pozicija * 180;
% spausdinama dabartinė servo variklio padėtis
fprintf ('Dabartinė padėtis yra %d / n', dabartinė_pozicija);
% mažo delsos reikia, kad servo būtų galima nustatyti
% kampas, pasakytas.
pauzė (2);
galas
4 žingsnis: Servo
· Servo simbolis
oro kondicionierius ir yra judesio aptikimo įvesties išvestis
· Tam reikia teigiamo laido, įžeminimo laido ir laido nuo „D9“prievado iki servo
· Servo kodas:
% grąžinkite variklį į 0 kampo padėtį
writePosition (s, 0);
aišku s
prompt = 'Norėdami tęsti, paspauskite bet kurį klavišą'
questdlg („AC pasirodė“, „atsakymas“, „Gerai“, „Gerai“)
galas
galas
Pauzė
pertrauka
galas
galas
*Speciali pastaba: dalis servo kodo yra integruota su optinio detektoriaus/fototransistoriaus kodu.