Kazalo:
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-13 06:58
Home System 3000 je naprava, ki uporablja Arduino, temperaturni senzor, piezo zvočni signal, optični detektor/fototranzistor in servo za prikaz načinov za izboljšanje energetske učinkovitosti doma.
Korak: Temperaturni senzor
· Napajalne in ozemljitvene žice napeljite od
mikro krmilnik na strani plošče za kruh
· Temperaturno tipalo postavite v ploščo za kruh in ustrezno napeljite ustrezne napajalne in ozemljitvene žice
· Upoštevajte, da ima temperaturni senzor tri robove, srednji pa žico, ki vodi od vrat "A0".
· Koda za temperaturni senzor:
answer = questdlg ('Zaženite arduino in servo zagonsko kodo', 'response', 'Ok', 'Ok')
prompt = 'Za začetek pritisnite katero koli tipko'
pavza
prompt1 = 'Nastavi minimalno temperaturo'
x = vnos (poziv1)
prompt2 = 'Nastavi najvišjo temperaturo'
y = vnos (poziv2)
prompt3 = 'za začetek pritisnite katero koli tipko'
pavza
slika
h = animirana linija;
sekira = gca;
ax. YGrid = 'vklopljeno';
sekira. YLim = [65 85];
stop = napačno;
startTime = datetime ('zdaj');
medtem ko ~ stop
% Preberite vrednost trenutne napetosti
v = readVoltage (a, 'A0');
% Izračunajte temperaturo iz napetosti (na podlagi podatkovnega lista)
TempC = (v - 0,5)*100;
TempF = 9/5*TempC + 32;
% Pridobite trenutni čas
t = datetime ('now') - startTime;
% Animaciji dodajte točke
dodane točke (h, datumska številka (t), TempF)
% Posodobi osi
ax. XLim = datumska številka ([t-sekunde (15) t]);
datetick ('x', 'keeplimits')
drawnow
% Preverite stanje zaustavitve
stop = readDigitalPin (a, 'D12');
2. korak: Zvočni signal
· Žica v zvočniku, ki bo uporabljena za signaliziranje ekstremno visokih ali ekstremno nizkih temperaturnih odčitkov
· Nobena žica ne vodi od pozitivnega stolpca do pozitivne strani zvočnika
· Namesto tega je žica speljana s pozitivne strani zvočnika do vrat z oznako "11"
To bo kasneje uporabljeno za klicanje lokacije brenčalca v pisni kodi.
· Koda za zvočni signal:
če je TempF> = y
disp ('zaprite vrata, vroče je')
playTone (a, 'D11', 500, 1)
drugače če je TempF <= x
disp ('zaprite vrata, hladno je')
playTone (a, 'D11', 250, 1)
konec
konec
3. korak: Optični detektor/fototranzistor
· Ta senzor za razliko od drugih zahteva upore
· Prepričajte se, da so po priključitvi žic v zanko vključeni vsi štirje ročki senzorja
· Senzor zazna spremembo svetlobe, ki predstavlja gibanje, in jo zabeleži kot vhod
· Koda za optični detektor/fototranzistor:
počistite a
a = arduino ('/dev/tty.usbserial-DN01DVI2', 'Uno', 'Knjižnice', 'Servo');
prompt = 'Nastavi prag ravni svetlobe'
z = vnos (poziv)
lightLevel = 0
medtem ko je lightLevel ~ = -1
lightLevel = readVoltage (a, 'A1')
če je lightLevel> = z
answer = questdlg ('bi rad spremenil AC?', 'Da', 'Ne')
preklopi odgovor
primer 'da'
answer2 = questdlg ('Vklopi AC gor ali dol?', 'response', 'Down', 'Up', 'Up')
preklopi odgovor 2
etui "navzdol"
s = servo (a, 'D10');
za kot = 0:.1:.5
writePosition (s, kot);
current_position = readPosition (s);
trenutni položaj = trenutni položaj * 180;
% trenutni položaj tiskanja servo motorja
fprintf ('Trenutni položaj je %d / n', trenutna_pozicija);
% je potrebna majhna zamuda, da se lahko servo postavi na
% kota.
premor (2);
konec
% motor vrnite v 0 kotni položaj
writePosition (s, 0);
jasno s
prompt = 'Za nadaljevanje pritisnite katero koli tipko'
questdlg ('AC down down', 'response', 'Ok', 'Ok')
primer 'gor'
s = servo (a, 'D10');
za kot =.5:.1: 1
writePosition (s, kot);
current_position = readPosition (s);
trenutni položaj = trenutni položaj * 180;
% tiskanja trenutnega položaja servo motorja
fprintf ('Trenutni položaj je %d / n', trenutna_pozicija);
% je potrebna majhna zamuda, da se lahko servo postavi na
% kota.
premor (2);
konec
4. korak: Servo
· Servo predstavlja
klimatsko napravo in je izhod vhoda za zaznavanje gibanja
· Potrebuje pozitivno žico, ozemljitveno žico in žico od vrat "D9" do servomotorja
· Koda za servo:
% motor vrnite v 0 kotni položaj
writePosition (s, 0);
jasno s
prompt = 'Za nadaljevanje pritisnite katero koli tipko'
questdlg ('AC up up', 'response', 'Ok', 'Ok')
konec
konec
pavza
prekiniti
konec
konec
*Posebna opomba: nekatere kode za servo so integrirane s kodo za optični detektor/fototranzistor.