рдПрдХ рдЕрдЬрдЧрд░ рдХреА рдкреВрдВрдЫ рдкрд░ рдЫрд╣-рд╢рдХреНрддрд┐ рдХрд╛ рдЬреАрд╡рди

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

рдкрд┐рдЫрд▓реЗ рдкреЛрд╕реНрдЯреЛрдВ рдореЗрдВ, рдореИрдВрдиреЗ рдЫрд╣-рдбрд┐рдЧреНрд░реА рд╕реНрдЯреБрдЕрд░реНрдЯ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рдореЙрдХ-рдЕрдк рдмрдирд╛рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдереАред рдФрд░ рдЗрд╕рд▓рд┐рдП рд╕рднреА рдШрдЯрдХ рджреВрд░ рдЪреАрди рд╕реЗ рдЖрдП, рдФрд░ рдЯреЗрдмрд▓ рдкрд░ рднреА рдЗрдХрдЯреНрдареЗ рд╣реБрдП, рдЖрдк рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ!

рдЫрд╡рд┐


рдЙрдкрдХрд░рдг рдФрд░ рд╕рд╛рдордЧреНрд░реА


рдкрд┐рдЫрд▓реЗ рд▓реЗрдЖрдЙрдЯ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рд╡рд┐рдВрдбреЛрдЬ 7 рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдПрдХ рд▓реИрдкрдЯреЙрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2008 рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╕рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ Microsoft .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде C # рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

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

рдХрд╛рдо рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрдкрдХрд░рдг рдФрд░ рд╕рд╛рдордЧреНрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
рдореЗрдЬрдмрд╛рди рдХрд╛ рдирд╛рдорд╕рдВрдЦреНрдпрд╛
рд▓рд┐рдирдХреНрд╕ рд╕реНрдерд╛рдкрдирд╛1 рдкреАрд╕реА
рдЫрд╣-рд╢рдХреНрддрд┐ рдордВрдЪ1 рдкреАрд╕реА
рдЕрд░реБрдбрд┐рдиреЛ рдореЗрдЧрд╛1 рдкреАрд╕реА
рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдмреЛрд░реНрдб1 рдкреАрд╕реА
рдЭрд░рдиреА6 рдкреАрд╕реА
рдЗрдорджрд╛рджреА6 рдкреАрд╕реА
рдХреЛрдиреЛрдВ6 рдкреАрд╕реА
рдмреЙрд▓ рдмреЗрдпрд░рд┐рдВрдЧ12 рдкреАрд╕реА
рд╣реАрд▓рд┐рдпрдо рдкреЗрди6 рдкреАрд╕реА
рддрд╛рд░реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛20 рдкреАрд╕реАред
рдкреЗрдВрдЧреБрдЗрди + рд╕реНрдХреЙрдЪ1 рдкреАрд╕реА
рдЬреЛрд╕реНрдЯрд┐рдХ1 рдкреАрд╕реА

рдЖрдкрдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рд╕реЗ:


рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЛ рдПрдХ рд╕рд╛рде рд░рдЦрд╛


рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдбрд┐рдЧреНрд░реА рдХреЗ рд╕рд╛рде рддрдВрддреНрд░ рдХрд╛ рджрд╛рдпрд░рд╛, рдЬреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдЧрддрд┐рдЬ рдХрдиреЗрдХреНрд╢рди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдмрд╣реБрдд рд╡рд┐рд╕реНрддреГрдд рд╣реИ:

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

рд╕рд░реНрд╡реЛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рдореЗрд░реЗ рд▓реЗрдЦ рдореЗрдВ рддреАрди-рд╢рдХреНрддрд┐ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рддреАрди рдбреНрд░рд╛рдЗрд╡ рдХреЗ рдмрдЬрд╛рдп, рдЫрд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдЖрдЙрдЯ рд╕реНрдЯреБрдЕрд░реНрдЯ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред

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

рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рдмрд╛рдж рдордВрдЪ рдХрд╛ рд╢реАрд░реНрд╖ рджреГрд╢реНрдп:
рдЫрд╡рд┐

Arvino Mega рдХреЗ 2-7 рдЖрдЙрдЯрдкреБрдЯ рд╕реЗ рдХреНрд░рдорд╢рдГ PWM PWM рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ:
рдЫрд╡рд┐

рдЕрдВрджрд░, рдордВрдЪ рдХреЗ рдиреАрдЪреЗ, рдмреНрд░реЗрдбрдмреЛрд░реНрдб рдкрд░ рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХреЗ рд╕реЗ рд╕рд░реНрд╡реЛ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВ:
рдЫрд╡рд┐

рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╣рдордиреЗ рддреАрди-рд╢рдХреНрддрд┐ рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдШрдЯрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рджреЛрдЧреБрдирд╛ рдХрд░ рджрд┐рдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдПрдХ рд╕реНрдерд┐рд░ рдбрд┐рдЬрд╛рдЗрди рдореЗрдВ рд░рдЦрд╛ рд╣реИред рдЧреЛрдВрдж рдХреЗ рд╕рд╛рде рдЫрдбрд╝ рдкрд░ рдмреЙрд▓ рдмреЗрдпрд░рд┐рдВрдЧ рдХреЛ рдареАрдХ рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХрдИ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рджреМрд░рд╛рди, рдЬреЛрдбрд╝реЛрдВ рд╕реЗ рдмрд╛рд╣рд░ рдЙрдбрд╝рдирд╛ рдмрд╕ рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИред

рдЫрд╣ рдбрд┐рдЧреНрд░реА


рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рдХреА рдЫрд╣ рдбрд┐рдЧреНрд░реА рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ:

рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рдХреА рдЫрд╣ рдбрд┐рдЧреНрд░реА (рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░реВрдк рд╕реЗ 6DoF рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдХреНрд╕рд░ рдЕрдВрдЧреНрд░реЗрдЬреА рдХреА рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рдХреЗ рдЫрд╣ рдбрд┐рдЧреНрд░реА рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) - рдЬреНрдпрд╛рдорд┐рддреАрдп рдЖрдХреГрддрд┐рдпреЛрдВ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ (рддреАрди рдЖрдпрд╛рдореА) рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдЬреНрдпрд╛рдорд┐рддреАрдп рдЖрдВрджреЛрд▓рдиреЛрдВ рдХреЛ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗ, рдЕрд░реНрдерд╛рддреН: рдЖрдЧреЗ / рдкреАрдЫреЗ, рдКрдкрд░ / рдиреАрдЪреЗ, рдмрд╛рдПрдВ / рджрд╛рдПрдВ (рдХрд╛рд░реНрдЯреЗрд╕рд┐рдпрди рдореЗрдВ) рдЖрдЧреЗ рдмрдврд╝реЗрдВ рддреАрди-рдЖрдпрд╛рдореА рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА), рддреАрди рдкрд░рд╕реНрдкрд░ рд▓рдВрдмрд╡рдд рдЕрдХреНрд╖реЛрдВ (рдпрд╡, рдкрд┐рдЪ, рд░реЛрд▓) рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреБрдорд╛рд╡ рд╕рд╣рд┐рддред рдпрд╣ рдЬреНрдЮрд╛рдд рд╣реИ рдХрд┐ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдХрд┐рд╕реА рднреА рд╡реЗрдХреНрдЯрд░ рдХреЗ рд╕рд╛рде рд╡рд┐рд╕реНрдерд╛рдкрди рдХреЛ рддреАрди рдЕрдХреНрд╖реЛрдВ рдХреЗ рд╕рд╛рде рдореВрд▓ рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде рддреАрди рдкреНрд░рд╛рдердорд┐рдХ рд╡рд┐рд╕реНрдерд╛рдкрди рдХреЗ рдпреЛрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рд╛рдердорд┐рдХ рд╡рд┐рд╕реНрдерд╛рдкрди рдЕрдиреНрдп рджреЛ рд╕реЗ рд╡реНрдпреБрддреНрдкрдиреНрди рдирд╣реАрдВ рд╣реИред рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдлрд╛рд░реНрдо рдХрд╛ рдПрдХ рдордирдорд╛рдирд╛ рд░реЛрдЯреЗрд╢рди рднреА рдХреБрд▓реНрд╣рд╛рдбрд╝рд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреБрдорд╛рд╡ рдХреЗ рдЕрдиреБрдХреНрд░рдо рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдпреВрд▓рд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░)ред рдЗрд╕рд▓рд┐рдП рд╕рдВрдЦреНрдпрд╛ 6 (рдЫрд╣)ред


рдЖрд▓реЗрдЦреАрдп рд░реВрдк рд╕реЗ, рдЗрд╕ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ( рд╕реНрд░реЛрдд )
рдЫрд╡рд┐

рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рдХреА рдЫрд╣ рдбрд┐рдЧреНрд░реА рд╣реИ:


рдЬрд╣рд╛рдЬ рдХреЗ рд░реЛрд▓ рдХреЗ X- рдЕрдХреНрд╖ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреВрдордиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг ( рд╕реНрд░реЛрдд ):
рдЫрд╡рд┐

Y рдЕрдХреНрд╖ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреВрдордиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг - рдкреЛрдд рдХреА рдкрд┐рдЪ ( рд╕реНрд░реЛрдд ):
рдЫрд╡рд┐

Z рдЕрдХреНрд╖ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреВрдордиреЗ рдХрд╛ рдЙрджрд╛рд╣рд░рдг - рдПрдХ рдЬрд╣рд╛рдЬ рдХрд╛ yaw ( рд╕реНрд░реЛрдд ):
рдЫрд╡рд┐

рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдХреБрд▓реНрд╣рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рд░реЛрдЯреЗрд╢рди рдХреА рдбрд┐рдЧреНрд░реА рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рдХрдИ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ, рдпрд╣рд╛рдВ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ ред

рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ


рд▓реЗрдЖрдЙрдЯ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╕рд╛рде рд╣реА рддреАрди рд╕рд░реНрд╡реЛ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдг рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдпрдВрддреНрд░рдг рдХрдорд╛рдВрдб рдХрд╛ рдкреНрд░рд╛рд░реВрдк рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:
рдЫрд╡рд┐

рдирд┐рдпрдВрддреНрд░рдг рдХрдорд╛рдВрдб рдореЗрдВ рдХрдорд╛рдВрдб рдЙрдкрд╕рд░реНрдЧ рдХреЗ 1 рдмрд╛рдЗрдЯ рд╣реЛрддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреНрд░рддреАрдХ 'рдПрд╕' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдбреНрд░рд╛рдЗрд╡ рдХреЗ рдЫрд╣ рдкрджреЛрдВ, рджреЛ рдмрд╛рдЗрдЯреНрд╕ рдкреНрд░рддреНрдпреЗрдХред рд╕реА рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рддрд░рд╣ рдХреА рдХрдорд╛рдВрдб рдХреИрд╕реЗ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ рдпрд╣ рддреБрд░рдВрдд рд╕реНрдкрд╖реНрдЯ рд╣реИ: рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рд╛рд░реВрдк рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░реЗрдВред рдкрд╛рдпрдерди рдореЗрдВ, "рдмреИрдЯрд░реА рдкреИрдХ" рдореЗрдВ рдЦреЗрддреЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рд╕реЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрджреНрднреБрдд рд╕рдВрд░рдЪрдирд╛ рдореЙрдбреНрдпреВрд▓ рд╣реИред

рд╕рдВрд░рдЪрдирд╛ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдКрдкрд░ рдкреНрд░рд╕реНрддреБрдд рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдирд┐рдореНрди рд░реВрдк рд╣реИ:
рдЖрдпрд╛рдд рд╕рдВрд░рдЪрдирд╛

рд╕рдВрд░рдЪрдирд╛ ред рдкреИрдХ ( '<chhhhhh' , 'S' , pos1, pos2, pos3, pos4, pos5, pos6 )


рдореЙрдбреНрдпреВрд▓ рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдЕрдиреБрд╕рд╛рд░:


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

рдордВрдЪ рдХрд╛ рдХрдиреЗрдХреНрд╢рди рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
рдЖрдпрд╛рдд рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХ

рд╕реАрд░рд┐рдпрд▓рдкреЙрд░реНрдЯ = рд╕реАрд░рд┐рдпрд▓ред рд╕реАрд░рд┐рдпрд▓ ( '/ рджреЗрд╡ / ttyUSB0' , 115200 )
serialportред рдЦреБрд▓рд╛ ( )


рдПрдХ рд╕рдлрд▓ рдХрдиреЗрдХреНрд╢рди рдХреЗ рдмрд╛рдж рдбреЗрдЯрд╛ рднреЗрдЬрдирд╛ рдФрд░ рдкреЛрд░реНрдЯ рдЦреЛрд▓рдирд╛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
serialportред рд▓рд┐рдЦреЛ ( рд╕рдВрд░рдЪрдирд╛ ред рдкреИрдХ


рдпрд╣ рдХреЛрдб рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░реАрдХреНрд╖рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЬреЙрдпрд╕реНрдЯрд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкреНрд░рдмрдВрдзрди рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рдмрдиреЗрдЧрд╛ред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд░рд▓ рдкрд╛рдпрдерди рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рдХреА рд╕рднреА рдбрд┐рдЧреНрд░реА рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
  1. рдЖрдпрд╛рдд рд╕рдВрд░рдЪрдирд╛
  2. рдЖрдпрд╛рдд рдХрд╛ рд╕рдордп
  3. рдЖрдпрд╛рдд рдЧрдгрд┐рдд
  4. def send_data ( рдХреНрд░рдо, x, y, z, рд░реЛрд▓, рдкрд┐рдЪ, yaw ) :
  5. рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХред рд▓рд┐рдЦреЛ ( рд╕рдВрд░рдЪрдирд╛ ред рдкреИрдХ
  6. def complex_test ( рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХ, lenght = 200 , рдЧреБрдгрд╛ = 1000 , рдбреЗрд▓реНрдЯрд╛ = 0.05 , рдард╣рд░рд╛рд╡ = 0.7 ) :
  7. test_linear ( рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХ, рд▓рдореНрдмреА, рд╕рдордп, рдбреЗрд▓реНрдЯрд╛ )
  8. рд╕рдордп ред рдиреАрдВрдж ( рд╡рд┐рд░рд╛рдо )
  9. test_yaw ( рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХ, рдЬреАрд╡рдВрдд, рд╕рдордп, рдбреЗрд▓реНрдЯрд╛ )
  10. рд╕рдордп ред рдиреАрдВрдж ( рд╡рд┐рд░рд╛рдо )
  11. test_angles ( рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХ, рд▓рдореНрдмреА, рд╕рдордп, рдбреЗрд▓реНрдЯрд╛ )
  12. рд╕рдордп ред рдиреАрдВрдж ( рд╡рд┐рд░рд╛рдо )
  13. def test_linear ( рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХ, рд▓рдВрдм = реирежреж рдмрд╛рд░, резрежрежреж , рдбреЗрд▓реНрдЯрд╛ = реж.режрел ) :
  14. рдХреЛрдг рдореЗрдВ рдХреЛрдг рдХреЗ рд▓рд┐рдП ( 1 , рдмрд╛рд░, 5 ) :
  15. рдП = рдХреЛрдг * рдЧрдгрд┐рдд ред рдкреА / рез / реж
  16. send_data ( рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХ, int ( lenght * math ред cos ) ( a ) ) , int ( lenght * math ред sin ( a ) ) , 0 , 0 , 0 , 0 )
  17. рд╕рдордп ред рдиреАрдВрдж ( рдбреЗрд▓реНрдЯрд╛ )
  18. send_data ( рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХ, 0 , 0 , 0 , 0 , 0 , 0 )
  19. def test_angles ( рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХ, lenght = 200 , рдЧреБрдирд╛ = 1000 , рдбреЗрд▓реНрдЯрд╛ = 0.05 ) :
  20. рдХреЛрдг рдореЗрдВ рдХреЛрдг рдХреЗ рд▓рд┐рдП ( 1 , рдмрд╛рд░, 5 ) :
  21. рдП = рдХреЛрдг * рдЧрдгрд┐рдд ред рдкреА / рез / реж
  22. send_data ( 0 , 0 , 0 , 0 , int ( 30 * рдЧрдгрд┐рдд ред cos ) ( a ) , int ( 30 * рдЧрдгрд┐рдд ред sin -a ) )ред
  23. рд╕рдордп ред рдиреАрдВрдж ( рдбреЗрд▓реНрдЯрд╛ )
  24. send_data ( рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХ, 0 , 0 , 0 , 0 , 0 , 0 )
  25. def test_yaw ( рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХ, рд▓рдВрдм = реирежреж рдмрд╛рд░, резрежрежреж , рдбреЗрд▓реНрдЯрд╛ = реж.режрел ) :
  26. рдХреЛрдг рдореЗрдВ рдХреЛрдг рдХреЗ рд▓рд┐рдП ( 1 , рдмрд╛рд░, 5 ) :
  27. рдП = рдХреЛрдг * рдЧрдгрд┐рдд ред рдкреА / рез / реж
  28. send_data ( рдХреНрд░рдо, int ( lenght * math ред cos ) ( a ) ) , 0 , 0 , int ( 30 * рдЧрдгрд┐рдд ред sin ( a ) ) , 0 , 0
  29. рд╕рдордп ред рдиреАрдВрдж ( рдбреЗрд▓реНрдЯрд╛ )
  30. send_data ( рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХ, 0 , 0 , 0 , 0 , 0 , 0 )




рдЬреЙрдпрд╕реНрдЯрд┐рдХ рдирд┐рдпрдВрддреНрд░рдг


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

рдЬреЙрдпрд╕реНрдЯрд┐рдХ рд╢реБрд░реВ рдХрд░рдиреЗ рдФрд░ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг:
рдЖрдпрд╛рдд pygame

# рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдкреИрдорд╛рдирд╛
SCALE = 1000

# Pygame рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди, рдЬреЙрдпрд╕реНрдЯрд┐рдХ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдлрдВрдХреНрд╢рди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
pygameред init ( )

# рдЙрдкрд▓рдмреНрдз рдЙрдкрдХрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛
рд░реЗрдВрдЬ рдореЗрдВ jid рдХреЗ рд▓рд┐рдП ( pygameред рдЬреЙрдпрд╕реНрдЯрд┐рдХ ред get_count ( ) ) :
рд╕реНрд╡ ред joysticksComboBox ред addItem ( u '% d% s' % ( jid, pygameред рдЬреЙрдпрд╕реНрдЯрд┐рдХ ред рдЬреЙрдпрд╕реНрдЯрд┐рдХ ( jid ) ред get_name ( ) ) )

# рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЬреЙрдпрд╕реНрдЯрд┐рдХ рдСрдмреНрдЬреЗрдХреНрдЯ
self ._joystick = pygameред рдЬреЙрдпрд╕реНрдЯрд┐рдХ ред рдЬреЙрдпрд╕реНрдЯрд┐рдХ ( рд╕реНрд╡ ред рдЬреЙрдпрд╕реНрдЯрд┐рдХреНрд╕рдХреЙрдореНрдм рдмреЙрдХреНрд╕ ред рдХрд░рдВрдЯрдЗрдВрдбреЗрдХреНрд╕ ( ) )

# Pygame рдореЗрдВ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЕрджреНрдпрддрди рдХрд░реЗрдВ
pygameред рдШрдЯрдирд╛ ред рдкрдВрдк ( )

# рджрд┐рдП рдЧрдП рдЕрдХреНрд╖ рдкрд░ рдЬреЙрдпрд╕реНрдЯрд┐рдХ рд╕реЗ рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЕрдХреНрд╖ X = 0)
# рдорд╛рди рдХреЛ рдлреНрд▓реЛрдЯ рдХреЗ рд░реВрдк рдореЗрдВ -1 рд╕реЗ 1 рддрдХ рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рд╕реНрдХреЗрд▓ рдХрд░рддреЗ рд╣реИрдВ
рд╕реНрд╡ ред get_axis ( 0 ) * SCALE


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

рдкреНрд░рдмрдВрдзрди рдХрд╛рд░реНрдпрдХреНрд░рдо рдЗрдВрдЯрд░рдлрд╝реЗрд╕:
рдЫрд╡рд┐

рдиреЛрдЯ: рдореИрдВ рддреБрд░рдВрдд рдПрдХ рдЖрд░рдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЬреЙрдпрд╕реНрдЯрд┐рдХ рд╕рд╕реНрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдореЗрдВ рдХрдИ рдореГрдд рдХреНрд╖реЗрддреНрд░ рдФрд░ рдШреГрдгрд┐рдд рд╕рдВрд╡реЗрджрдирд╢реАрд▓рддрд╛ рд╣реИ, рдФрд░ рдордВрдЪ "рддреЗрдЬ" рд╕рд░реНрд╡рд░ рдкрд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЬреЙрдпрд╕реНрдЯрд┐рдХ рдЬрд╛рдо рддреБрд░рдВрдд рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред

рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдирд┐рдореНрди рд╡реАрдбрд┐рдпреЛ рд╕рд╛рдордиреЗ рдЖрдпрд╛:


рдирд┐рд╖реНрдХрд░реНрд╖


рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдп рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдордиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд┐рдПред


рднрд╡рд┐рд╖реНрдп рдХреА рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛рдПрдВ, рдЬрд┐рдирдХреЗ рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгреА рдЕрдХреНрд╕рд░ рдорджрдж рдХрд░ рд╕рдХрддреА рд╣реИ:


рдкреБрдирд╢реНрдЪ: рдореИрдВ рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдПрдХ рдкреНрд░рд░реНрд╡рддрдХ рдирд╣реАрдВ рд╣реВрдВ, рдореИрдВ рдХрд┐рд╕реА рднреА рд╕реБрдЭрд╛рд╡ рдФрд░ рдЖрд▓реЛрдЪрдирд╛ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рдХрд░рддрд╛ рд╣реВрдВред

рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

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


All Articles