Cuprins:
2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-13 06:58
Home System 3000 este un dispozitiv care folosește un Arduino, un senzor de temperatură, un buzzer piezo, un detector optic / fototranzistor și un servo pentru a afișa modalități de îmbunătățire a eficienței energetice a casei.
Pasul 1: senzor de temperatură
· Executați-vă cablurile de alimentare și de împământare
microcontrolerul în partea laterală a plăcii pentru pâine
· Așezați senzorul de temperatură în placa de pâine și rulați corespunzător cablurile de alimentare și de împământare corespunzător
· Observați că senzorul de temperatură are trei vârfuri, iar vârful din mijloc are un fir care trece de la portul "A0".
· Cod pentru senzorul de temperatură:
answer = questdlg („Vă rugăm să rulați codul de pornire arduino și servo”, „răspuns”, „Ok”, „Ok”)
prompt = 'Apăsați orice tastă pentru a începe'
pauză
prompt1 = 'Setați temperatura minimă'
x = input (prompt1)
prompt2 = 'Setați temperatura maximă'
y = intrare (prompt2)
prompt3 = 'apăsați orice tastă pentru a începe'
pauză
figura
h = linia animată;
ax = gca;
ax. YGrid = 'on';
ax. YLim = [65 85];
stop = fals;
startTime = datetime ('acum');
while ~ stop
% Citiți valoarea tensiunii curente
v = readVoltage (a, 'A0');
% Calculați temperatura din tensiune (pe baza fișei tehnice)
TempC = (v - 0,5) * 100;
TempF = 9/5 * TempC + 32;
% Obțineți ora curentă
t = datetime ('acum') - startTime;
% Adăugați puncte la animație
puncte de adăugare (h, datenum (t), TempF)
% Actualizați axele
ax. XLim = datenum ([t-secunde (15) t]);
datetick ('x', 'keeplimits')
drawow
% Verificați starea de oprire
stop = readDigitalPin (a, 'D12');
Pasul 2: Buzzer
· Sârmă în buzzer care va fi utilizată pentru a semnaliza o citire extremă a temperaturii ridicate sau extrem de scăzute
· Niciun fir nu este rulat de la coloana pozitivă la partea pozitivă a soneriei
· În schimb, un fir este rulat din partea pozitivă a soneriei către un port etichetat „11”
Aceasta va fi utilizată ulterior pentru a apela locația sonorului în codul scris.
· Cod pentru buzzer:
dacă TempF> = y
disp („închide ușa, e cald”)
playTone (a, „D11”, 500, 1)
elseif TempF <= x
disp („închide ușa, e frig”)
playTone (a, „D11”, 250, 1)
Sfârșit
Sfârșit
Pasul 3: Detector optic / fototranzistor
· Acest senzor necesită rezistențe spre deosebire de celelalte
· Asigurați-vă că toate cele patru vârfuri ale senzorului sunt incluse în buclă după conectarea firelor
· Senzorul detectează o modificare a luminii, reprezentând mișcarea și o înregistrează ca intrare
· Cod pentru detector optic / fototranzistor:
clar un
a = arduino ('/ dev / tty.usbserial-DN01DVI2', 'Uno', 'Biblioteci', 'Servo');
prompt = 'Setați pragul nivelului de lumină'
z = intrare (prompt)
lightLevel = 0
în timp ce lightLevel ~ = -1
lightLevel = readVoltage (a, 'A1')
dacă lightLevel> = z
answer = questdlg („ați dori să modificați AC?”, „Da”, „Nu”)
comuta răspuns
cazul „Da”
answer2 = questdlg („Întoarceți AC în sus sau în jos?”, „răspuns”, „Jos”, „Sus”, „Sus”)
comuta răspuns2
cazul „jos”
s = servo (a, 'D10');
pentru unghiul = 0:.1:.5
writePosition (s, angle);
current_position = readPosition (s);
current_position = current_position * 180;
% tipăriți poziția curentă a servomotorului
fprintf ('Poziția actuală este% d / n', poziția_curentă);
Este necesară o mică întârziere, astfel încât servo să poată fi poziționat la
% unghi spus.
pauză (2);
Sfârșit
% readuceți motorul în poziția 0 unghi
writePosition (s, 0);
clar s
prompt = 'Apăsați orice tastă pentru a continua'
questdlg („AC a refuzat”, „răspuns”, „Ok”, „Ok”)
cazul „Sus”
s = servo (a, 'D10');
pentru unghiul =.5:.1: 1
writePosition (s, angle);
current_position = readPosition (s);
current_position = current_position * 180;
% poziția curentă de imprimare a servomotorului
fprintf ('Poziția actuală este% d / n', poziția_curentă);
Este necesară o mică întârziere, astfel încât servo să poată fi poziționat la
% unghi spus.
pauză (2);
Sfârșit
Pasul 4: Servo
· Servo reprezintă
un aparat de aer condiționat și este o ieșire a intrării de detectare a mișcării
· Necesită un fir pozitiv, un fir de împământare și un fir de la portul "D9" la servo
· Cod pentru servo:
% readuceți motorul în poziția 0 unghi
writePosition (s, 0);
clar s
prompt = 'Apăsați orice tastă pentru a continua'
questdlg („AC a apărut”, „răspuns”, „Ok”, „Ok”)
Sfârșit
Sfârșit
pauză
pauză
Sfârșit
Sfârșit
* Notă specială: o parte din codul pentru servo este integrat cu codul pentru detectorul optic / fototranzistor.