Sisällysluettelo:
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-13 06:57
Home System 3000 on laite, joka käyttää Arduinoa, lämpötila -anturia, pietsosummeria, optista ilmaisinta/valotransistoria ja servoa näyttääkseen tapoja parantaa kodin energiatehokkuutta.
Vaihe 1: Lämpötila -anturi
· Käytä virta- ja maadoitusjohtoja
mikro -ohjain leipälevyn sivulle
· Aseta lämpötila -anturi leipälevyyn ja vedä vastaavat virta- ja maadoitusjohdot sen mukaisesti
· Huomaa, että lämpötila -anturissa on kolme piikkiä ja keskimmäisessä piikissä on johto, joka kulkee portista "A0".
· Lämpötila -anturin koodi:
answer = questdlg ('Suorita arduino ja servon käynnistyskoodi', 'vastaus', 'Ok', 'Ok')
prompt = 'Aloita painamalla mitä tahansa näppäintä'
tauko
prompt1 = 'Aseta minimilämpötila'
x = tulo (kehote1)
prompt2 = 'Aseta maksimilämpötila'
y = syöttö (kehote2)
prompt3 = 'paina mitä tahansa näppäintä aloittaaksesi'
tauko
kuva
h = animoitu rivi;
kirves = gca;
ax. YGrid = 'päällä';
ax. YLim = [65 85];
stop = epätosi;
startTime = päivämääräaika ('nyt');
~ pysähdy
% Lue nykyinen jännitearvo
v = lukujännite (a, 'A0');
% Laske lämpötila jännitteestä (tietolomakkeen perusteella)
Lämpötila = (v - 0,5)*100;
Lämpötila = 9/5*TempC + 32;
% Hae nykyinen aika
t = datetime ('now') - startTime;
% Lisää pisteitä animaatioon
lisäosat (h, datenum (t), TempF)
% Päivitä akselit
ax. XLim = nollapiste ([t-sekuntia (15) t]);
datetick ('x', 'keeplimits')
vedetty
% Tarkista pysäytystila
stop = readDigitalPin (a, 'D12');
Vaihe 2: summeri
· Johto summerissa, jota käytetään ilmoittamaan äärimmäisen korkeasta tai äärimmäisen alhaisesta lämpötilasta
· Johtoa ei johdeta positiivisesta kolonnista summerin positiiviselle puolelle
· Sen sijaan lanka johdetaan summerin positiiviselta puolelta porttiin, jossa on merkintä "11"
Tätä käytetään myöhemmin kutsumaan summerin sijainti kirjoitetussa koodissa.
· Summerin koodi:
jos TempF> = y
disp ('sulje ovi, se on kuuma')
playTone (a, 'D11', 500, 1)
elseif TempF <= x
disp ('sulje ovi, se on kylmä')
playTone (a, 'D11', 250, 1)
loppuun
loppuun
Vaihe 3: Optinen ilmaisin/valotransistori
· Tämä anturi vaatii vastuksia, toisin kuin muut
· Varmista, että kaikki neljä anturin piikkiä ovat silmukassa johtojen kytkemisen jälkeen
· Anturi havaitsee valon muutoksen, joka kuvaa liikettä, ja tallentaa sen tulona
· Optisen ilmaisimen/valotransistorin koodi:
kirkas a
a = arduino ('/dev/tty.usbserial-DN01DVI2', 'Uno', 'Libraries', 'Servo');
prompt = 'Aseta valotaso kynnys'
z = syöttö (kehote)
lightLevel = 0
kun taas lightLevel ~ = -1
lightLevel = readVoltage (a, 'A1')
jos lightLevel> = z
answer = questdlg ('haluaisi muuttaa AC: tä?', 'Kyllä', 'Ei')
vaihda vastaus
tapaus 'Kyllä'
answer2 = questdlg ('Käännetäänkö AC ylös tai alas?', 'vastaus', 'Alas', 'Ylös', 'Ylös')
Vaihda vastaus 2
tapaus "alas"
s = servo (a, 'D10');
kulmalle = 0:.1:.5
writePosition (s, kulma);
current_position = readPosition (s);
nykyinen_asento = nykyinen_asento * 180;
% tulostus servomoottorin nykyisestä sijainnista
fprintf ('Nykyinen sijainti on %d / n', current_position);
% pieni viive tarvitaan, jotta servo voidaan sijoittaa
% kulma kertoi sen.
tauko (2);
loppuun
% palauta moottori 0 -kulma -asentoon
writePosition (s, 0);
kirkas s
prompt = 'Jatka painamalla mitä tahansa näppäintä'
questdlg ('AC pois päältä', 'vastaus', 'Ok', 'Ok')
tapaus 'ylös'
s = servo (a, 'D10');
kulmalle =.5:.1: 1
writePosition (s, kulma);
current_position = readPosition (s);
nykyinen_asento = nykyinen_asento * 180;
% tulostus servomoottorin nykyisestä sijainnista
fprintf ('Nykyinen sijainti on %d / n', current_position);
% pieni viive tarvitaan, jotta servo voidaan sijoittaa
% kulma kertoi sen.
tauko (2);
loppuun
Vaihe 4: Servo
· Servo edustaa
ilmastointilaite, ja se on liiketunnistustulon lähtö
· Se vaatii positiivisen johdon, maadoitusjohdon ja johdon portista "D9" servoon
· Servon koodi:
% palauta moottori 0 -kulma -asentoon
writePosition (s, 0);
kirkas s
prompt = 'Jatka painamalla mitä tahansa näppäintä'
questdlg ('AC käynnistyi', 'vastaus', 'Ok', 'Ok')
loppuun
loppuun
tauko
tauko
loppuun
loppuun
*Erityinen huomautus: osa servon koodista on integroitu optisen ilmaisimen/valotransistorin koodiin.