Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
Home System 3000 - это устройство, которое использует Arduino, датчик температуры, пьезозуммер, оптический детектор / фототранзистор и сервопривод для отображения способов повышения энергоэффективности дома.
Шаг 1: датчик температуры
· Прокладывайте провода питания и заземления от
микроконтроллер сбоку от макета
· Поместите датчик температуры в макетную плату и проложите соответствующие провода питания и заземления соответственно.
· Обратите внимание, что датчик температуры имеет три контакта, а средний контакт имеет провод, идущий от порта «A0».
· Код датчика температуры:
answer = questdlg ('Пожалуйста, запустите код запуска Arduino и сервопривода', 'ответ', 'Хорошо', 'Хорошо')
prompt = 'Нажмите любую клавишу, чтобы начать'
Пауза
prompt1 = 'Установить минимальную температуру'
x = ввод (подсказка1)
prompt2 = 'Установить максимальную температуру'
y = ввод (подсказка2)
prompt3 = 'нажмите любую клавишу, чтобы начать'
Пауза
фигура
h = анимированная линия;
ax = gca;
ax. YGrid = 'вкл';
ax. YLim = [65 85];
стоп = ложь;
startTime = datetime ('сейчас');
пока ~ стоп
% Прочитать текущее значение напряжения
v = readVoltage (a, 'A0');
% Рассчитать температуру по напряжению (на основе техпаспорта)
TempC = (v - 0,5) * 100;
TempF = 9/5 * TempC + 32;
% Получить текущее время
t = datetime ('сейчас') - startTime;
% Добавить очки к анимации
добавочные точки (h, datenum (t), TempF)
% Обновить оси
ax. XLim = datenum ([t-секунды (15) t]);
datetick ('x', 'keeplimits')
нарисованный
% Проверить состояние остановки
стоп = readDigitalPin (a, 'D12');
Шаг 2: зуммер
· Подключите зуммер, который будет сигнализировать об экстремально высоких или экстремально низких значениях температуры.
· Никакой провод не проходит от положительной колонки к положительной стороне зуммера.
· Вместо этого провод идет от положительной стороны зуммера к порту с меткой «11».
Это будет использоваться позже для вызова местоположения зуммера в написанном коде.
· Код для зуммера:
если TempF> = y
disp ('закрой дверь, жарко')
playTone (a, 'D11', 500, 1)
elseif TempF <= x
disp ('закрой дверь, холодно')
playTone (a, 'D11', 250, 1)
конец
конец
Шаг 3: оптический детектор / фототранзистор
· Этот датчик требует резисторов в отличие от других
· Убедитесь, что все четыре контакта датчика включены в петлю после подключения проводов.
· Датчик обнаруживает изменение света, представляющее движение, и записывает его в качестве входного сигнала.
· Код для оптического детектора / фототранзистора:
очистить
a = arduino ('/ dev / tty.usbserial-DN01DVI2', 'Uno', 'Библиотеки', 'Сервопривод');
prompt = 'Установить порог уровня освещенности'
z = ввод (подсказка)
lightLevel = 0
в то время как lightLevel ~ = -1
lightLevel = readVoltage (a, 'A1')
если lightLevel> = z
answer = questdlg ('хотите изменить AC?', 'Да', 'Нет')
переключить ответ
case 'Да'
answer2 = questdlg ('Увеличить или уменьшить кондиционер?', 'response', 'Вниз', 'Вверх', 'Вверх')
переключить ответ2
case 'Down'
s = сервопривод (a, 'D10');
для угла = 0:.1:.5
writePosition (s, angle);
current_position = readPosition (s);
текущая_позиция = текущая_позиция * 180;
% распечатать текущее положение серводвигателя
fprintf ('Текущая позиция% d / n', current_position);
% требуется небольшая задержка, чтобы сервопривод мог быть установлен на
% угол сказал ему.
пауза (2);
конец
% вернуть двигатель в положение 0 угла
writePosition (s, 0);
очистить s
prompt = 'Нажмите любую клавишу, чтобы продолжить'
questdlg ('кондиционер отключен', 'ответ', 'хорошо', 'хорошо')
case 'Up'
s = сервопривод (a, 'D10');
для угла =.5:.1: 1
writePosition (s, angle);
current_position = readPosition (s);
текущая_позиция = текущая_позиция * 180;
% распечатать текущее положение серводвигателя
fprintf ('Текущая позиция% d / n', current_position);
% требуется небольшая задержка, чтобы сервопривод мог быть установлен на
% угол сказал ему.
пауза (2);
конец
Шаг 4: сервопривод
· Сервопривод представляет
кондиционер, и является выходом входа обнаружения движения
· Требуется положительный провод, провод заземления и провод от порта "D9" к сервоприводу.
· Код сервопривода:
% вернуть двигатель в положение 0 угла
writePosition (s, 0);
очистить s
prompt = 'Нажмите любую клавишу, чтобы продолжить'
questdlg ('кондиционер включен', 'ответ', 'хорошо', 'хорошо')
конец
конец
Пауза
перерыв
конец
конец
* Специальное примечание: часть кода сервопривода интегрирована с кодом оптического детектора / фототранзистора.