рдореИрдВ рдЖрдкрдХреЛ GeekTimes рдХреЗ рдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ, рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ Arduino Uno (рдиреИрдиреЛ) рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ AVR рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░реНрд╕ рдХреЗ рд▓рд┐рдП рд╡рд╛рдпрд░рд▓реЗрд╕ рдмреНрд░рд┐рдЬ рдХреЗ рд░реВрдк рдореЗрдВ ESP8266 рдЪрд┐рдк рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдЪрдХреНрд░ рдХрд╛ рдПрдХ рдФрд░ рд▓реЗрдЦ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдВред рдЗрд╕ рдмрд╛рд░, рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо
рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд
рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрдВрджреНрд░рдорд╛ рдХреА рдЙрдбрд╝рд╛рди рдХреЗ рд▓рд┐рдП , рд╣рдо рдПрдХ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рдмрдЬрд╛рдп рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕реНрдорд╛рд░реНрдЯрдлреЛрдиред

рдХрдЯ рдХреЗ рддрд╣рдд рд╡рд┐рд╡рд░рдг:
рд╣рдорд╛рд░реЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП, рд╣рдо рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ - ESP8266 рдореЗрдВ рдлреНрд▓реИрд╢рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП BABUINO рд╡рд╛рдпрд░рд▓реЗрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдФрд░ MPDE (рдкреНрд░реЛрдЧреНрд░рд╛рдо рдФрд░ рдбреЗрдЯрд╛ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓) рдореЙрдбреНрдпреВрд▓ред
рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдирд┐рдХрд▓рд╛ рдерд╛, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╕реНрд╡рдпрдВ, рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ, рдЕрджрд╛рд▓рдд рдореЗрдВ рдЖрдпрд╛ рдерд╛ рдФрд░ рдХреБрдЫ рд╡реНрдпрдХреНрддрд┐ рднреА рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рдереЗред рдЦреИрд░, рдореВрд▓ рд░реВрдк рд╕реЗ, рдмрд╛рдд рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ; рдореИрдВрдиреЗ рд╡рд┐рдВрдбреЛрдЬрд╝ рдХреЗ рддрд╣рдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛, рд╡рд╛рдВрдЫрд┐рдд рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рд╣реЗрдХреНрд╕ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдФрд░ рд╡рд╣ рд╕рдм рдХреБрдЫ рд╕реЗрдХрдВрдб рдореЗрдВ рдмрд┐рдирд╛ рдХрд┐рд╕реА рддрд╛рд░ рдХреЗ рд╕рд╣реА рдбрд┐рд╡рд╛рдЗрд╕ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдоред рдПрдХ рдФрд░ рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЕрддреНрдпрдзрд┐рдХ рд╡реНрдпрд░реНрдерддрд╛ рдХреЗ рд╕рд╛рде, рдореИрдВрдиреЗ ARDUINO рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдкрд░ рд╣рдорд▓рд╛ рдХрд┐рдпрд╛ рдЬреЛ рд╡рд╛рдпрд░рд┐рдВрдЧ C рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдФрд░ ARDUINO IDE рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдкрдиреЗ рд░реЗрдЦрд╛рдЪрд┐рддреНрд░реЛрдВ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд░рддреЗ рд╣реИрдВред рдмреЗрд╢рдХ, рд╣рд░ рдХреЛрдИ рд╡рд╣реА рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЙрд╕рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ - рдЪрд╛рд╣реЗ рд╡рд╣ рдПрд╡реАрдЖрд░ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реЗ рдЕрд░реБрдбрд┐рди рд╡рд╛рдпрд░рд┐рдВрдЧ рд╕реА рдпрд╛ рд╕реА рдореЗрдВ рд╣реЛред рд▓реЗрдХрд┐рди рдЕрдВрдд рдореЗрдВ, рдХреБрдЫ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдиреЗ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рддреБрд░рдВрдд рдлреИрд╕рд▓рд╛ рдХрд░ рд▓рд┐рдпрд╛ рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ ARDUINO рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реИред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХреЛрдИ рд╕рдВрдЧрддрддрд╛ рдореБрджреНрджреЗ рдирд╣реАрдВ рд╣реИрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗред рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЖрдкрдХреЗ рд╕реНрдХреЗрдЪ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рд╣реЗрдХреНрд╕ рдлрд╝рд╛рдЗрд▓ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдФрд░ рдмрд╕ рдПрдХ рд╡рд╛рдпрд░рд▓реЗрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдкрдиреЗ Arduino UNO рдпрд╛ NANO рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рднреЗрдЬреЗрдВред
ARDUINO рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдбреЗрдЯрд╛ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдХрд┐рд╕реА рднреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИред рдореИрдЬрд┐рдХ рд▓рд╛рдЗрдиреНрд╕ рд▓рд┐рдЦреЗрдВ:
рд╕реАрд░рд┐рдпрд▓.рдмреЗрдЧрд┐рди (9600);рдФрд░ рдлрд┐рд░ рдХреБрдЫ рдЗрд╕ рддрд░рд╣:
ReceByte = Serial.read (); // рдмрд╛рдЗрдЯ рдХреЛ рдмрдлрд╝рд░ рд╕реЗ рдкрдврд╝реЗрдВ
рдпрд╛:
рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХ.рд▓реЗрдЦ (рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ); // рдмрд╛рдЗрдЯ рд░рд┐рдХреЙрд░реНрдб
рдФрд░ рдЖрдк рдХрд╛рдлреА рд╢рд╛рдВрддрд┐ рд╕реЗ WI-FI рдкрд░ рдмрд╛рдЗрдЯ рдзрд╛рд░рд╛рдУрдВ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред AVR рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд▓рд┐рдП ESP8266 рдХреЛ рднреЗрдЬрддрд╛ рд╣реИ рдФрд░ рд╡рд╣рд╛рдВ рд╕реЗ рд╕реАрд░рд┐рдпрд▓ UART рдкреЛрд░реНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрд╛рдЗрдЯреНрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЛрдИ рднреА рдорд╛рдирд╡рддрд╛рд╡рд╛рджреА рдХрд╛рдо рдХреЛ Arduino рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдЕрдм рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд╡рд┐рд╖рдп рдкрд░ рд╡рд╛рдкрд╕ рдЖрддреЗ рд╣реИрдВред рд╕реНрдорд╛рд░реНрдЯрдлреЛрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░реЛрдмреЛрдЯ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЖрдкрдХреЛ рдЗрд╕ рд╕реНрдорд╛рд░реНрдЯрдлреЛрди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред
рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд┐рд╕рдиреЗ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдПрдХ рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ рдмреЗрд╣рдж рдЕрд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдерд╛, рдореИрдВ рдЕрдм рд╕рднреА рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдХреЗ рд╕рд╛рде рдШреЛрд╖рдгрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдорд╛рдорд▓рд╛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИред рдЬрдм рддрдХ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЖрдкрдХреЗ рдкрд╛рд╕ рдЬрд╛рд╡рд╛ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рдмреБрдирд┐рдпрд╛рджреА рдЬреНрдЮрд╛рди рд╣реИред
рдПрдВрдбреНрд░реЙрдЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрддреЗ рд╕рдордп, рд╕реНрд░реЛрдд рдХреЛрдб рдЬрд╛рд╡рд╛ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдкрд╛рд░рдВрдкрд░рд┐рдХ рдЬрд╛рд╡рд╛ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд╛рдирдХ рдЬрд╛рд╡рд╛ рдмрд╛рдЗрдЯрдХреЛрдб рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрд┐рд░ рдЕрдиреНрдп рджрд┐рд▓рдЪрд╕реНрдк рдЪреАрдЬреЗрдВ рдХреЛрдб рдХреЗ рд▓рд┐рдП рд╣реЛрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдпрд╣рд╛рдВ рдЗрди рд╡рд┐рд╡рд░рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЦреНрдпрд╛рдд рдХрдЯреНрдЯрд░ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕реА рдореЗрдВ рдЖрд╡реЗрджрди рдкрддреНрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рдЕрд╡рд╕рд░ рдЕрднреА рднреА рдореМрдЬреВрдж рд╣реИрдВ, рдЬреЛ рдиреИрдиреЛрд╕реНрдХреЙрдиреНрдбреНрд╕ рджреНрд╡рд╛рд░рд╛ рд╕реНрдХреЛрд░ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдХрд╣реАрдВ-рдХрд╣реАрдВ рдкрд╛рдпрдерди рд╕реЗ рдЖрдкрдХреЗ рдХреЛрдб рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рддрд░рд╣ рдХрд╛ рдкреИрдХреЗрдЬ рднреА рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣рд╛рдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрддрд╛ рд╕рдХрддрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рд╕рд╣реА рд╡рд┐рдХрд▓реНрдк рдмрдирд╛рдпрд╛ рд╣реИред ред
рддреЛ, рдЬрд╛рд╡рд╛ рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдкреИрдХреЗрдЬ - JetBrains рд╕реЗ IntelliJ IDEA рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдВрдбреНрд░реЙрдЗрдб рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХреАрдХреГрдд рд╡рд┐рдХрд╛рд╕ рд╡рд╛рддрд╛рд╡рд░рдг (IDE), рдПрдВрдбреНрд░реЙрдЗрдб рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡рд┐рдХрд╛рд╕ рдЙрдкрдХрд░рдгред

рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА IntelliJ IDEA рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдк рдкрд░рд┐рдЪрд┐рдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рд╕реБрдЦрдж рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рд╣реЛрдВрдЧреЗред
рдореИрдВ рдмреАред рдлрд┐рд▓рд┐рдкреНрд╕ рдФрд░ рд╕реАред рд╕реНрдЯреАрд╡рд░реНрдЯ рдХреА рдХрд┐рддрд╛рдм рд╕реЗ рдирд┐рд░реНрдорд╛рдг рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛ рдЧрдпрд╛ - "рдПрдВрдбреНрд░реЛрдЗрдб" рдкреЗрд╢реЗрд╡рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧред "рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ, рдкреЗрд╢реЗрд╡рд░ рдРрд╕реЗ рдкрд╛рдардХреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЬрд╛рд╡рд╛ рдПрд╕рдИ рд╕реЗ рдХрдо рд╕реЗ рдХрдо рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВред рдореБрдЭреЗ рдирд╣реАрдВ рдорд┐рд▓рд╛, рдФрд░ рд╣рдорд╛рд░реЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХ рдХреЗ рдкрд╣рд▓реЗ рджрд╕ рдЕрдзреНрдпрд╛рдп рдХрд╛рдлреА рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдВрдЧреЗ, рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рджрд┐рдП рдЧрдП рд╣реИрдВ рдЬрдм рдЙрдкрд░реЛрдХреНрдд рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
рдбрд┐рдмрдЧрд┐рдВрдЧ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдХрд┐рд╕реА рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдПрдореБрд▓реЗрдЯрд░ рдкрд░ рдпрд╛ рд╕реАрдзреЗ рд╕реНрдорд╛рд░реНрдЯрдлреЛрди рдкрд░ "рдбреЗрд╡рд▓рдкрд░ рдореЛрдб" рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рд╡рд┐рдВрдбреЛрдЬрд╝ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЯреНрд░реЙрд▓реА рдирд┐рдпрдВрддреНрд░рдг рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣реА рд╣реИ, HTTP рдФрд░ UDP рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреЛрдб, рд╕рд╛рде рд╣реА рдирд┐рдпрдВрддреНрд░рдг рддрд░реНрдХ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рд┐рджреНрдзрд╛рдВрдд рдореЗрдВ рдореМрдЬреВрдж рд╣реИред рдЗрд╕рд▓рд┐рдП, рдУрд░реЗрдХрд▓ рдХреЗ рдирд╛рд░реЗ рдХреЛ рдЕрдкрдирд╛рдпрд╛ "рдпрд╣ рдПрдХ рдЬрдЧрд╣ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рд╣рд░ рдЬрдЧрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ", рд╣рдо рдмрд╕ рдЗрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдПрдВрдбреНрд░реЙрдЗрдб рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдП рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЬреАрдпреВрдЖрдИ рдПрдХ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдпреВрдЬрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рд╣реИ, рд╕реНрдкрд╖реНрдЯ рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдпрд╣ рдЫреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ рдХрд╣рд╛рдВ рдерд╛ред рд▓реЗрдХрд┐рди рджреВрд╕рд░реА рдУрд░, рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╕рдорд╛рди рдФрд░ рдХрд╛рдлреА рддреЗрдЬрд╝реА рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╣рд╛рд░реЗ рд╣реБрдП рдирд╣реАрдВ рд░рд╣реЗрдВрдЧреЗред
рд╕реНрдХреНрд░реАрди рдореЗрдВ рдПрдХ рдЙрдВрдЧрд▓реА рдкреНрд░рд╣рд╛рд░
рддреЛ, рд╣рдо Android Studio рдореЗрдВ рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ тАЬFourWheelRobotControlтАЭ рдмрдирд╛рддреЗ рд╣реИрдВред
рдпрд╣ рдПрдХ рд╕рд░рд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдЧрддрд┐рд╡рд┐рдзрд┐ рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧреА
рдХреНрд▓рд╛рд╕ рдореЗрдирдПрдХреНрдЯрд┐рд╡рд┐рдЯреА.рдЬрд╛рд╡рд╛import android.content.Context; import android.hardware.Sensor; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.widget.ImageButton; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends AppCompatActivity { private ImageButton mButtonUP; private ImageButton mButtonDOWN; private ImageButton mButtonLEFT; private ImageButton mButtonRIGHT; public static byte direction = 100; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); new HTTP_client(40000); new Udp_client(); mButtonUP = (ImageButton) findViewById(R.id.imageButtonUP); mButtonUP.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { direction = 3; } } if (event.getAction() == MotionEvent.ACTION_UP) { direction = 100; } return false; } }); mButtonDOWN = (ImageButton) findViewById(R.id.imageButtonDown); mButtonDOWN.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { direction = 4; Toast.makeText(MainActivity.this, " " + direction, Toast.LENGTH_SHORT).show(); } if (event.getAction() == MotionEvent.ACTION_UP) { direction = 100; } return false; } }); mButtonLEFT = (ImageButton) findViewById(R.id.imageButtonLeft); mButtonLEFT.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { direction = 1; Toast.makeText(MainActivity.this, " " + direction, Toast.LENGTH_SHORT).show(); } if (event.getAction() == MotionEvent.ACTION_UP) { direction = 100; } return false; } }); mButtonRIGHT = (ImageButton) findViewById(R.id.imageButtonRight); mButtonRIGHT.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { direction = 2; Toast.makeText(MainActivity.this, " " + direction, Toast.LENGTH_SHORT).show(); } if (event.getAction() == MotionEvent.ACTION_UP) { direction = 100; } return false; } }); }
рдФрд░ рд▓реЗрдЖрдЙрдЯ:
рдЦрд╝рд╛рдХрд╛ /spoiler/ activity_main.xml <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="mikhail_akhmetov.fourweelsrobotcontrol.MainActivity"> <ImageButton android:id="@+id/imageButtonRight" style="@android:style/Widget.Holo.ImageButton" android:layout_width="52dp" android:layout_height="52dp" android:layout_marginEnd="8dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" android:layout_marginStart="8dp" android:background="@android:color/holo_orange_dark" app:layout_constraintBottom_toTopOf="@+id/linearLayout" app:layout_constraintHorizontal_bias="0.417" app:layout_constraintLeft_toRightOf="@+id/imageButtonLeft" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.513" app:srcCompat="@android:drawable/ic_media_ff"/> <ImageButton android:id="@+id/imageButtonUP" style="@android:style/Widget.ImageButton" android:layout_width="52dp" android:layout_height="52dp" android:layout_marginBottom="8dp" android:layout_marginTop="8dp" android:background="@android:color/holo_orange_dark" app:layout_constraintBottom_toTopOf="@+id/imageButtonDown" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.486" app:srcCompat="@android:drawable/arrow_up_float"/> <ImageButton android:id="@+id/imageButtonDown" style="@android:style/Widget.ImageButton" android:layout_width="52dp" android:layout_height="52dp" android:layout_marginBottom="57dp" android:layout_marginLeft="8dp" android:background="@android:color/holo_orange_dark" android:fadingEdge="horizontal" app:layout_constraintBottom_toTopOf="@+id/linearLayout" app:layout_constraintHorizontal_bias="0.487" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:srcCompat="@android:drawable/arrow_down_float" android:layout_marginStart="8dp"/> <ImageButton android:id="@+id/imageButtonLeft" style="@android:style/Widget.ImageButton" android:layout_width="52dp" android:layout_height="52dp" android:layout_marginLeft="94dp" android:layout_marginStart="94dp" android:background="@android:color/holo_orange_dark" app:layout_constraintBottom_toTopOf="@+id/linearLayout" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.513" app:srcCompat="@android:drawable/ic_media_rew" /> <LinearLayout android:id="@+id/linearLayout" android:layout_width="368dp" android:layout_height="227dp" android:layout_marginBottom="11dp" android:layout_marginEnd="8dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" android:layout_marginStart="8dp" android:orientation="vertical" android:weightSum="1" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintHorizontal_bias="1.0" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent"> <TextView android:id="@+id/textViewX" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0.28" /> <TextView android:id="@+id/textViewY" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0.28" /> <TextView android:id="@+id/textViewZ" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0.23" /> </LinearLayout> </android.support.constraint.ConstraintLayout>
рдпрд╣ рдХрд▓рдо рдХреЗ рд╕рд╛рде рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдЖрдкрдХреА рд░рдЪрдирд╛рдУрдВ рдХреЗ рдмрд╛рдж рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИред
рдЕрдм рд╣рдо рд╕рд┐рд░реНрдл рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рджрд┐рдП рдЧрдП рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕реЗ рджреЛ рд╡рд░реНрдЧреЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
HTTP_client.java import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.InetAddress; import java.net.Socket; public class HTTP_client extends Thread{ int port; String s; public static String host_address="192.168.1.138";
Udp_clent.java import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; public class Udp_client extends Thread { int i =0; byte [] data = {0}; int udp_port=50000; InetAddress addr; DatagramSocket ds; public Udp_client() { try { ds = new DatagramSocket(); addr = InetAddress.getByName(HTTP_client.host_address); } catch (Exception e) { } start(); } public void run() { while (true) { byte temp = MainActivity.direction; String s = "" + MainActivity.direction; data = s.getBytes(); if(temp!=100 ) { DatagramPacket pack = new DatagramPacket(data, data.length, addr, udp_port); try { ds.send(pack); i=0; Thread.sleep(200); } catch (Exception e) { } } else { if(i==0) { s = "" + 0; data = s.getBytes(); DatagramPacket pack = new DatagramPacket(data, data.length, addr, udp_port); try { ds.send(pack); Thread.sleep(200); } catch (Exception e) { } } i=1;
рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рд╕рд╛рд░ рд╡рд╣реА рд░рд╣рддрд╛ рд╣реИред MainActivity рдкрд╣рд▓реЗ HTTP рдФрд░ UDP рдХреНрд▓рд╛рдЗрдВрдЯ рд▓реЙрдиреНрдЪ рдХрд░рддреА рд╣реИ, рдФрд░ рдлрд┐рд░ UDP рдкреИрдХреЗрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рджрд┐рд╢рд╛ рдкреБрд╢ рдХреЛрдб рднреЗрдЬрдХрд░ рдмрдЯрди рдкреНрд░реЗрд╕ рдФрд░ рдбрд┐рдкреНрд░реЗрд╕рди рдХреЛ рдкрдХрдбрд╝рддреА рд╣реИред рдФрд░ рд╡рд╣рд╛рдВ рд╕реЗ рд╕рдм рдХреБрдЫ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИ - "рдлреЙрд░рд╡рд░реНрдб", "рдмреИрдХ", "рд▓реЗрдлреНрдЯ", "рд░рд╛рдЗрдЯ" рдФрд░ рдЬрдм рдЖрдк "рд╕реНрдЯреЙрдк" рджрдмрд╛рддреЗ рд╣реИрдВ рддреЛ рд╡реЗ рдПрдХ рдЧрд╛рдбрд╝реА рдореЗрдВ WI-FI рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рдХрд▓ рдЬрд╛рддреЗ рд╣реИрдВред
рдЗрди рд╕рдм рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдореЗрдВ рддрдерд╛рдХрдерд┐рдд рдкреНрд░рдХрдЯ рдХреА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдлрд┐рд░ рд╕реЗ, рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╕реНрд╡рдпрдВ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИред
рдПрдХ рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рдПрдХ XML рдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдЖрдкрдХреЗ Android рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреА рд╣реИред рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╣рдореЗрд╢рд╛ AndroidManifest.xml рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдЖрдкрдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдРрдк / рдореЗрдиреБрдЕрд▓ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛрддреА рд╣реИред
рд╕рдЪ рд╣реИ, рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдХрдо рдХрд╛рдо рд╣реИред
рдирд┐рд╖реЗрдз рд╕реНрдХреНрд░реАрди рд░реЛрдЯреЗрд╢рди:
android:screenOrientation="portrait"
рд╣рдо рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ:
<uses-permission android:name="android.permission.INTERNET"/>
рдФрд░ рдпрд╣рд╛рдБ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣реИред
AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="mikhail_akhmetov.fourweelsrobotcontrol"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:screenOrientation="portrait" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-permission android:name="android.permission.INTERNET"/> </manifest>
рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░, рд╣рдореЗрдВ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:

рдпрд╣ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рд╕рднреА рд╣реИред рдЕрдм рдореЛрдмрд╛рдЗрд▓ рдлреЛрди рд╕реЗ рдЯреНрд░рд╛рд▓реА рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрд╡реЗрджрди рдмреЗрд╣рдж рд╕рд░рд▓ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрд┐рдирд╛ рдХрд┐рд╕реА тАЬрд╕реАрдЯреА рдФрд░ рдлреЗрдХтАЭ рдХреЗ рдПрдХ рдбреЗрдореЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рд╣реЛрдо рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдЧрд╛рдбрд╝реА рдХреА рдЦреЛрдЬ рдХрд░рдирд╛, рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛, рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рдФрд░ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдЬреЛ рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЛрдб рдХреЛ рд╕рдордЭрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдмрдирд╛ рджреЗрддреА рд╣реИрдВред
рджреВрд╕рд░реА рдУрд░, рдСрди-рд╕реНрдХреНрд░реАрди рдмрдЯрди рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд▓рди рд╕рдорд╛рди рд╣реИ
"рд╕рд┐рд░реНрдл рд╡реЛрдбрдХрд╛ рдХреИрд╕реЗ рдкреАрдирд╛ рд╣реИ, рдЧрд░реНрджрди рд╕реЗ рднреА - рдЗрд╕рдореЗрдВ рдЖрддреНрдорд╛ рдФрд░ рдЙрдкрджреНрд░рд╡ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред"
рдФрд░ рд╡реЗрдиреНрдпрд╛ рдПрд░реЛрдлрд╝реЗрд╡ рд╕рд╣реА рдерд╛, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗред
рдпрд╣ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╣реА рд╕реНрдорд╛рд░реНрдЯрдлреЛрди рдХреЗ рдорд╛рдирдХ рдПрдХреНрд╕реЗрд▓реЗрд░реЛрдореАрдЯрд░ рдХреА рдорджрдж рд╕реЗ рдПрдХ рдЧрд╛рдбрд╝реА рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рднреА рддрдерд╛рдХрдерд┐рдд рдЗрд░рд╛рджреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрд╣реБрдд рд╕рд░рд▓рддрд╛ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдЪ рд╣реИ, рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рд▓реЛрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЗрд░рд╛рджреЗ рдмрдирд╛рдирд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдХреЛрдИ рднреА рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рд▓реЛрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдордирд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
MASSES рдореЗрдВ ACCELEROMETER
рдЗрд╕рд▓рд┐рдП, MainActivity рдореЗрдВ рд╣рдорд╛рд░рд╛ рдХреЛрдб (рдФрд░ рдЗрд╕рдореЗрдВ рдХреЗрд╡рд▓) рдиреНрдпреВрдирддрдо рд░реВрдк рд╕реЗ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ред
рдПрдХреНрд╕реЗрд▓реЗрд░реЛрдореАрдЯрд░ рдХреЗ рд▓рд┐рдП рдЪрд░ рдЬреЛрдбрд╝реЗрдВ:
private SensorManager mSensorManager; private Sensor mOrientation; private float xy_angle; private float xz_angle;
рд╣рдо рд╕реЗрдВрд╕рд░ рдХреЛ рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рд╕реНрд╡рдпрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╢реНрд░реЛрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░рддреЗ рд╣реИрдВред
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
рд╣рдо рд╕реНрд╡рдпрдВ рд╢реНрд░реЛрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ:
public class MainActivity implements SensorEventListener
рдФрд░ рд╣рдо рдЪрд╛рд░ рдЕрдирд┐рд╡рд╛рд░реНрдп рддрд░реАрдХреЗ рд▓рд┐рдЦреЗрдВрдЧреЗ рдЬрд┐рдирдореЗрдВ рд╕реЗ рд╣рдо рдХреЗрд╡рд▓ рдЕрдВрддрд┐рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдПрдХ рд╡рд┐рдзрд┐ рдЬреЛ рдПрдХреНрд╕реЗрд▓реЗрд░реЛрдореАрдЯрд░ рдХреА рд░реАрдбрд┐рдВрдЧ рдХреЛ рдмрджрд▓рддреЗ рд╕рдордп рдХрд╛рдо рдХрд░рддреА рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореИрдВ рдЦреБрдж рдХреЛ рдПрдХреНрд╕реЗрд▓реЗрд░реЛрдореАрдЯрд░ рд╕реЗ рдкреВрдЫрддрд╛рдЫ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рд▓рдЧрднрдЧ 100 рдПрдордПрд╕ рдХреА рдЕрд╡рдзрд┐ рдХреЗ рд╕рд╛рде рд╕рд╛рдорд╛рдиреНрдп рдмрд╛рд╣реНрдп рдЙрдкрдХрд░рдгреЛрдВ рдХреА рддрд░рд╣, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рд╕рдВрджреЗрд╣ рдерд╛ (рдСрдирдЪреИрдирдб рдирд╛рдо рдХреЗ рдХрд╛рд░рдг) рдХрд┐ рд╡рд┐рдзрд┐ рдмрд╣реБрдд рдмрд╛рд░ рдХрд╛рдо рдХрд░рддреА рдереАред рд▓реЗрдХрд┐рди рд╡рд╣рд╛рдБ рд╕рдм рдХреБрдЫ рдирд┐рдЬреА рд╣реИ рдФрд░ рдЖрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдорд┐рд▓реЗрдЧрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд▓рд┐рдП рдЕрдВрдЬреАрд░ред
@Override public void onAccuracyChanged(Sensor sensor, int accuracy) {
рдирддреАрдЬрддрди, MainActivity.java рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░реВрдк рд▓реЗрдЧрд╛ import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; import android.content.Context; import android.hardware.Sensor; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ImageButton; import android.widget.TextView; public class MainActivity extends AppCompatActivity implements SensorEventListener { private ImageButton mButtonUP; private ImageButton mButtonDOWN; private ImageButton mButtonLEFT; private ImageButton mButtonRIGHT; public static byte direction = 100; private SensorManager mSensorManager; private Sensor mOrientation; private float xy_angle; private float xz_angle; private int x; private int y; private TextView xyView; private TextView xzView; private TextView zyView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); new HTTP_client(40000); new Udp_client(); mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕реНрдорд╛рд░реНрдЯрдлреЛрди рдХреА рд╕реНрдХреНрд░реАрди рдкрд░ рджреЛ рдХреБрд▓реНрд╣рд╛рдбрд╝рд┐рдпреЛрдВ рдореЗрдВ рд╕реЗрдВрд╕рд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рддреАрд╕рд░реЗ рдЕрдХреНрд╖ рдХреЗ рдмрдЬрд╛рдп, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рджрд┐рд╢рд╛ рдЪрд░ "рджрд┐рд╢рд╛" рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдФрд░ рд╡рд╣реА рдбреЗрдЯрд╛ рдмрд╛рдЗрдЯ рд╕реНрдЯреНрд░реАрдо рд╕реЗ рд▓реЗрдХрд░ рдХрд╛рд░реНрдЯ рддрдХ рдЪрд▓рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдзрд╛рд░рд╛ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рдмрд╛рдЗрдЯ рд╣реИ, рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛ рдХрд┐ "рдлреЙрд░рд╡рд░реНрдб" рдпрд╛ "рд╕реНрдЯреЙрдк" рдХрдорд╛рдВрдб рдХрд╣рд╛рдВ рд╣реЛрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдмрд╕ рдХрд╛рдо рдХрд┐рдпрд╛: рдЭреБрдХрд╛рд╡ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рджрд┐рд╢рд╛ рдФрд░ рдХреЛрдг рдХреА рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рдЕрдкрдиреА рд╕реАрдорд╛ рд╣реЛрддреА рд╣реИред рдореЛрдЯреЗ рддреМрд░ рдкрд░, 1-20 рдЗрд╕реА рдЧрддрд┐ рдХреЗ рд╕рд╛рде "рдЖрдЧреЗ" рд╣реИ, 21-40 "рдкрд┐рдЫрдбрд╝реЗ" рдФрд░ рдЗрддрдиреЗ рдкрд░ рд╣реИред рдмреЗрд╢рдХ, рдпреВрдбреАрдкреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рдбреЗрдЯрд╛ рд╕рдВрдЪрд╛рд░рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛, рдФрд░ рдирд┐рдпрдВрддреНрд░рдг рдХрдорд╛рдВрдб рдХреЛ рдЯреАрд╕реАрдкреА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдзрд┐рдХ рд╕рд╣реА рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЦреБрдж ESP8266 рдкрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдПрдбрд┐рдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдореИрдВ рдЕрднреА рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ред
рддреЛ, рдЧрд╛рдбрд╝реА рдЕрдкрд╛рд░реНрдЯрдореЗрдВрдЯ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреВрдо рд░рд╣реА рд╣реИ, рдореЗрд░реЗ рдЧреИрд▓реЗрдХреНрд╕реАрдПрд╕ 7 рдХреЗ рдврд▓рд╛рдиреЛрдВ рдкрд░ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗ рд░рд╣реА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЬреИрд╕рд╛ рдХрд┐ рдХреБрдЦреНрдпрд╛рдд рд╡реЗрдиреНрдпрд╛ рдХрд╣рддрд╛ рдерд╛, рдЕрднреА рднреА рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред
тАЬрдЕрдм рдореИрдВ рдЖрдкрдХреЛ рдЕрдВрддрд┐рдо рдФрд░ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реВрдВред "рд╢реНрд░рдо рдХрд╛ рдореБрдХреБрдЯ, рд╕рднреА рдкреБрд░рд╕реНрдХрд╛рд░реЛрдВ рд╕реЗ рдКрдкрд░," рдЬреИрд╕рд╛ рдХрд┐ рдХрд╡рд┐ рдиреЗ рдХрд╣рд╛ред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдореИрдВ рдЖрдкрдХреЛ "рдСрдлрд▓ рдСрдл" рдХреЙрдХрдЯреЗрд▓, рдПрдХ рдкреЗрдп рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рд╕рдм рдХреБрдЫ рджреЗрдЦ рд▓реЗрддрд╛ рд╣реИред рдпрд╣ рдЕрдм рдПрдХ рдкреЗрдп рдирд╣реАрдВ рд╣реИ - рдпрд╣ рдЧреЛрд▓реЗ рдХрд╛ рд╕рдВрдЧреАрдд рд╣реИред "
рд╕рд┐рд░реА рдФрд░ рдПрд▓реЗрдХреНрд╕рд╛ рдХреЗ рдЗрд╕ рдпреБрдЧ рдореЗрдВ, рдХреНрдпрд╛ рдЖрдкрдХреЗ рд╣рд╛рдереЛрдВ рдХреЛ рдореЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣реИ? рдЖрд╡рд╛рдЬ рдирд┐рдпрдВрддреНрд░рдг рдЖрдЬреНрдЮрд╛ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ!
рдФрд░ рдЕрдм рдореЗрд░реЗ рд▓рд┐рдП рд╕реБрдиреЛ!
рдореИрдВ рдмреЛрд▓реА:
рджрд░рдЕрд╕рд▓, рдПрдВрдбреНрд░реЙрдЗрдб рдореЗрдВ рднрд╛рд╖рдг рдорд╛рдиреНрдпрддрд╛ рдФрд░ рднрд╛рд╖рдг рд╕рдВрд╢реНрд▓реЗрд╖рдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рд╕рднреА рдЬрдЯрд┐рд▓ рдЧрдгрдирд╛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рд╣рдорд╕реЗ рдЫрд┐рдкреА рд╣реБрдИ рд╣реИрдВред рдЖрдк рдЗрд╕ рдкрд╛рда рдореЗрдВ рдорд╣рд╛рд░рдд рд╣рд╛рд╕рд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рднрд▓реЗ рд╣реА рдЖрдкрдХреЗ рдкрд╛рд╕ Android рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛ рдмрд╣реБрдд рд╕рддрд╣реА рдЬреНрдЮрд╛рди рд╣реЛред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореЗрд░реЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рднрджреНрджрд╛ рдирд┐рдХрд▓рд╛, рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдФрд░ рдЗрд╕ рдПрдкреАрдЖрдИ рдореЗрдВ рдареАрдХ рд╕реЗ рдЦреБрджрд╛рдИ рдирд╣реАрдВ рдХреАред рд╕рдм рдХреБрдЫ рдЗрдВрдЯреЗрдВрдЯреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреА рдорджрдж рд╕реЗ рд╣рдо Google рд╡реЙрдЗрд╕ рдЗрдВрдЬрди рдХреА рдУрд░ рдореБрдбрд╝рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН рдЗрд╕рдХреЗ рднрд╛рд╖рдг рдорд╛рдиреНрдпрддрд╛ рд╕рдорд╛рд░реЛрд╣ рдХреЗ рд▓рд┐рдПред рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдХрд╛рдордХрд╛рдЬреА рдЗрдВрдЯрд░рдиреЗрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдлрд┐рд░ рд╕реЗ рдХреЗрд╡рд▓ MainActivity.java рдмрджрд▓рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВрдиреЗ рд▓реЗрдЖрдЙрдЯ рдХреЛ рдереЛрдбрд╝рд╛ рдФрд░ рдмрджрд▓ рджрд┐рдпрд╛ (рдЪрд╛рд░ рдмрдЯрди рдЕрдм рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмреЗрдХрд╛рд░ рд╣реИрдВ, рдПрдХ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ)ред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд MainActivity.java рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ:
рд╡рд╣реА рдЗрд░рд╛рджрд╛:
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); intent.putExtra(RecognizerIntent.EXTRA_PROMPT, ", , -??? "); startActivityForResult(intent, Print_Words);
рдФрд░ рдпрд╣ рдХреНрдпрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ:
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {
рдФрд░ рд╡рд╣ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдХреЛрд╖реНрдардХ рдФрд░ рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рдХреЗ рд╕рд╛рде рд╕рдорд╛рди рд╢рдмреНрджреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рджреЗрддрд╛ рд╣реИ, рдФрд░ "рдХрдЪрд░рд╛ рд░реВрдк" рдореЗрдВред рдФрд░ рдЖрдкрдХреЛ рдмрд╕ рдПрдХ рд╢рдмреНрдж рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдЖрдкрдиреЗ рдХрд╣рд╛ рдерд╛ред рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдФрд░ рддрджрдиреБрд╕рд╛рд░, рдпрджрд┐ рд╢рдмреНрдж "рдЖрдЧреЗ" рдкрдХрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ, рдЕрдЧрд░ "рд╕рд╣реА" рддреЛ рджрд╛рдИрдВ рдУрд░ рдФрд░ рдЗрд╕реА рддрд░рд╣ред рдмреЗрд╢рдХ, рд╣рдореЗрдВ "рдИ" рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд╣рд╛рдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рд╕рдВрд▓рдЧреНрди рд╣реИ (рдореИрдВ рдХреЛрд╖реНрдардХ рдХрд╛рдЯ рджреЗрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рддрд╛рдХрдд рдирд╣реАрдВ рд╣реИ)ред
рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, MainActivity.java рдХрд╛ рдкрд╛рда рд╣реА рдРрд╕рд╛ рдмрди рдЧрдпрд╛ import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.widget.ImageButton; import android.widget.TextView; import java.util.ArrayList; import android.content.Intent; import android.speech.RecognizerIntent; public class MainActivity extends AppCompatActivity { private ImageButton mButtonUP; public static byte direction = 100; public String stroka_otveta; private static final int Print_Words = 100; private TextView EnteredText1; private TextView EnteredText2; public static TextView EnteredText3; private boolean slovo_raspoznano =false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); new Udp_client(); new HTTP_client(40000); EnteredText1 = (TextView) findViewById(R.id.textViewX);
рдЦреИрд░, рдПрдХ рдмрдЯрди рдХреЗ рд╕рд╛рде рдвреЗрд░ рд▓реЗрдЖрдЙрдЯ рддрдХ
activity_main.xmlред <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="mikhail_akhmetov.fourwheelsrobotandroidvoice.MainActivity"> <ImageButton android:id="@+id/imageButtonUP" style="@android:style/Widget.ImageButton" android:layout_width="160dp" android:layout_height="146dp" android:layout_marginTop="8dp" android:background="@android:color/holo_orange_dark" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" app:srcCompat="@android:drawable/arrow_up_float" android:layout_marginBottom="8dp" app:layout_constraintBottom_toTopOf="@+id/linearLayout"/> <LinearLayout android:id="@+id/linearLayout" android:layout_width="368dp" android:layout_height="227dp" android:layout_marginBottom="11dp" android:layout_marginEnd="8dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" android:layout_marginStart="8dp" android:orientation="vertical" android:weightSum="1" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintHorizontal_bias="1.0" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent"> <TextView android:id="@+id/textViewTitle" android:layout_width="match_parent" android:layout_height="wrap_content" android:text=" " android:textColor="@android:color/holo_red_dark"/> <TextView android:id="@+id/textViewX" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0.28" /> <TextView android:id="@+id/textViewY" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0.28" /> <TextView android:id="@+id/textViewZ" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0.23" /> </LinearLayout> </android.support.constraint.ConstraintLayout>
рд╕рдмрд╕реЗ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╛рдЬ рдХреЗ рд▓рд┐рдП рд╕рд╡рд╛рд░реА рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕реБрдирддрд╛ рд╣реИ (рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ)ред рд▓реЗрдХрд┐рди, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдмреНрд░реЗрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕; рдЬрдм рддрдХ рдЖрдк рдХрд╣рддреЗ рд╣реИрдВ, рдЬрдм рддрдХ рдпрд╣ рдорд╛рдиреНрдпрддрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реИ рдФрд░ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧреА; рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдПрдХ рдЫреЛрдЯреА рдЧрддрд┐ рдЪреБрдиреЗрдВ рдпрд╛ рдХрдорд░рд╛ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рд╡реНрдпрд╛рдкрдХ рд╣реИред
рдЖрдЬ рдХреЗ рд▓рд┐рдП рдмрд╕ рдЗрддрдирд╛ рд╣реА, рдЕрдЧрд░ рдореБрдЭреЗ рдпрд╣ рдкрд╕рдВрдж рдЖрдпрд╛ рддреЛ рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреАред
