рд╕реЗрдВрд╕рд░ рд░реАрдбрд┐рдВрдЧ рдФрд░ рдЙрдирдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рд╕рдВрдЧреНрд░рд╣



рд▓реЛрдЧ рд╕реБрдВрджрд░ рдкреНрд░рд╕реНрддреБрддрд┐рдпреЛрдВ рдХреЛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВред рд╕реБрдВрджрд░ рдЪрд┐рддреНрд░, рдХреБрдЫ рдкрд╛рда, рдмрджрд▓рддреА рд╕реНрд▓рд╛рдЗрдбред рдПрдХ рд╕реБрдВрджрд░ рддрд╕реНрд╡реАрд░ рдЖрдкрдХреЛ рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдЬрд╛рдирдХрд╛рд░реА рдЬрд▓реНрджреА рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ, рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдВрд╡рд╛рдж рдХрд░рддреА рд╣реИред рд╣рдо рд╕рднреА рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ред рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ "рдПрдХ рд╣рд╛рдереА рдФрд░ рдПрдХ рд╕рд╛рдВрдк рдХреЛ рдХреИрд╕реЗ рдкрд╛рд░ рдХрд░реЗрдВ"?

рдПрдХ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдХрд▓реНрдкрдирд╛ рдХреИрд╕реЗ рдХрд░реЗрдВ рдПрдХ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдпрд╛ FPGA рдХреЗ рдЕрдВрджрд░ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░реЗрдВ? рдпрд╛ рдпрд╣ рдХреИрд╕реЗ рджрд┐рдЦрд╛рдПрдВ рдХрд┐ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдпрд╛ рдПрдлрдкреАрдЬреАрдП рдкрд░ рд▓рд╛рдЧреВ рдкреВрд░реЗ рд╕реНрд╡рдЪрд╛рд▓рди рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдЕрдВрджрд░ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ?

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореБрдЭреЗ рд╕рд╣реА рдЙрддреНрддрд░ рдкрддрд╛ рд╣реИ - рдЖрдкрдХреЛ SCADA рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
SCADA рдкрд░реНрдпрд╡реЗрдХреНрд╖реА рдирд┐рдпрдВрддреНрд░рдг рдФрд░ рдбреЗрдЯрд╛ рдЕрдзрд┐рдЧреНрд░рд╣рдг, рдкрд░реНрдпрд╡реЗрдХреНрд╖реА рдирд┐рдпрдВрддреНрд░рдг рдФрд░ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдо рдЖрд╕рд╛рди рддрд░реАрдХреЛрдВ рдХреА рддрд▓рд╛рд╢ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╣рдо рдЕрдкрдиреА рд╕рд╛рдЗрдХрд┐рд▓ рдХрд╛ рдереЛрдбрд╝рд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдореИрдВ рдирд┐рдпрдВрддреНрд░рдг рдмреЛрд░реНрдб рд╕реЗ рд╕реЗрдВрд╕рд░ рдФрд░ рд╕реЗрдВрд╕рд░ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдкрдиреА рд╕рд░рд▓ рд╡рд┐рдзрд┐ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдпрд╣рд╛рдВ, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рддреАрди рдШрдЯрдХреЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:


рддреЛ, рдХреНрд░рдо рдореЗрдВ рдореИрдВ рдмрддрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред

рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ред


рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдХрдВрдкреНрдпреВрдЯрд░ рдпрд╛ рд▓реИрдкрдЯреЙрдк рд╕реЗ тАЛтАЛрдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рджреЛ рднреМрддрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рд╣реИрдВ: рдИрдерд░рдиреЗрдЯ / рд╡рд╛рдИрдлрд╛рдИ рдпрд╛ рдпреВрдПрд╕рдмреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рдХрдиреЗрдХреНрд╢рдиред "рд╡рд╛рд╕реНрддрд╡рд┐рдХ" рд╕рдорд╛рдирд╛рдВрддрд░ рдФрд░ рд╕реАрд░рд┐рдпрд▓ рдкреЛрд░реНрдЯ рд▓рдЧрднрдЧ рдЕрддреАрдд рдХреА рдмрд╛рдд рд╣реИред рдпрд╣ рдЙрдирдХреЗ рд╕рд╛рде рдЖрд╕рд╛рди рдерд╛ред рдмреЗрд╢рдХ, рд╡реЗ рдЕрднреА рднреА рдорд┐рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рдЖрдк рджреЗрдЦрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЗрд╕ рджрд┐рд╢рд╛ рдореЗрдВ рд╕реЛрдЪрдирд╛ рдмреЗрд╣рддрд░ рдирд╣реАрдВ рд╣реИред

рдИрдерд░рдиреЗрдЯ рдЕрдм рддрдХ рдПрдХ рддрд░рдлред рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд╕рдВрдЪрд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЯреАрд╕реАрдкреА / рдЖрдИрдкреА рд╕реНрдЯреИрдХ рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рдПрдХ рдУрдПрд╕, рдЖрдорддреМрд░ рдкрд░ рд▓рд┐рдирдХреНрд╕ рдпрд╛ рдпреВрдХреНрд▓рд┐рдирдХреНрд╕ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рдлрд┐рд░ рдЖрдкрдХреЛ рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗрдЯрдЕрдк рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рдЖрдИрдкреА рдПрдбреНрд░реЗрд╕ рдХреНрдпрд╛ рд╣реИ? рдХреНрдпрд╛ рдпрд╣ рд╕реНрдерд┐рд░ рдпрд╛ рдЧрддрд┐рд╢реАрд▓ рд╣реИ? рдХреНрдпрд╛ рдореБрдЦреМрдЯрд╛ рдФрд░ рдкреНрд░рд╡реЗрд╢ рджреНрд╡рд╛рд░? рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИред

рдпреВрдПрд╕рдмреА рдмрд╣реБрдд рд╕рд░рд▓ рд▓рдЧрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХрдИ рдиреБрдХрд╕рд╛рди рд╣реИрдВ: рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рдХреМрди рд╕рд╛ рд╡рд░реНрдЧ / рдЙрдкрд╡рд░реНрдЧ? рдХреНрдпрд╛ рдЙрд╕реЗ рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдпрд╛ рдЙрд╕реА рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рдорд╛рдирдХ рдЪрд╛рд▓рдХ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ?
рдФрд░ рдлрд┐рд░, рдПрдХ рд╡рд░реНрдЧ рдореЗрдВ рд╡рд╛рдкрд╕ - рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ рдпреВрдПрд╕рдмреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реАрд░рд┐рдпрд▓ рдкреЛрд░реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рд╕рдмрд╕реЗ рд╕рд░рд▓ рдорд╛рдорд▓реЗ рдореЗрдВ, USB2Serial рдЬреИрд╕реА рдбреЛрд░рд┐рдпрд╛рдВ рд╣реИрдВред рдЦреИрд░, рдпрд╛ рдмреЛрд░реНрдбреЛрдВ рдФрд░ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдврд╝рд┐рдпрд╛ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ - рд╡рд┐рднрд┐рдиреНрди рдПрдлрдЯреАрдбреАрдЖрдИ рдЪрд┐рдкреНрд╕ред

рдареАрдХ рд╣реИ, рдЕрднреА рднреА рдпреВрдПрд╕рдмреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реАрд░рд┐рдпрд▓ рдкреЛрд░реНрдЯ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред рдФрд░ рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рд╡рд░реНрдгреЛрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреЗ рд░реВрдк рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рддреЛ рдпрд╣ рдФрд░ рднреА рд╕рд░рд▓ рд╣реИ: рд╕реЗрдВрд╕рд░ рд░реАрдбрд┐рдВрдЧ рдХреЛ "SENSOR_NAME = VALUE" рдлрд╝реЙрд░реНрдо рдХреА рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рдорддрджрд╛рди рд╕реЗрдВрд╕рд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрдирдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдЯреНрд░реЗрд▓рд░ рдпрд╛ рд░реАрдб рд╕реНрд╡рд┐рдЪ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрдЪрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ "but0 = 1" рдпрд╛ "but1 = 0"ред рддрд╛рдкрдорд╛рди рдорд╛рди рд╕реНрдЯреНрд░рд┐рдВрдЧ "t0 = 36.6" рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХреИрд░рд┐рдЬ рд░рд┐рдЯрд░реНрди рдХреИрд░реЗрдХреНрдЯрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рд▓рд╛рдЗрдиреНрд╕ рдХреЛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: 0x0D 0x0Aред

рддреЛ, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЖрдк рдмрд╕ рдкреБрдЯреНрдЯреА рдХреА рддрд░рд╣ рдПрдХ рдЯрд░реНрдорд┐рдирд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдирд┐рдпрдВрддреНрд░рдХ рд╕реЗ рд╕реЗрдВрд╕рд░ рд░реАрдбрд┐рдВрдЧ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред

рдирд┐рдпрдВрддреНрд░рдХред


рдореЗрд░рд╛ рдирд┐рдпрдВрддреНрд░рдХ Altera Cyclone III FPGA рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдордВрдЧрд▓ рд░реЛрд╡рд░ 2 рдмреЛрд░реНрдб рд╣реИред рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЗрд╕ рдкрд░ рдХрд┐рдП рдЧрдП рдХреБрдЫ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдмрд╛рд░ рдЬрдм рд╣рдо рдПрдХ рд╕реНрд╡рдЪреНрдЫ FPGA FM рд░реЗрдбрд┐рдпреЛ рдЯреНрд░рд╛рдВрд╕рдореАрдЯрд░ рдкрд░ рдЗрд╕ рдмреЛрд░реНрдб рдкрд░ рдмрдиреЗред рдФрд░ рд╣рдордиреЗ рдЗрд╕ рдкрд░ рдПрдХ USB рдЯреНрд░реИрдХрд░ рднреА рдмрдирд╛рдпрд╛ред рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд╣реИрдВред

рдпрд╣рд╛рдБ рдПрдХ рдРрд╕рд╛ рдмреЛрд░реНрдб рд╣реИ:



рдмреЛрд░реНрдб рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 2 рдмрдЯрди рд╣реИрдВ - рдпреЗ рдореЗрд░реЗ рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рджреЛ рд╕реЗрдВрд╕рд░ рд╣реИрдВред
рдореИрдВрдиреЗ ds18b20 рдерд░реНрдорд╛рдореАрдЯрд░ рдЪрд┐рдк рдХреЛ рднреА рдЬреЛрдбрд╝рд╛ - рдпрд╣ рджреВрд╕рд░рд╛ рд╕реЗрдВрд╕рд░ рд╣реИред
рдЖрдк ADC рдмреЛрд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреЛ рдорд╛рдкрдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдм рддрдХ, рдпрд╣рд╛рдВ рд╕реЗрдВрд╕рд░ рдХреЗ рдмрдЬрд╛рдп рдХреЗрд╡рд▓ рдПрдХ рдЪрд░ рдЕрд╡рд░реЛрдз рд╣реИред

рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдПрдлрдЯреАрдбреАрдЖрдИ рдПрдлрдЯреА 2232 рдПрдЪрдПрд▓ рдорд╛рдЗрдХреНрд░реЛрдХреНрд░рд┐рд╕рд┐рдЯ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмреЛрд░реНрдб рдкрд░ рд╣реИ, рдЬреЛ рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рд╕реАрд░рд┐рдпрд▓ рдкреЛрд░реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдпреВрдПрд╕рдмреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рджрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 12Mbit / s рд╣реИред рдпрд╣ рд╕рд╢рд░реНрдд 1.2 MB / s рд╣реИред рдпрджрд┐, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмреЛрд░реНрдб рдкреНрд░рддреНрдпреЗрдХ 100 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдкрд░ рд╕реЗрдВрд╕рд░ рдХрд╛ рдЪреБрдирд╛рд╡ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╕рд░реНрд╡реЗрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП, рдЖрдк 100Kbytes рд╕реЗ рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ рдХреЛ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗред

рдЕрдм рдореИрдВ рдмреЛрд░реНрдб рдФрд░ FPGA рдЪрдХреНрд░рд╡рд╛рдд III рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рд╣реИред рдпрд╣ рдЖрд▓реЗрдЦ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдХреЛ рдХреИрд╕реЗ рдкрд░рд╛рдЧрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдо рд╕реАрд░рд┐рдпрд▓ рдкреЛрд░реНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред 3 рдбреА рдШрдЯрдХ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдкрд░ рдЖрдЧреЗ рдмрдврд╝рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ - рдПрдХ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рд╕реЗрдВрд╕рд░ рдореВрд▓реНрдпреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдоред

рдбреЗрдЯрд╛ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдкреНрд░реЛрдЧреНрд░рд╛рдоред


рдпрд╣рд╛рдБ рдореИрдВ рд╕рдм рдХреБрдЫ рдЬрд▓реНрджреА рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдХрд┐рд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдХреНрдпрд╛ рд▓рд┐рдЦрдирд╛ рд╣реИ рддрд╛рдХрд┐ рд▓рд┐рдЦрдирд╛, рдмрджрд▓рдирд╛, рдкреВрд░рдХ рд╣реЛрдирд╛ рдЖрд╕рд╛рди рд╣реЛ?

рдореИрдВ рдЕрдЬрдЧрд░ рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реВрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдХреЛрдИ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдл рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдПрдХ рд╣рд╛рд░рд╛рдЬрд┐рддреЗрд▓реА рдиреЗ рдХрд╣рд╛ (рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореБрдЭреЗ рдпрд╛рдж рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреМрди рд╣реИ) - рдореИрдВ "рдЕрдкрдиреЗ рдЕрдЬрдЧрд░ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдирд╛" рднреА рдЪрд╛рд╣реВрдВрдЧрд╛ред

рдЗрд╕рд▓рд┐рдП, рдЪреВрдВрдХрд┐ рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЪрд┐рддреНрд░рдордп рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдмрд┐рд▓реНрдЯ-рдЗрди рдЯрд┐рдВрдХрд░ рдкрд╛рдЗрдерди рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред рдореИрдВ рд╕реАрд░рд┐рдпрд▓ рдкреЛрд░реНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреАрд╕рд░рд┐рдпрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ред

рдореИрдВ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╡рд░реНрдЧ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ - рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реЗрдВрд╕рд░ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдХрдХреНрд╖рд╛ред

рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╡рд░реНрдЧ рдПрдХ рдмрд╛рдЗрдирд░реА рд╕реЗрдВрд╕рд░ рд╣реИред рдпрд╣ рдПрдХ рдмрдЯрди, рдПрдХ рдЯреНрд░реЗрд▓рд░, рдПрдХ рд░реАрдб рд╕реНрд╡рд┐рдЪ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдорд╛рди 0 рдпрд╛ 1. рд╣реИрдВред рд╕рдВрдмрдВрдзрд┐рдд рдкрд╛рдпрдирд┐рдпрд░ рд╕реЗрдВрд╕рд░ рдмрд┐рдирд╕реЗрдВрд╕рд░ рд╡рд░реНрдЧ рдХреЗрд╡рд▓ 2 рд░рд╛рдЬреНрдпреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд░рд╛рдЬреНрдп рдЕрдкрдиреА рдЫрд╡рд┐ рдЦреБрдж рдмрдирд╛рдПрдВред рдЫрд╡рд┐ рдкреГрд╖реНрдарднреВрдорд┐ рдЫрд╡рд┐ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╡рд┐рдВрдбреЛ рдХреЗ рдирд┐рд╢реНрдЪрд┐рдд рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╕реЗ рдЬреБрдбрд╝реА рд╣реБрдИ рд╣реИред



рдЬреИрд╕реЗ рд╣реА рдорд╛рди "0" рдЖ рдЧрдпрд╛ рд╣реИ, рд╣рдо рдкрд╣рд▓реА рддрд╕реНрд╡реАрд░ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВред рдпрджрд┐ рдорд╛рди "1" рдЖрдпрд╛ рд╣реИ, рддреЛ рд╣рдо рджреВрд╕рд░реА рддрд╕реНрд╡реАрд░ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВред рдЪрд┐рддреНрд░ рдХреЛрдИ рднреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ - рдпрд╣ рд╕рдм рд╣рдорд╛рд░реА рдХрд▓реНрдкрдирд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред

рдпрд╣рд╛рдБ рдЗрд╕ рд╡рд░реНрдЧ рд╣реИ:
#!/usr/bin/env python import Tkinter from Tkinter import * root = Tk() class BinSensor: def __init__(self,name,img0,img1,x,y): self.name=name self.x=x self.y=y self.img0=PhotoImage(file=img0) self.img1=PhotoImage(file=img1) self.val=0 self.label_img=Label(root,image=self.img0) self.label_img.place(x=self.x,y=self.y) def set(self,state): if(self.val==state): return self.val=state if( int(state)==0 ): self.label_img.configure(image=self.img0) else: self.label_img.configure(image=self.img1) 

__In____ рдлрд╝рдВрдХреНрд╢рди, рдЬрд┐рд╕реЗ рддрдм рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдХреНрд▓рд╛рд╕ рдХреЛ рддрддреНрдХрд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
рдирд╛рдо - рд╕реЗрдВрд╕рд░ рдирд╛рдо
Img0 рдФрд░ img1 рдЫрд╡рд┐ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдирд╛рдо рд╕реЗрдВрд╕рд░ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
X рдФрд░ y рдЙрд╕ рд╡рд┐рдВрдбреЛ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╕реЗрдВрд╕рд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рд╕реЗрдВрд╕рд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╕рдордп, рдПрдХ рддрд╕реНрд╡реАрд░ рдХреЗ рд╕рд╛рде рдПрдХ рд▓реЗрдмрд▓ рддреБрд░рдВрдд рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЯрд┐рдВрдХрд░ рд╡рд┐рдВрдбреЛ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╕реЗрдЯ рдлрд╝рдВрдХреНрд╢рди рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреИрд░рд╛рдореАрдЯрд░ рд▓реЗрддрд╛ рд╣реИ - рдпрд╣ рд╕реЗрдВрд╕рд░ "0" рдпрд╛ "1" рдХреА рдирдИ рд╕реНрдерд┐рддрд┐ рд╣реИред рдирдП рдореВрд▓реНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд▓реЗрдмрд▓ рдХреЗ рдЕрдВрджрд░ рдХрд╛ рдЪрд┐рддреНрд░ рдкреБрди: рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рд╕рдм рд╣реИред

рдЗрд╕реА рддрд░рд╣, рджреВрд╕рд░рд╛ vBarSensor рд╡рд░реНрдЧ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред
 class vBarSensor: def __init__(self,name,scale,min,max,x,y,w,h): self.name=name self.scale=scale self.x=x self.y=y self.h=h self.val=min self.min=min self.max=max self.delta=max-min h1=self.h*(self.val-self.min)/self.delta h0=self.h-h1 self.canv0 = Canvas(root, width = w, height = h0, bg = "lightblue", bd=1, relief='ridge') self.canv1 = Canvas(root, width = w, height = h1, bg = "red", bd=1, relief='ridge') self.barLabel = Label(root, text = "0") self.canv0.place(x=self.x,y=self.y) self.canv1.place(x=self.x,y=self.y+h0) self.barLabel.place(x=self.x,y=self.y+h+5) def set(self,newval): #newval is signed hex string like "83A5" val=int(newval,16) if(val>0x7fff): val=-val val=val/self.scale if(self.val==val): return self.val=val h1=self.h*(self.val-self.min)/self.delta h0=self.h-h1 self.barLabel.configure(text=str(self.val)) self.canv0.configure(height = h0) self.canv1.configure(height = h1) self.canv1.place(y=self.y+h0) 

рдпрд╣ рд╡рд░реНрдЧ рд░реЗрдЦрд╛рдВрдХрди рдПрдХ рдерд░реНрдорд╛рдореАрдЯрд░ рдкреНрд░рдХрд╛рд░ рд╕реЗрдВрд╕рд░ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред рд╕реЗрдВрд╕рд░ рд╕реЗ рдорд╛рди рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реАрдорд╛ рдореЗрдВ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рд╕рд╛рде рд╣реА, рдЗрд╕ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рд╕реЗрдВрд╕рд░ рдХрд╛ рдирд╛рдо рдмрддрд╛рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдерд░реНрдорд╛рдореАрдЯрд░ рдХрд╛ рдПрдХ рдиреНрдпреВрдирддрдо рдиреНрдпреВрдирддрдо рдФрд░ рдЕрдзрд┐рдХрддрдо рдореВрд▓реНрдп рд╣реИ, рдФрд░ рд╣рдо рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд╡рд┐рдВрдбреЛ рдореЗрдВ рдХреЙрд▓рдо рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ, рдХреЙрд▓рдо рдХреА рдЪреМрдбрд╝рд╛рдИ рдФрд░ рдКрдВрдЪрд╛рдИ рдХрд╛ рднреА рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВред

рдерд░реНрдорд╛рдореАрдЯрд░ рд╕реНрддрдВрдн, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдерд╛, рджреЛ рднрд╛рдЧ рд╣реЛрддреЗ рд╣реИрдВ, рдирд┐рдЪрд▓рд╛ рд▓рд╛рд▓ рдФрд░ рдКрдкрд░реА рдкреНрд░рдХрд╛рд╢ред
рдПрдХ рдЯрд┐рдВрдХрд░ рдХреИрдирд╡рд╛рд╕ рдмрдирд╛рдирд╛ рдФрд░ рдЙрд╕ рдкрд░ рдЗрди рд╕реНрддрдВрднреЛрдВ рдХреЛ рдЦреАрдВрдЪрдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдореИрдВрдиреЗ рдЧрд▓рдд рдХрд┐рдпрд╛ред рдореИрдВрдиреЗ рд╡рд┐рднрд┐рдиреНрди рд░рдВрдЧреЛрдВ рдХреЗ рджреЛ рдХреИрдирд╡рд╕ рдмрдирд╛рдП рдФрд░ рд╕реЗрдЯ () рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдореИрдВрдиреЗ рдЙрдирдХреЗ рд▓рд┐рдП рдКрд░реНрдзреНрд╡рд╛рдзрд░ рдЖрдХрд╛рд░ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╡реИрд╕реЗ, рдпрджрд┐ рдЖрдк рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд╡рд┐рдВрдбреЛ рдореЗрдВ рдерд░реНрдорд╛рдореАрдЯрд░ рдХреА рдЫрд╡рд┐ рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕реЗ рд╡рд┐рдВрдбреЛ рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рдЫрд╡рд┐ рдкрд░ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рдХреЗ рдКрдкрд░ vBarSensor рдЙрджрд╛рд╣рд░рдг рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред



рд╢рд╛рдпрдж рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

рдореИрдВрдиреЗ рд╕реЗрдВрд╕рд░ рд░реАрдбрд┐рдВрдЧ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рдордп рдХреЗ рд╕рд╛рде рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдЧреНрд░рд┐рдбрдбрд┐рд╕рдкреНрд▓реЗ рдХреНрд▓рд╛рд╕ рд▓рд┐рдЦрд╛ред рдореИрдВ рдпрд╣рд╛рдВ рдЗрд╕рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рд╣рд╡рд╛рд▓рд╛ рдирд╣реАрдВ рджреВрдВрдЧрд╛, рддрд╛рдХрд┐ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рд▓реЗрдЦ рдХреЛ рдЕрдзрд┐рднрд╛рд░ рди рдбрд╛рд▓реЗрдВред рдЬрд┐рдиреНрд╣реЗрдВ рд╕рд╛рдЗрдЯ рд╕реЗ рдкреВрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рд╕рд╛рде рд╣реА рдПрд▓реНрдЯрд░реНрдЯрд╛ рдХреНрд╡рд╛рд░реНрдЯрд╕ II рдХреЗ рд▓рд┐рдП FPGAs рдХреЗ рд╕реНрд░реЛрдд рдХреЗ рд╕рд╛рдеред

рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд░рдо alls.py рджрд┐рдЦрд╛рдПрдЧрд╛ред рдпрд╣рд╛рдВ рдмрд╣реБрдд рд╕реА рдЪреАрдЬреЗрдВ рдирд╣реАрдВ рд╣реИрдВ:
 #!/usr/bin/env python import sensor from sensor import * import serial from serial import * class AllSensors: def __init__(self): #open serial port self.s=serial.Serial("COM27",115200,timeout=10) #load background image self.bgnd=PhotoImage(file="bgnd.gif") self.label_bgnd=Label(root,image=self.bgnd) self.label_bgnd.place(x=0,y=0) #add all sensors and indicators self.all=[] self.all.append( BinSensor("b0","f0.gif","f1.gif",32,32) ) self.all.append( BinSensor("b1","f0.gif","f1.gif",32,128) ) self.all.append( vBarSensor("a0",1,0,255,128,32,32,160) ) self.all.append( GridDisplay("t0",16,-55,125,10,16,180,32,256,160) ) def set(self,name,val): for sens in self.all: if(sens.name==name): sens.set(val) return def setline(self,line): p=line.split("=") if(len(p)==2): self.set( p[0], p[1] ) def run(self): while(1): line=self.s.readline() line=line.rstrip() #print(line) self.setline(line) root.update() a=AllSensors() a.run() 

рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ, рдореИрдВ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрд░рд┐рдпрд▓ рдкреЛрд░реНрдЯ рдХреЛ рдЦреЛрд▓рддрд╛ рд╣реВрдВред рдореИрдВ рдкреГрд╖реНрдарднреВрдорд┐ рдЫрд╡рд┐ рдХреЛ рдЦрд┐рдбрд╝рдХреА рдореЗрдВ рд▓реЛрдб рдХрд░рддрд╛ рд╣реВрдВред рдореИрдВ рд╕рднреА рдЙрдкрд▓рдмреНрдз рд╕реЗрдВрд╕рд░ рдХреА рд╕реВрдЪреА рдмрдирд╛рддрд╛ рд╣реВрдВред рдЗрд╕рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдкреЛрд░реНрдЯ рд╕реЗ рд▓рд╛рдЗрдиреЗрдВ рдкрдврд╝реАрдВ, рдЙрдиреНрд╣реЗрдВ рдЕрд╕рдВрддреБрд╖реНрдЯ рдХрд┐рдпрд╛ рдФрд░ рд╕реЗрдВрд╕рд░ рдХреЗ рдирд╛рдо рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд░реНрдЧ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдирдпрд╛ рдорд╛рди рдкрд╛рд╕ рдХрд┐рдпрд╛ред

рдкрд╛рдпрдерди рд╕реЗ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЪрд▓рд╛рдирд╛ рдЖрд╕рд╛рди рд╣реИ: "рд╕рднреА рдЖрдпрд╛рдд рдХрд░реЗрдВ", рдЬрд╣рд╛рдВ рд╕рднреА рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдирд╛рдо рд╣реИ, рдСрд▓рд╕реНрдкреА рдлрд╝рд╛рдЗрд▓ред рдпрд╣ рдореЗрд░рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЕрдм рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:



рдпрд╣рд╛рдВ рдПрдХ рд╡реАрдбрд┐рдпреЛ рд╣реИ рдЬреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдмрд╕ рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВ, рдореИрдВ рддрд╛рдкрдорд╛рди рд╕реЗрдВрд╕рд░ рдХреЛ рдЧрд░реНрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЗрдпрд░рдбреНрд░рд╛рдпрд░ рдЪрд╛рд▓реВ рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдзреНрд╡рдирд┐ рдХреЛ рдЦрд░рд╛рдм рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ):



рдЕрдм рдЬрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ "рдХрдВрдХрд╛рд▓" рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рддреЛ рдЖрдк рдлрд░реНрд╢ рдпреЛрдЬрдирд╛ рдФрд░ рдЙрд╕рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рд╕реЗрдВрд╕рд░ рдХреЗ рд╡рд┐рд╕реНрддреГрдд рдбреНрд░рд╛рдЗрдВрдЧ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред

Source: https://habr.com/ru/post/In196972/


All Articles