Innehållsförteckning:
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-13 06:58
Home System 3000 är en enhet som använder en Arduino, en temperatursensor, en piezo -summer, en optisk detektor/fototransistor och en servo för att visa sätt att förbättra hemmets energieffektivitet.
Steg 1: Temperatursensor
· Kör din ström och jordledningar från
mikrokontrollern på sidan av brödbrädet
· Placera temperatursensorn i brödbrädet och kör motsvarande kraft- och jordkablar i enlighet därmed
· Lägg märke till att temperatursensorn har tre stift, och den mellersta tappen har en kabel som går från porten "A0".
· Kod för temperaturgivare:
answer = questdlg ('Kör arduino och servo startkod', 'svar', 'Ok', 'Ok')
prompt = 'Tryck på valfri knapp för att börja'
paus
prompt1 = 'Ställ in minsta temperatur'
x = input (prompt1)
prompt2 = 'Ställ in högsta temperatur'
y = input (prompt2)
prompt3 = 'tryck på valfri knapp för att börja'
paus
figur
h = animerad linje;
ax = gca;
ax. YGrid = 'on';
ax. YLim = [65 85];
stopp = falskt;
startTime = datetime ('nu');
medan ~ sluta
% Läs strömspänningsvärdet
v = readVoltage (a, 'A0');
% Beräkna temperaturen från spänning (baserat på datablad)
TempC = (v - 0,5)*100;
TempF = 9/5*TempC + 32;
% Få aktuell tid
t = datetime ('nu') - startTime;
% Lägg poäng till animering
tilläggspunkter (h, datenum (t), TempF)
% Uppdatera axlar
ax. XLim = datenum ([t-sekunder (15) t]);
datetick ('x', 'keeplimits')
drawow
% Kontrollera stopptillstånd
stop = readDigitalPin (a, 'D12');
Steg 2: summer
· Koppla in summern som används för att signalera en extrem hög eller extrem låg temperaturavläsning
· Ingen tråd dras från den positiva kolumnen till den positiva sidan av summern
· I stället dras en kabel från summerns positiva sida till en port märkt "11"
Detta kommer att användas senare för att anropa summerns plats i den skrivna koden.
· Kod för summer:
om TempF> = y
disp ('stäng dörren det är varmt')
playTone (a, 'D11', 500, 1)
elseif TempF <= x
disp ('stäng dörren, det är kallt')
playTone (a, 'D11', 250, 1)
slutet
slutet
Steg 3: Optisk detektor/fototransistor
· Denna sensor kräver motståndskraft till skillnad från de andra
· Se till att alla fyra stift på sensorn ingår i slingan när du har anslutit kablarna
· Sensorn detekterar en förändring i ljuset som representerar rörelse och registrerar den som en ingång
· Kod för optisk detektor/fototransistor:
rensa a
a = arduino ('/dev/tty.usbserial-DN01DVI2', 'Uno', 'Libraries', 'Servo');
prompt = 'Ställ in tröskel för ljusnivå'
z = input (prompt)
lightLevel = 0
medan lightLevel ~ = -1
lightLevel = readVoltage (a, 'A1')
om lightLevel> = z
answer = questdlg ('skulle du vilja ändra AC?', 'Ja', 'Nej')
byta svar
fall 'Ja'
answer2 = questdlg ('Vrid AC upp eller ner?', 'svar', 'Ned', 'Upp', 'Upp')
byta svar 2
fall 'Down'
s = servo (a, 'D10');
för vinkel = 0:.1:.5
writePosition (s, vinkel);
current_position = readPosition (s);
current_position = current_position * 180;
% skriv ut aktuell position för servomotor
fprintf ('Nuvarande position är %d / n', aktuell_position);
% liten fördröjning krävs så att servon kan placeras vid
% vinkel berättade för den.
paus (2);
slutet
% sätt tillbaka motorn till 0 -vinkelläge
writePosition (s, 0);
klart s
prompt = 'Tryck på valfri knapp för att fortsätta'
questdlg ('AC avstängd', 'svar', 'Ok', 'Ok')
fall 'upp'
s = servo (a, 'D10');
för vinkel =.5:.1: 1
writePosition (s, vinkel);
current_position = readPosition (s);
current_position = current_position * 180;
% skriv ut aktuell position för servomotor
fprintf ('Nuvarande position är %d / n', aktuell_position);
% liten fördröjning krävs så att servon kan placeras vid
% vinkel berättade för den.
paus (2);
slutet
Steg 4: Servo
· Servon representerar
en luftkonditionering, och är en utsignal från rörelsedetekteringsingången
· Det kräver en positiv ledning, jordad tråd och en kabel från port "D9" till servon
· Kod för servo:
% sätt tillbaka motorn till 0 -vinkelläge
writePosition (s, 0);
klart s
prompt = 'Tryck på valfri knapp för att fortsätta'
questdlg ('AC vände', 'svar', 'Ok', 'Ok')
slutet
slutet
paus
ha sönder
slutet
slutet
*Särskild anmärkning: en del av koden för servon är integrerad med koden för den optiska detektorn/fototransistorn.