Índice:
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-13 06:58
O Home System 3000 é um dispositivo que usa um Arduino, um sensor de temperatura, uma campainha piezoelétrica, um detector óptico / fototransistor e um servo para exibir maneiras de melhorar a eficiência energética em casa.
Etapa 1: Sensor de temperatura
· Execute seus fios de alimentação e aterramento de
o microcontrolador ao lado da placa de pão
· Coloque o sensor de temperatura na placa do pão e ligue os cabos de alimentação e aterramento correspondentes
· Observe que o sensor de temperatura tem três pinos, e o pino do meio tem um fio que sai da porta "A0".
· Código para sensor de temperatura:
answer = questdlg ('Execute o arduino e o código de início do servo', 'response', 'Ok', 'Ok')
prompt = 'Pressione qualquer tecla para começar'
pausa
prompt1 = 'Definir temperatura mínima'
x = entrada (prompt1)
prompt2 = 'Definir temperatura máxima'
y = entrada (prompt2)
prompt3 = 'pressione qualquer tecla para começar'
pausa
figura
h = linha animada;
ax = gca;
ax. YGrid = 'ligado';
ax. YLim = [65 85];
stop = false;
startTime = datetime ('agora');
enquanto ~ pare
% Lê o valor da tensão atual
v = readVoltage (a, 'A0');
% Calcular a temperatura da tensão (com base na folha de dados)
TempC = (v - 0,5) * 100;
TempF = 9/5 * TempC + 32;
% Obtém a hora atual
t = datetime ('agora') - startTime;
% Adicionar pontos à animação
addpoints (h, datenum (t), TempF)
% Atualizar eixos
ax. XLim = datenum ([t-segundos (15) t]);
datetick ('x', 'keeplimits')
desenhar agora
% Verifique a condição de parada
parar = lerDigitalPin (a, 'D12');
Etapa 2: campainha
· Ligue a campainha que será usada para sinalizar uma leitura de temperatura extremamente alta ou extremamente baixa
· Nenhum fio é executado da coluna positiva para o lado positivo da campainha
· Em vez disso, um fio é passado do lado positivo da campainha para uma porta identificada como "11"
Isso será usado posteriormente para chamar a localização da campainha no código escrito.
· Código para campainha:
se TempF> = y
disp ('fecha a porta está quente')
playTone (a, 'D11', 500, 1)
elseif TempF <= x
disp ('fecha a porta está frio')
playTone (a, 'D11', 250, 1)
fim
fim
Etapa 3: Detector óptico / fototransistor
· Este sensor requer resistores ao contrário dos outros
· Certifique-se de que todos os quatro pinos do sensor estão incluídos no loop após conectar os fios
· O sensor detecta uma mudança na luz, representando o movimento, e registra como uma entrada
· Código para Detector Ótico / Fototransistor:
limpar um
a = arduino ('/ dev / tty.usbserial-DN01DVI2', 'Uno', 'Bibliotecas', 'Servo');
prompt = 'Definir limite de nível de luz'
z = entrada (prompt)
lightLevel = 0
enquanto lightLevel ~ = -1
lightLevel = readVoltage (a, 'A1')
se lightLevel> = z
answer = questdlg ('gostaria de alterar o AC?', 'Sim', 'Não')
mudar a resposta
caso 'Sim'
answer2 = questdlg ('Aumentar ou diminuir a CA?', 'response', 'Down', 'Up', 'Up')
mudar a resposta 2
case 'Down'
s = servo (a, 'D10');
para ângulo = 0:.1:.5
WritePosition (s, ângulo);
posição_atual = posição (ões) de leitura;
posição_atual = posição_atual * 180;
% imprime a posição atual do servo motor
fprintf ('A posição atual é% d / n', current_position);
% pequeno atraso é necessário para que o servo possa ser posicionado no
% angle disse a ele.
pausa (2);
fim
% traz o motor de volta para a posição de ângulo 0
writePosition (s, 0);
claro s
prompt = 'Pressione qualquer tecla para continuar'
questdlg ('AC recusado', 'resposta', 'Ok', 'Ok')
case 'Up'
s = servo (a, 'D10');
para ângulo = 0,5: 0,1: 1
WritePosition (s, ângulo);
posição_atual = posição (ões) de leitura;
posição_atual = posição_atual * 180;
% imprime a posição atual do servo motor
fprintf ('A posição atual é% d / n', current_position);
% pequeno atraso é necessário para que o servo possa ser posicionado no
% angle disse a ele.
pausa (2);
fim
Etapa 4: Servo
· O servo representa
um condicionador de ar e é uma saída da entrada de detecção de movimento
· Requer um fio positivo, fio terra e um fio da porta "D9" para o servo
· Código para servo:
% traz o motor de volta para a posição de ângulo 0
writePosition (s, 0);
claro s
prompt = 'Pressione qualquer tecla para continuar'
questdlg ('AC aumentou', 'resposta', 'Ok', 'Ok')
fim
fim
pausa
pausa
fim
fim
* Nota especial: parte do código do servo está integrado ao código do detector óptico / fototransistor.