Advertisement
mayorBanana

Untitled

Jan 24th, 2016
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 4.31 KB | None | 0 0
  1. Program Porshny;
  2. uses Crt;
  3. var
  4.     p1, p2, p3 : Integer;
  5.     pa1, pa2, pa3: Integer;
  6.  
  7.     p: Integer;
  8.  
  9. (* Функция, снимающая показания давления с барометра*)
  10. function getPressure(): Integer
  11. begin
  12.     (* Барометр стандартного конструктора - аналоговое устройство, поэтому работа с ним должна вестись
  13.        через АЦП - Аналогово-Цифровой преобразователь.
  14.     *)
  15.     getPressure := 500000; (* пока просто вернем 500кПа *)
  16. end;
  17.  
  18.  
  19. (* Процедура отправки данных на радиомодуль *)
  20. procedure sendToRadio(data : ^byte, dataSize: Integer)
  21. begin
  22.     (* работаем с переферийным устройством микроконтроллера - USART. *)
  23. end;
  24.  
  25. (* Процедура включения/выключения мотора. *)
  26. (* Аргумент 1 - номер котора, который нужно включить/выключить *)
  27. (* Аргумент 2 - если нужно включить - true, если выключить - false) *)
  28. procedure turnMotor(motorNumber: byte, onOff: boolean)
  29. begin
  30.     (* здесь просто работаем с портом ввода/вывода, к которому через транзистор подключен мотор *)
  31. end;
  32.  
  33.  
  34.  
  35. begin
  36. (* Пороговые давления для запуска двигаталей закрывающих поршни *)
  37. p1 = 400000; (* настоящие значения, должны быть расчитаны при помощи барометрической формулы. Я вставил тут примерные *)
  38. p2 = 300000; (* Опять же стоит учесть, что барометрическая формула так же требует температуры, пока опустим это *)
  39. p3 = 200000;
  40.  
  41. (* Флаги срабатывания двигаталей - были ли они запущены ? Иначально все по нулям*)
  42. pa1 = false;
  43. pa2 = false;
  44. pa3 = false;
  45.  
  46. (* Тут нужно бы инициализировать перефирийные устройства микроконтроллера. Пока опустим это. *)
  47.  
  48.  
  49. (* Главный цикл *)
  50. while true do
  51. begin
  52.     p = getPressure(); (* Получаем текущее давление с датчика *)
  53.  
  54.     if p >= p1 and not pa1 then begin (* если пора запускать мотор 1 *)
  55.         turnMotor(1, true);  (* включаем *)
  56.         Sleep(1000); (* Мотор работает одну секунду *)
  57.         turnMotor(1, false ); (* выключаем *)
  58.         pa1 := true; (* ставим флаг того, что мотор уже был включен *)
  59.     end;
  60.  
  61.     if p >= p2 and not pa2 then begin (* если пора запускать мотор 2 *)
  62.         turnMotor(2, true);  (* включаем *)
  63.         Sleep(1000); (* Мотор работает одну секунду *)
  64.         turnMotor(2, false ); (* выключаем *)
  65.         pa2 := true; (* ставим флаг того, что мотор уже был включен *)
  66.     end;
  67.  
  68.     if p >= p3 and not pa3 then begin (* если пора запускать мотор 3 *)
  69.         turnMotor(3, true);  (* включаем *)
  70.         Sleep(1000); (* Мотор работает одну секунду *)
  71.         turnMotor(3, false ); (* выключаем *)
  72.         pa3 := true; (* ставим флаг того, что мотор уже был включен *)
  73.     end;
  74.  
  75.  
  76.     (*
  77.     Тут получаем температуру, формируем сообщение на Землю и отправляем через радиоканал, как того требует обязательная программа
  78.     Статусы моторов pa1, pa2, pa3 так же отправляем по радио, чтобы на Земле было понятно какие из них уже сработали а какие нет
  79.     Не буду приводить тут код, не помню как на паскале формировать бинарные структуры :(
  80.     *)
  81.  
  82.     Sleep(500);
  83.  
  84. end;
  85.  
  86.  
  87. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement