Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Program Porshny;
- uses Crt;
- var
- p1, p2, p3 : Integer;
- pa1, pa2, pa3: Integer;
- p: Integer;
- (* Функция, снимающая показания давления с барометра*)
- function getPressure(): Integer
- begin
- (* Барометр стандартного конструктора - аналоговое устройство, поэтому работа с ним должна вестись
- через АЦП - Аналогово-Цифровой преобразователь.
- *)
- getPressure := 500000; (* пока просто вернем 500кПа *)
- end;
- (* Процедура отправки данных на радиомодуль *)
- procedure sendToRadio(data : ^byte, dataSize: Integer)
- begin
- (* работаем с переферийным устройством микроконтроллера - USART. *)
- end;
- (* Процедура включения/выключения мотора. *)
- (* Аргумент 1 - номер котора, который нужно включить/выключить *)
- (* Аргумент 2 - если нужно включить - true, если выключить - false) *)
- procedure turnMotor(motorNumber: byte, onOff: boolean)
- begin
- (* здесь просто работаем с портом ввода/вывода, к которому через транзистор подключен мотор *)
- end;
- begin
- (* Пороговые давления для запуска двигаталей закрывающих поршни *)
- p1 = 400000; (* настоящие значения, должны быть расчитаны при помощи барометрической формулы. Я вставил тут примерные *)
- p2 = 300000; (* Опять же стоит учесть, что барометрическая формула так же требует температуры, пока опустим это *)
- p3 = 200000;
- (* Флаги срабатывания двигаталей - были ли они запущены ? Иначально все по нулям*)
- pa1 = false;
- pa2 = false;
- pa3 = false;
- (* Тут нужно бы инициализировать перефирийные устройства микроконтроллера. Пока опустим это. *)
- (* Главный цикл *)
- while true do
- begin
- p = getPressure(); (* Получаем текущее давление с датчика *)
- if p >= p1 and not pa1 then begin (* если пора запускать мотор 1 *)
- turnMotor(1, true); (* включаем *)
- Sleep(1000); (* Мотор работает одну секунду *)
- turnMotor(1, false ); (* выключаем *)
- pa1 := true; (* ставим флаг того, что мотор уже был включен *)
- end;
- if p >= p2 and not pa2 then begin (* если пора запускать мотор 2 *)
- turnMotor(2, true); (* включаем *)
- Sleep(1000); (* Мотор работает одну секунду *)
- turnMotor(2, false ); (* выключаем *)
- pa2 := true; (* ставим флаг того, что мотор уже был включен *)
- end;
- if p >= p3 and not pa3 then begin (* если пора запускать мотор 3 *)
- turnMotor(3, true); (* включаем *)
- Sleep(1000); (* Мотор работает одну секунду *)
- turnMotor(3, false ); (* выключаем *)
- pa3 := true; (* ставим флаг того, что мотор уже был включен *)
- end;
- (*
- Тут получаем температуру, формируем сообщение на Землю и отправляем через радиоканал, как того требует обязательная программа
- Статусы моторов pa1, pa2, pa3 так же отправляем по радио, чтобы на Земле было понятно какие из них уже сработали а какие нет
- Не буду приводить тут код, не помню как на паскале формировать бинарные структуры :(
- *)
- Sleep(500);
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement