рдордВрдЬрд┐рд▓ рдХреЗ рд▓рд┐рдП рдкреЗрдбрд▓: рдкреАрд╕реА рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдкреИрд░ рдореИрдирд┐рдкреБрд▓реЗрдЯрд░ рдмрдирд╛рдПрдВ


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

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

рдореБрдЭреЗ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?


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

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

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

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЖрдкрдХреЛ рдЖрд╢реНрд╡рд╕реНрдд рдХрд┐рдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ рд╕реАрдзреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред

рдЖрд╡рд╢реНрдпрдХ рд╕рдВрд╕рд╛рдзрди


  • рджрд░рдЕрд╕рд▓, рдкреИрдбрд▓ред рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХреБрдЫ рдХрдард┐рдирд╛рдЗрдпрд╛рдБ рддреБрд░рдВрдд рд╕рд╛рдордиреЗ рдЖрдИрдВ рдХрд┐ рдореИрдВ рдРрд╕реЗ рдкреИрдбрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд╛рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рдерд╛ред рдореБрдЭреЗ рдХреЗрд╡рд▓ рдЗрддрдирд╛ рдкрддрд╛ рдерд╛ рдХрд┐ рд╕рд┐рд▓рд╛рдИ рдорд╢реАрдиреЛрдВ рдореЗрдВ рдРрд╕реА рдЪреАрдЬреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЗрд▓реЗрдХреНрдЯреНрд░рд┐рдХ рдкреЗрдбрд▓ рдХреЗ рдЕрдиреБрд░реЛрдз рдкрд░ , рдореИрдВ рдЕрднреА рднреА рдЦреЛрдЬрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ рдХрд┐ рдореБрдЭреЗ рдПрд▓реАрдПрдХреНрд╕рдкреНрд░реЗрд╕ рдкрд░ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рджреЛ рдмрд╛рд░ рд╕реЛрдЪрдиреЗ рдХреЗ рдмрд┐рдирд╛, рдореИрдВрдиреЗ 3 рдЯреБрдХрдбрд╝реЗ рдХрд╛ рдЖрджреЗрд╢ рджрд┐рдпрд╛ред
  • рдирд┐рдпрдВрддреНрд░рдХред рдкреИрдбрд▓рдмреЛрд░реНрдб рдХреЛ рдХреАрдмреЛрд░реНрдб рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░, рд╕рдВрднрд╡рддрдГ, рдорд╛рдЙрд╕ рдХреЛ рдмрд┐рдирд╛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХреЗ рдкреАрд╕реА рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рд▓рд┐рдП, рдЕрд░реБрдбрд┐рдиреЛ рдкреНрд░реЛ рдорд╛рдЗрдХреНрд░реЛ рдмреЛрд░реНрдб рдПрдХрджрдо рд╕рд╣реА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕рдореЗрдВ рдХреБрдЫ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕реЗ рдпрдерд╛рд╕рдВрднрд╡ рдХреЙрдореНрдкреИрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рдо рдЙрд╕реА рдПрд▓рд┐рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕ рдЪрдорддреНрдХрд╛рд░ рдХреЗ рдЪреАрдиреА рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЦрд░реАрджрддреЗ рд╣реИрдВред
  • рддрд╛рд░реЛрдВред рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рддрд╣рдд 3 рдкреЗрдбрд▓ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдореАрдЯрд░ рдХреА рд▓рдВрдмрд╛рдИ рдХреЗ рд╕рд╛рде рдХрдо рд╕реЗ рдХрдо рдЪрд╛рд░-рддрд╛рд░ рддрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрд╣рд╛рдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
  • рдЖрд░рдЬреАрдмреА рдПрд▓рдИрдбреА рдФрд░ рдмрдЯрдиред рдкрд╣рд▓реЗ рдореЛрдб рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рд╣реИред
  • рдареАрдХ рд╣реИ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╣рдореЗрдВ рдПрдХ Arduino IDE, рдПрдХ рдЯрд╛рдВрдХрд╛ рд▓рдЧрд╛рдиреЗ рд╡рд╛рд▓рд╛ рд▓реЛрд╣рд╛ рдФрд░ рд╕реАрдзреЗ рд╣рдерд┐рдпрд╛рд░ рдЪрд╛рд╣рд┐рдПред

рдбрд┐рд╡рд╛рдЗрд╕ рдЖрд░реЗрдЦ


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



рдкреИрдбрд▓ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рдмрд╛рд░ рдореЗрдВ 4 рдкреЛрд░реНрдЯ рдкреАрдмреА 1-рдкреАрдмреА 4 рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдпрд╛рдиреА рдмрд╛рдПрдВ рдХреЗ рд▓рд┐рдП рджреЛ рдФрд░ рджрд╛рд╣рд┐рдиреЗ рдкреИрд░ рдХреЗ рд▓рд┐рдП рджреЛ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрдм рддрдХ рдореЗрд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ 3 рдкреИрдбрд▓ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡реЗ рд╕рднреА рдПрдХ рд╣реА рд╕рдореВрд╣ рдореЗрдВ рд╣реИрдВ рдФрд░ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рд╕реНрдерд┐рдд рд╣реИрдВред рдПрд▓рдИрдбреА рдХреЗ рддрд╣рдд, рдореИрдВрдиреЗ рдЖрдЙрдЯрдкреБрдЯ PD0, PD1 рдФрд░ PD4, рдмрдЯрди рдХреЗ рдиреАрдЪреЗ - PD7 рд▓рд┐рдпрд╛ред
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ рдХрд┐рд╕реА рднреА рдкреБрд▓-рдЕрдк рдкреНрд░рддрд┐рд░реЛрдзреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдпрджрд┐ рдЖрдк рдЙрди рд▓реЛрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рддрдм, рдЬрдм рдЖрдк рдПрдХ рдмрдЯрди рдпрд╛ рдкреЗрдбрд▓ рджрдмрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЗрдирдкреБрдЯ рдХрдо рд╣реЛрдЧрд╛, рдФрд░ рдЬрдм рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЙрдЪреНрдЪ рд╣реЛрдЧрд╛, рдЕрд░реНрдерд╛рдд, рдкреНрд░реЗрд╕ рдЙрд▓рдЯрд╛ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдЖрдкрдХреЛ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рднреВрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХреЛрдб рд▓реЗрдЦрди


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

рдЯреНрд░реЗрдирд┐рдВрдЧ


рдкрд╣рд▓реЗ рд╣рдореЗрдВ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкреЗрдбрд▓ рдХреНрдпрд╛ рд╣реИред рдореИрдВрдиреЗ рджреЛ рдореЗрдВ рд╕реЗ рдПрдХ рдореЛрдб рдХреЗ рдкреИрдбрд▓ рдХреЛ рд╕реЗрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ - рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдФрд░ рдЯреНрд░рд┐рдЧрд░ред рдЙрд╕реА рд╕рдордп, рдкреНрд░рддреНрдпреЗрдХ рдкреЗрдбрд▓ рдореЗрдВ рджреЛ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реЛрддреЗ рд╣реИрдВ: рдкрд╣рд▓рд╛ рдкреНрд░рджрд░реНрд╢рди рддрдм рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдкреЗрдбрд▓ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рдпрд╛ рдЯреНрд░рд┐рдЧрд░ рдореЛрдб рдореЗрдВ рд╡рд┐рд╖рдо рдкреНрд░реЗрд╕ рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИ, рджреВрд╕рд░рд╛ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдкреЗрдбрд▓ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рдЬрд╛рд░реА рд╣реЛрддрд╛ рд╣реИ рдпрд╛ рдЬрдм рдкреЗрдбрд▓ рдЯреНрд░рд┐рдЧрд░ рдореЛрдб рдореЗрдВ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рджрдмрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред рдкреЗрдбрд▓ рдореЗрдВ рдПрдХ рдмрдВрджрд░рдЧрд╛рд╣, рдПрдХ рд░рд╛рдЬреНрдп рдФрд░ рджреЛ рдЪрд░ рд╣реЛрддреЗ рд╣реИрдВ - рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ 1 рдФрд░ 2ред рдореБрдЭреЗ рдпрд╣ рд╕рдВрд░рдЪрдирд╛ рдорд┐рд▓реА:

struct pedal { char port; //   char state; //  ,   char oldState; //  ,   char pos1; //  1 char pos2; //  2 unsigned char type; //0 тАФ   , 1 тАФ  ; unsigned char act1[16]; // 1 unsigned char act2[16]; // 2 }; 

Arduino рдореЗрдВ рдореЗрдореЛрд░реА рдмрд╣реБрдд рдХрдо рд╣реИ рдФрд░ 8-рдмрд┐рдЯ рднреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЬрд╣рд╛рдВ рд╕рдВрднрд╡ рд╣реЛ рд╡рд╣рд╛рдВ рдЗрдВрдЯ рдХреЗ рдмрдЬрд╛рдп рдЪрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред

рд╣рдореЗрдВ рдХреАрдмреЛрд░реНрдб рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рдХреАрдмреЛрд░реНрдб рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ


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

 void pedalAction() { //255  ,     if (pedal1->type == 255) return; //     unsigned char *prg; //     char *pos; if (pedal1->type) { //       int current; if ((current = digitalRead(ports[num])) != oldState[num]) { if (!current) state[num] = !state[num]; oldState[num] = current; } if (!state[num]) { //act1 pos2[num] = 0; pos = &(pos1[num]); prg = pedal1->act1; } else { //act2 pos1[num] = 0; pos = &(pos2[num]); prg = pedal1->act2; } } else { //        if (!digitalRead(ports[num])) { //act1 pos2[num] = 0; pos = &(pos1[num]); prg = pedal1->act1; } else { //act2 pos1[num] = 0; pos = &(pos2[num]); prg = pedal1->act2; } } while (1) { if (prg[*pos] == 254) { // ,   *pos Keyboard.press(prg[++*pos]); } else if (prg[*pos] == 253) { // ,   *pos Keyboard.release(prg[++*pos]); } else if (prg[*pos] == 252) { //" ",    ++*pos; return; } else if (prg[*pos] == 251) { //       *pos+1 *pos = prg[*pos + 1]; return; } else if (prg[*pos] == 255 || prg[*pos] == 0) { // ,   return; } else { //   Keyboard.write(prg[*pos]); } //       ,     if (++*pos>=16) pos = 0; } } 

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕реА рдХреЗ рдЙрдЪреНрдЪрддрдо рд╕реНрддрд░ рдХреЗ рдЬреНрдЮрд╛рди рд╡рд╛рд▓реЗ рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рд╕рд╡рд╛рд▓ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдлрд╝рдВрдХреНрд╢рди рд╡рд╛рдВрдЫрд┐рдд рдкреЗрдбрд▓ рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдкреИрдбрд▓ рдХреЗ рдореЛрдб рдФрд░ рд╕реНрдерд┐рддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдХреМрди рд╕рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рд░рдгреА рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЛ рдкрдврд╝рддреЗ рд╕рдордп, рдпрджрд┐ рдпрд╣ рдПрдХ рдирд┐рдпрдВрддреНрд░рдг рдЪрд░рд┐рддреНрд░ рдирд╣реАрдВ рд╣реИ, рддреЛ Keyboard.write () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рдХреБрдВрдЬреА рдХреЛ рджрдмрд╛рдиреЗ рдФрд░ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддрд╛ рд╣реИред рдирд┐рдпрдВрддреНрд░рдг рд╡рд░реНрдгреЛрдВ рдХреЛ рдЕрд▓рдЧ рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХреБрдВрдЬреА рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХреЛ рдЬрдХрдбрд╝рдиреЗ рдФрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдХреАрдмреЛрд░реНрдб рдореЛрдб рдХреА рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ
рдХреАрдмреЛрд░реНрдб.рд░рд╛рдЗрдЯ () рдореЗрдВ рдХреБрдЫ рд╕рд░рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рд╢реБрд░реБрдЖрддреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рдЗрд╕ рддрдереНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд┐ рд╣рдо рдбреЗрдЯрд╛ рдХреЛ рдХрдЪреНрдЪреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рднреЗрдЬрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреАрд╕реНрдЯреНрд░реЛрдХреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╡рд┐рдЪрд┐рддреНрд░ рд░реВрдк рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд, рдЕрддрд┐рд░рд┐рдХреНрдд рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХреЗ рдмрд┐рдирд╛, рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗрд╡рд▓ рдХреАрдмреЛрд░реНрдб рдкрд░ рдореМрдЬреВрдж рдХреАрдмреЛрд░реНрдб рд╕реЗ рдкрд╛рддреНрд░реЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдо рдХрд┐рд╕реА рднреА 0x03 (рд╡реНрдпрд╡рдзрд╛рди рд╕рдВрдХреЗрдд) рдпрд╛ 0x1B (ESPAPE рдЕрдиреБрдХреНрд░рдо рдХреА рд╢реБрд░реБрдЖрдд) рдХреЛ рднреЗрдЬрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред рджреВрд╕рд░реЗ, рд╣рдо рдмрдбрд╝реЗ рдЕрдХреНрд╖рд░реЛрдВ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ ASCII рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдорд╢реАрди рдХреЛ рдХреБрдВрдЬреА рд╕рдВрдпреЛрдЬрди Shift + <рдирд┐рдЪрд▓рд╛ рдЕрдХреНрд╖рд░> рдорд┐рд▓реЗрдЧрд╛ред рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдмрди рд╕рдХрддреА рд╣реИ рдЕрдЧрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреИрдкреНрд╕рд▓реЙрдХ рд╕рдХреНрд╖рдо рд╣реИ рдФрд░ рд╣рдо рдмрдбрд╝реЗ рдЕрдХреНрд╖рд░реЛрдВ рдХреЗ рдмрдЬрд╛рдп рдЫреЛрдЯреЗ рдЕрдХреНрд╖рд░реЛрдВ рдХреЛ "рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд░реВрдк рд╕реЗ" рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрддред рддреАрд╕рд░рд╛, рд╣рдо рд░реВрд╕реА рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рд╕рд╛рде рд╣реА рдХрд┐рд╕реА рдЕрдиреНрдп рднрд╛рд╖рд╛ рдореЗрдВ рднреАред рдХреБрдВрдЬреА рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдРрд╕реА рдХрд╖реНрдЯрдкреНрд░рдж рдЪреАрдЬреЛрдВ рдХреЗ рдХрд╛рд░рдг рдпрд╣ рдлрд┐рд░ рд╕реЗ рд╣реЛрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐ Keyboard.write () рдЗрд╕реЗ рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЬрд┐рд╕ рдХреБрдВрдЬреА рдорд╛рдирдХ рдЕрдВрдЧреНрд░реЗрдЬреА рд▓реЗрдЖрдЙрдЯ рдореЗрдВ рд╣реИ, рдЙрд╕рдХреЗ рдЕрдиреБрд░реВрдк рдХреЛрдб рдЕрднреА рднреА USB рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЕрдЧрд░ рд╣рдо рд╕рд┐рд░рд┐рд▓рд┐рдХ рд╡рд░реНрдгрдорд╛рд▓рд╛ рднреЗрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓реЗрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рд╣рдо Arduino рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдкрдиреЗ рд░реВрд╕реА-рднрд╛рд╖реА рджреЛрд╕реНрддреЛрдВ рдХреЛ рдирдорд╕реНрддреЗ рдХрд╣рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдХреЛрдб рдореЗрдВ рд╣рдореЗрдВ "рдЧрдмреНрдбреЗрдЯ" рд▓рд┐рдЦрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ, рдФрд░ рдлрд┐рд░ рд░реВрд╕реА рд▓реЗрдЖрдЙрдЯ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рднреЗрдЬреЗрдВред рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ "рдЧреНрд░реАрдЯрд┐рдВрдЧ" рдпреВрдХреНрд░реЗрдиреА рд▓реЗрдЖрдЙрдЯ рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдмрд▓реНрдЧреЗрд░рд┐рдпрд╛рдИ рдореЗрдВ, рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдПрдХ рд╕рд┐рд░рд┐рд▓рд┐рдХ рд╡рд░реНрдгрдорд╛рд▓рд╛ рднреА рд╣реИ, рдЗрд╕рд╕реЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЖрдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдкрддреНрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЬрдЧрд╣реЛрдВ рдкрд░ рд╣реИрдВред (рдореИрдВрдиреЗ рдПрдХ рдмрд╛рд░ рдпрд╣ рд░рд╛рдп рд╕реБрдиреА рдереА рдХрд┐ рдХрдИ рдЕрдореЗрд░рд┐рдХреА рдФрд░ рдЕрдВрдЧреНрд░реЗрдЬреА рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рдордЭ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХреЛ рдХрдИ рд▓реЗрдЖрдЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡рд┐рдЪ рднреА рдХрд░ рд╕рдХрддрд╛ рд╣реИред)

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

 struct pedal *pedal1 = {15, 0, 0, 0, 0, 0, "Hello, world!\0", 0}; void prepare () { pinMode(15, 2); //2 - INPUT_PULLUP,        Keyboard.begin(); } void loop() { pedalAction(); } 

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

рдПрдХ рдкреЗрдбрд▓ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдФрд░ рджреЛ рдмреЗрд╣рддрд░ рд╣реИ


рдЕрдм рдХрдИ рдкреИрдбрд▓ рд╕реЗ рд╕рдВрдХреЗрддреЛрдВ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХрд╛ рд╕рдордп рд╣реИ, рд╕рд╛рде рд╣реА рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рдореЛрдб рднреА рдЬреЛрдбрд╝реЗрдВред рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, 4 рдкреЛрд░реНрдЯ рдкреЗрдбрд▓ рдХреЗ рд▓рд┐рдП рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдП рдЧрдП рдереЗ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рд╕рд╛рдд рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред рдХреНрдпреЛрдВ 7? рдХреНрдпреЛрдВрдХрд┐ PWM рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛, рд╣рдорд╛рд░реА рдПрд▓рдИрдбреА рдХреЗрд╡рд▓ 7 рд░рдВрдЧ рджреЗ рд╕рдХрддреА рд╣реИ, рдФрд░ рдЖрдард╡реЗрдВ рдмрдВрджред рдпрд╣ рд░рд╛рд╢рд┐ рдФрд╕рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рд▓реЗрдХрд┐рди рдЪрд░рдо рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рд╣рдо рдкреИрдбрд▓ рдХреЛ 7 x 4 рдХреЗ рджреЛ-рдЖрдпрд╛рдореА рд╕рд░рдгреА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВрдЧреЗред рдореЗрдореЛрд░реА рдХреЛ рд░реЛрдХрдирд╛ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрдИ рд╕рдВрд░рдЪрдирд╛рдУрдВ, рдЬреИрд╕реЗ рдХрд┐ рдкреЛрд░реНрдЯ рдирдВрдмрд░, рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдорд╛рди рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рд░рдгрд┐рдпреЛрдВ рдореЗрдВ рдирд┐рдХрд╛рд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рдХреБрдЫ рдРрд╕рд╛ рдорд┐рд▓рддрд╛ рд╣реИ:

 struct pedal { unsigned char type; unsigned char act1[16]; unsigned char act2[16]; }; struct pedal pedals[7][4] = { { { 255, {"Hello, world!\0"}, {255}}, {255, {255}, {255}}, {255, {255}, {255}}, {255, {255}, {255}} }, { { 255, {255}, {255}}, {255, {255}, {255}}, {255, {255}, {255}}, {255, {255}, {255}} }, { { 255, {255}, {255}}, {255, {255}, {255}}, {255, {255}, {255}}, {255, {255}, {255}} }, { { 255, {255}, {255}}, {255, {255}, {255}}, {255, {255}, {255}}, {255, {255}, {255}} }, { { 255, {255}, {255}}, {255, {255}, {255}}, {255, {255}, {255}}, {255, {255}, {255}} }, { { 255, {255}, {255}}, {255, {255}, {255}}, {255, {255}, {255}}, {255, {255}, {255}} }, { { 255, {255}, {255}}, {255, {255}, {255}}, {255, {255}, {255}}, {255, {255}, {255}} } }; char ports[4] = {15, 16, 14, 8}; char pos1[4] = {0, 0, 0, 0}; char pos2[4] = {0, 0, 0, 0}; char state[4] = {0, 0, 0, 0}; char oldState[4] = {0, 0, 0, 0}; char mode = 0; //  char curPedal = 0; //   

255 рдХрд╛ рдЬрд╛рджреВ
рдЖрдкрдиреЗ рд╢рд╛рдпрдж рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рд▓реЗрдЦ рдореЗрдВ рд╕рдВрдЦреНрдпрд╛ 255 рдЕрдХреНрд╕рд░ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ, рдЬрд╣рд╛рдВ рдЗрд╕реЗ рд░рдЦрдирд╛ рдЕрдзрд┐рдХ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реЛрдЧрд╛ред рдЖрдЧреЗ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ, рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ EEPROM рдореЗрдВ рдкреИрдбрд▓ рднрдВрдбрд╛рд░рдг рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХрд╛рд░рдЦрд╛рдиреЗ рд╕реЗ рдЗрд╕рдХреА рдкреНрд░рддреНрдпреЗрдХ рдХреЛрд╢рд┐рдХрд╛ рдореЗрдВ 0 рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рд┐рд░реНрдл 255, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрдЦреНрдпрд╛ 0 рд╕реЗ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдЪрд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧреА, рддрд╛рдХрд┐ рдЖрдк рд╣рд░ рдмрд╛рд░ рдореЗрдореЛрд░реА рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рди рдХрд░реЗрдВред

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

 void prepare(){ pinMode(2, 1); pinMode(3, 1); pinMode(4, 1); pinMode(6, 2); for (int i : ports) pinMode(i, 2); Keyboard.begin(); } void loop() { for (int i = 0; i < 6; i++) { int current; if ((current = digitalRead(modeButton)) != last) { if (!current) { if (++mode >= 7) mode = 0; while (pedals[mode][0].type == 255 && pedals[mode][1].type == 255 && pedals[mode][2].type == 255 && pedals[mode][3].type == 255) if (++mode >= 7) { mode = 0; break; } } last = current; digitalWrite(2, (mode + 1) & 0b001); digitalWrite(3, (mode + 1) & 0b010); digitalWrite(4, (mode + 1) & 0b100); for (int i = 0; i < 4; i++) { pos1[i] = 0; pos2[i] = 0; state[i] = 0; oldState[i] = 0; } delay(50); } curPedal = i; pedalAction } } } 

рдирд┐рдпрдВрддреНрд░рдХ рдЕрдкреНрд░рдпреБрдХреНрдд рдореЛрдб рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдЧрд╛ рдпрджрд┐ рдЗрд╕рдореЗрдВ рдПрдХ рднреА рдкреЗрдбрд▓ рдШреЛрд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдореЛрдб = 255), рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЬрдм рдпрд╣ рд╣рд┐рдЯ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рддреБрд░рдВрдд рдЕрдЧрд▓реЗ рдкрд░ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдкрд╣рд▓рд╛ рдореЛрдб рд╣рдореЗрд╢рд╛ рдореМрдЬреВрдж рд░рд╣реЗрдЧрд╛ред рдореЛрдб рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╕рдордп, рд╕рд░рдгрд┐рдпреЛрдВ рдореЗрдВ рд╕рднреА рдорд╛рдиреЛрдВ рдХреЛ рд╢реВрдиреНрдп рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдореЛрдб (рджрд╛рдПрдВ?) рдХреЗ рд▓рд┐рдП рд╕рд╣реЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдФрд░ рдлрд┐рд░ рд▓реВрдк рд╕рднреА рдкреЗрдбрд▓ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдирдХреЗ рд▓рд┐рдП рдкреЗрдбрд▓рд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред

рд╕рд╛рде рд╣реА, рдкреИрдбрд▓рдПрд╢рди () рд╡рд┐рдзрд┐ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдЖрдкрдХреЛ рдирд┐рдореНрди рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рд╕рдордЭ рд╕рдХреЗ рдХрд┐ рдХрд┐рди рд╕рдВрд░рдЪрдирд╛рдУрдВ рд╕реЗ рдирд┐рдкрдЯрдирд╛ рд╣реИ:

 struct pedal *pedal1 = &pedals[mode][curPedal]; 

рдореМрдЬреВрджрд╛ рдкреЗрдбрд▓ 1 рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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

рдХрд╣рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рд╣рд╛рдБ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ


рдореИрдВрдиреЗ рдПрдХ рд╕рд╛рдЗрдХрд┐рд▓ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рд╕рдорд╛рдкреНрдд ArduinoThread рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓рд┐рдпрд╛ред рдпрд╣рд╛рдВ рдЖрдк рдереЛрдбрд╝рд╛ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддрд╛ рд╣реИред рдЖрдк рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ Arduino IDE рд╕реЗ рд╣реА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпрд╣ рдЖрдкрдХреЛ рд╕рдордп-рд╕рдордп рдкрд░ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрдВрддрд░рд╛рд▓ рдХреЗ рд╕рд╛рде рдПрдХ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдпрджрд┐ рдЖрдк рдЕрдВрддрд░рд╛рд▓ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдПрдХ рдЕрдирдВрдд рд▓реВрдк рдореЗрдВ рдЬрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВред рдЖрдкрдХреЛ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдкреЗрдбрд▓ рдХреЗ рд▓рд┐рдП рдереНрд░реЗрдбреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рд╕рд░рдгреА рдмрдирд╛рдПрдВ:

 Thread pedalThreads[6] = {Thread(pedalAction, 10), Thread(pedalAction, 10), Thread(pedalAction, 10), Thread(pedalAction, 10), Thread(pedalAction, 10), Thread(pedalAction, 10)}; 

рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 6 рд╕рдорд╛рди рдЖрднрд╛рд╕реА рдзрд╛рдЧреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╡реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд╕реНрддреБрдПрдВ рд╣реИрдВред

рдЪрд▓реЛ рдирдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреИрдбрд▓ рдмрд╛рдИрдкрд╛рд╕ рдЪрдХреНрд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:

 ... for (int i = 0; i < 4; i++) { if (pedalThreads[i].shouldRun()) { curPedal = i; pedalThreads[i].run(); } } ... 

рдЕрдм рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕рд░рдгреА рдореЗрдВ рдорд╛рди 252, рдЬреЛ "рдХреБрдЫ рдирд╣реАрдВ рдХрд░рдиреЗ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ", 10 рдорд┐рд▓реАрд╕реЗрдХреЗрдВрдб рдХреА рджреЗрд░реА рджреЗрдЧрд╛ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдореЗрдВ рднреА рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ)ред рджреБрднрд╛рд╖рд┐рдпрд╛ рдореЗрдВ рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдпрд╣ рдХрдИ "рдХреНрд╡рд╛рдВрдЯрд╛" рдореЗрдВ рджреЗрд░реА рдХреЛ рд╕реЗрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛ рджреЗрдЧрд╛, рд╕рд░рдгреА рдХреЗ рдХреЗрд╡рд▓ 2 рдмрд╛рдЗрдЯреНрд╕ рдЦрд░реНрдЪ рдХрд░рдирд╛:

 ... if (wait[num]) { wait[num]--; return; } else if (prg[*pos] == 250) { wait[num] = prg[++*pos]; } ... 

рдЕрдиреНрдп рдЖрджреЗрд╢реЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЗрд╕ рдирд┐рд░реНрджреЗрд╢ рдХреЛ рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдареАрдХ рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрд░реНрдерд╛рддреН, "рдЬрдмрдХрд┐ (1) {" рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж, рдХреНрдпреЛрдВрдХрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЗ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╡рд┐рд▓рдВрдм рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рд░рдгреА рдХреЛ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ, рд░рд╛рдЬреНрдп рдЖрджрд┐ рдХреЗ рд╕рд╛рде рдХреА рдЧрдИ рдереАред рдФрд░ рдореЛрдб рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╕рдордп рдЗрд╕рдХреА рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рднреА рд░реАрд╕реЗрдЯ рдХрд░реЗрдВ, рддрд╛рдХрд┐ рджреЗрд░реА рджреВрд╕рд░реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рди рдЬрд╛рдПред

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

рдСрди-рдж-рдЧреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ


рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдпрд╣рд╛рдВ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рдХрд░рдирд╛ рдФрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдЕрд╕реЗрдВрдмрд▓ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрджрд┐ рдХреЛрдИ рдЕрдЪрд╛рдирдХ рдкреИрдбрд▓ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ Arduino IDE рдЦреЛрд▓рдирд╛ рд╣реЛрдЧрд╛, рдХреЛрдб рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдлрд╝рд░реНрдорд╡реЗрдпрд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдпрд╣ рд╡рд┐рдХрд▓реНрдк рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ Arduino рд╕реАрд░рд┐рдпрд▓ рдкреЛрд░реНрдЯ рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдЦреБрдж рдХреЛ EEPROM рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдЧреИрд░-рд╡рд╛рд╖реНрдкрд╢реАрд▓ рдореЗрдореЛрд░реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдорд╛рдирдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА EEPROM.h рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЛрдб рдХреЛрдб рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

 ... if (!digitalRead(modeButton)) { //  Serial.begin(9600); while (!Serial) { PORTD = 0b00000000 + (PORTD & 0b11101100); delay(250); PORTD = 0b00010000 + (PORTD & 0b11101100); delay(250); } Serial.println(F("***Programming mode***")); Serial.println(F("Write the command as <m> <p> <c>")); Serial.println(F("m - number of mode, one digit")); Serial.println(F("p - number of pedal, one digit")); Serial.println(F("c - command, it can be:")); Serial.println(F("\tr - read pedal info")); Serial.println(F("\tw - enter to writing mode and change pedal programm")); Serial.println(F("\te - erase pedal programm and delete it")); Serial.println(F("There are up to 7 modes and 6 pedals per mode can be configured")); Serial.println(F("Mode will be incative if there is no pedal configured in it")); while (1) { while (Serial.available()) { Serial.read(); delay(1); } PORTD = 0b00000001 + (PORTD & 0b11101100); Serial.println(""); Serial.println(F("Enter command")); while (!Serial.available()); PORTD = 0b00000010 + (PORTD & 0b11101100); delay(3); if (Serial.available() == 3) { int curMode = Serial.read() - 48; int curPedal = Serial.read() - 48; char cmd = Serial.read(); if (curMode > 6 || curMode < 0) { Serial.print(F("Mode must be in 0-6. You entered ")); Serial.println(curMode); continue; } if (curPedal > 3 || curPedal < 0) { Serial.print(F("Pedal must be in 0-3. You entered ")); Serial.println(curPedal); continue; } Serial.println(); if (cmd == 'r') { int beginAddress = sizeof(struct pedal) * (curMode * 6 + curPedal); Serial.print("type: "); int curAddress = beginAddress; Serial.println(EEPROM[curAddress++]); Serial.print("act1: "); for (int i = curAddress ; i < curAddress + (sizeof(struct pedal) - 1) / 2; i++) { Serial.print(EEPROM[i]); Serial.print("\t"); } Serial.println(); curAddress = beginAddress + 1 + (sizeof(struct pedal) - 1) / 2; Serial.print("act2: "); for (int i = curAddress ; i < curAddress + (sizeof(struct pedal) - 1) / 2; i++) { Serial.print(EEPROM[i]); Serial.print("\t"); } Serial.println(); } else if (cmd == 'w') { Serial.println(F("Enter type:")); PORTD = 0b00000001 + (PORTD & 0b11101100); while (!Serial.available()); int beginAddress = sizeof(struct pedal) * (curMode * 6 + curPedal); int curAddress = beginAddress; PORTD = 0b00000010 + (PORTD & 0b11101100); EEPROM[curAddress++] = (char)Serial.parseInt(); PORTD = 0b00000001 + (PORTD & 0b11101100); Serial.println(F("Enter act1 in DEC divided by space:")); while (Serial.available()) { Serial.read(); delay(1); } while (!Serial.available()); PORTD = 0b00000010 + (PORTD & 0b11101100); while (Serial.available()) { EEPROM[curAddress++] = (char)Serial.parseInt(); delay(1); } PORTD = 0b00000001 + (PORTD & 0b11101100); curAddress = beginAddress + 1 + (sizeof(struct pedal) - 1) / 2; Serial.println(F("Enter act2 in DEC divided by space:")); while (Serial.available()) { Serial.read(); delay(1); } while (!Serial.available()); PORTD = 0b00000010 + (PORTD & 0b11101100); while (Serial.available()) { EEPROM[curAddress++] = (char)Serial.parseInt(); delay(1); } PORTD = 0b00000001 + (PORTD & 0b11101100); Serial.println(F("Finished, don't forget to verify written data!")); } else if (cmd == 'e') { int beginAddress = sizeof(struct pedal) * (curMode * 6 + curPedal); Serial.println(F("Disabling pedal...")); PORTD = 0b00000010 + (PORTD & 0b11101100); EEPROM[beginAddress] = 255; PORTD = 0b00000001 + (PORTD & 0b11101100); Serial.println(F("Pedal disabled")); } } else { Serial.println(F("Incorrect command, please read help above")); } }; } ... 

рдЗрд╕ рдХреЛрдб рдХреЛ рдЗрд╕рдореЗрдВ рдирд┐рд╣рд┐рдд рдорджрдж рд╕реЗ рд╕рдордЭрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдореЛрдб рдирдВрдмрд░, рдкреЗрдбрд▓ рдирдВрдмрд░ рдФрд░ рдПрдХ рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдкреЗрд╕ рдирдВрдмрд░ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ 3 - рдкрдврд╝рдирд╛, рд▓рд┐рдЦрдирд╛ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдбрд┐рд▓реАрдЯ рдХрд░рдирд╛ рд╣реИред рдкреЗрдбрд▓ рдкрд░ рд╕рднреА рдбреЗрдЯрд╛ рдПрдХ рдХреЗ рдмрд╛рдж рдПрдХ 33 рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдХреНрд░рдо рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН, рдкреЗрдбрд▓ рдХрд╛ рдкреНрд░рдХрд╛рд░, рдФрд░ рджреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо, рдФрд░ рдпрд╣ рдХрд┐ рд╣рдо EEPROM рдХреЗ 1024 рдмрд╛рдЗрдЯреНрд╕ рдХреЗ 7 * 4 * 33 = 924 рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓реЗрддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рдореЗрдореЛрд░реА рдореЗрдВ рдкреИрдбрд▓ рдХреЗ рдЧрддрд┐рд╢реАрд▓ рдЖрдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдлреЗрдВрдХ рджрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЬрдм рдПрдХ рдкреЗрдбрд▓ рдХреЛ рд░реАрдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░рдиреЗ рдкрд░ рдЖрдкрдХреЛ рд▓рдЧрднрдЧ рд╕рднреА рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдкреБрдирд░реНрд▓реЗрдЦрди рдЪрдХреНрд░реЛрдВ рдХреА рдПрдХ рд╕реАрдорд┐рдд рд╕рдВрдЦреНрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рдпрдерд╛рд╕рдВрднрд╡ рдХрдо рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВред

EEPROM рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ
рдореИрдВ рдлрд╛рд░реНрдо рдХреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдкрд░ рднреА рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛:
  PORTD = 0b00000010 + (PORTD & 0b11101100); ... PORTD = 0b00000001 + (PORTD & 0b11101100); 

рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рдмрджреМрд▓рдд, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдЧреИрд░-рд╡рд╛рд╖реНрдкрд╢реАрд▓ рдореЗрдореЛрд░реА рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЪрд╛рд░реНрдЯ рд╣реИ, рд▓реЗрдХрд┐рди, "arduino" рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдореЗрдВ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ ROM рдкрд░ рд▓рд┐рдЦрдирд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рдореБрд╢реНрдХрд┐рд▓ рдСрдкрд░реЗрд╢рди рд╣реИ, рдЬреЛ рдХрдВрдЯреНрд░реЛрд▓рд░ рд╕реЗ ~ 3 рд╕реЗрдХрдВрдб рдореЗрдВ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рд▓реЗрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдмрд╛рдзрд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЙрдЪрд┐рдд рдирд╣реАрдВ рд╣реИред рдкреНрд░рдХреНрд░рд┐рдпрд╛ред рдпрд╣ рдбрд┐рдЬрд╝рд╛рдЗрди рдРрд╕реЗ рдСрдкрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдбрд╛рдпреЛрдб рдХреЛ рдЪрдордХрджрд╛рд░ рд▓рд╛рд▓ рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ "рд╕реБрд░рдХреНрд╖рд┐рдд" рд╣рд░реЗ рд░рдВрдЧ рдХреЛ рд╡рд╛рдкрд╕ рд▓реМрдЯрд╛рддрд╛ рд╣реИред

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

рдЫрдВрдЯрдиреА рдХрд┐рдП рдЧрдП рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рд╕рдВрд░рдХреНрд╖рдг рдХреЗ рд╕рд╛рде, рдЕрдм рд╣рдореЗрдВ рдХрд┐рд╕реА рддрд░рд╣ рдЕрдкрдиреЗ рдбреЗрдЯрд╛ рдХреЛ рд╡рд╣рд╛рдВ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдиреЗ рдФрд░ рдЗрд╕реЗ "рдкреЗрдбрд▓" рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ:

 ... for (int i = 0; i < 7; i++) { for (int j = 0; j < 4; j++) { struct pedal *p = &pedals[i][j]; int beginAddress = sizeof(struct pedal) * (i * 6 + j); int curAddress = beginAddress; unsigned char type = EEPROM[curAddress++]; if (type == 0 || type == 1) { p->type = type; for (int k = 0 ; k < 16; k++) { p->act1[k] = EEPROM[curAddress++]; } for (int k = 0 ; k < 16; k++) { p->act2[k] = EEPROM[curAddress++]; } } } } ... 

рдпрд╣рд╛рдВ рдХреБрдЫ рднреА рдЕрд▓реМрдХрд┐рдХ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ: рдирд┐рдпрдВрддреНрд░рдХ рдбреЗрдЯрд╛ рдХреЛ рдореЗрдореЛрд░реА рд╕реЗ рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдореМрдЬреВрджрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рднрд░рддрд╛ рд╣реИред

UART рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛ рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдбреНрд░рд╛рдЗрд╡рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдлреЛрди рд╕реЗ рднреА рдореИрдирд┐рдкреБрд▓реЗрдЯрд░ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдкреНрд░рджрд░реНрд╢рди




рдкреВрд░реНрдг рд╕реНрд░реЛрдд рдХреЛрдб


рд╡рд╣ рдпрд╣рд╛рдВ рд╣реИ
 #include <Keyboard.h> #include <Thread.h> #include <EEPROM.h> #define modeButton 6 struct pedal { unsigned char type; //0 тАФ   , 1 тАФ  , 255 тАФ    unsigned char act1[16]; unsigned char act2[16]; }; struct pedal pedals[7][4] = { { { 255, {255}, {255}}, {255, {255}, {255}}, {255, {255}, {255}}, {255, {255}, {255}} }, { { 255, {255}, {255}}, {255, {255}, {255}}, {255, {255}, {255}}, {255, {255}, {255}} }, { { 255, {255}, {255}}, {255, {255}, {255}}, {255, {255}, {255}}, {255, {255}, {255}} }, { { 255, {255}, {255}}, {255, {255}, {255}}, {255, {255}, {255}}, {255, {255}, {255}} }, { { 255, {255}, {255}}, {255, {255}, {255}}, {255, {255}, {255}}, {255, {255}, {255}} }, { { 255, {255}, {255}}, {255, {255}, {255}}, {255, {255}, {255}}, {255, {255}, {255}} }, { { 255, {255}, {255}}, {255, {255}, {255}}, {255, {255}, {255}}, {255, {255}, {255}} } }; char ports[4] = {8, 16, 15, 14}; char pos1[4] = {0, 0, 0, 0}; char pos2[4] = {0, 0, 0, 0}; char state[4] = {0, 0, 0, 0}; char oldState[4] = {0, 0, 0, 0}; char wait[4] = {0, 0, 0, 0}; void pedalAction(); char mode = 0; char curPedal; Thread pedalThreads[6] = {Thread(pedalAction, 10), Thread(pedalAction, 10), Thread(pedalAction, 10), Thread(pedalAction, 10), Thread(pedalAction, 10), Thread(pedalAction, 10)}; void setup() { pinMode(2, 1); pinMode(3, 1); pinMode(4, 1); pinMode(modeButton, 2); if (!digitalRead(modeButton)) { //  Serial.begin(9600); while (!Serial) { PORTD = 0b00000000 + (PORTD & 0b11101100); delay(250); PORTD = 0b00010000 + (PORTD & 0b11101100); delay(250); } Serial.println(F("***Programming mode***")); Serial.println(F("Write the command as <m> <p> <c>")); Serial.println(F("m - number of mode, one digit")); Serial.println(F("p - number of pedal, one digit")); Serial.println(F("c - command, it can be:")); Serial.println(F("\tr - read pedal info")); Serial.println(F("\tw - enter to writing mode and change pedal programm")); Serial.println(F("\te - erase pedal programm and delete it")); Serial.println(F("There are up to 7 modes and 6 pedals per mode can be configured")); Serial.println(F("Mode will be incative if there is no pedal configured in it")); while (1) { while (Serial.available()) { Serial.read(); delay(1); } PORTD = 0b00000001 + (PORTD & 0b11101100); Serial.println(""); Serial.println(F("Enter command")); while (!Serial.available()); PORTD = 0b00000010 + (PORTD & 0b11101100); delay(3); if (Serial.available() == 3) { int curMode = Serial.read() - 48; int curPedal = Serial.read() - 48; char cmd = Serial.read(); if (curMode > 6 || curMode < 0) { Serial.print(F("Mode must be in 0-6. You entered ")); Serial.println(curMode); continue; } if (curPedal > 3 || curPedal < 0) { Serial.print(F("Pedal must be in 0-3. You entered ")); Serial.println(curPedal); continue; } Serial.println(); if (cmd == 'r') { int beginAddress = sizeof(struct pedal) * (curMode * 6 + curPedal); Serial.print("type: "); int curAddress = beginAddress; Serial.println(EEPROM[curAddress++]); Serial.print("act1: "); for (int i = curAddress ; i < curAddress + (sizeof(struct pedal) - 1) / 2; i++) { Serial.print(EEPROM[i]); Serial.print("\t"); } Serial.println(); curAddress = beginAddress + 1 + (sizeof(struct pedal) - 1) / 2; Serial.print("act2: "); for (int i = curAddress ; i < curAddress + (sizeof(struct pedal) - 1) / 2; i++) { Serial.print(EEPROM[i]); Serial.print("\t"); } Serial.println(); } else if (cmd == 'w') { Serial.println(F("Enter type:")); PORTD = 0b00000001 + (PORTD & 0b11101100); while (!Serial.available()); int beginAddress = sizeof(struct pedal) * (curMode * 6 + curPedal); int curAddress = beginAddress; PORTD = 0b00000010 + (PORTD & 0b11101100); EEPROM[curAddress++] = (char)Serial.parseInt(); PORTD = 0b00000001 + (PORTD & 0b11101100); Serial.println(F("Enter act1 in DEC divided by space:")); while (Serial.available()) { Serial.read(); delay(1); } while (!Serial.available()); PORTD = 0b00000010 + (PORTD & 0b11101100); while (Serial.available()) { EEPROM[curAddress++] = (char)Serial.parseInt(); delay(1); } PORTD = 0b00000001 + (PORTD & 0b11101100); curAddress = beginAddress + 1 + (sizeof(struct pedal) - 1) / 2; Serial.println(F("Enter act2 in DEC divided by space:")); while (Serial.available()) { Serial.read(); delay(1); } while (!Serial.available()); PORTD = 0b00000010 + (PORTD & 0b11101100); while (Serial.available()) { EEPROM[curAddress++] = (char)Serial.parseInt(); delay(1); } PORTD = 0b00000001 + (PORTD & 0b11101100); Serial.println(F("Finished, don't forget to verify written data!")); } else if (cmd == 'e') { int beginAddress = sizeof(struct pedal) * (curMode * 6 + curPedal); Serial.println(F("Disabling pedal...")); PORTD = 0b00000010 + (PORTD & 0b11101100); EEPROM[beginAddress] = 255; PORTD = 0b00000001 + (PORTD & 0b11101100); Serial.println(F("Pedal disabled")); } } else { Serial.println(F("Incorrect command, please read help above")); } }; } for (int i : ports) pinMode(i, 2); pinMode(17, 1); for (int i = 0; i < 7; i++) { for (int j = 0; j < 4; j++) { struct pedal *p = &pedals[i][j]; int beginAddress = sizeof(struct pedal) * (i * 6 + j); int curAddress = beginAddress; unsigned char type = EEPROM[curAddress++]; if (type == 0 || type == 1) { p->type = type; for (int k = 0 ; k < 16; k++) { p->act1[k] = EEPROM[curAddress++]; } for (int k = 0 ; k < 16; k++) { p->act2[k] = EEPROM[curAddress++]; } } } } Keyboard.begin(); } int last = 0; void loop() { int current; if ((current = digitalRead(modeButton)) != last) { if (!current) { if (++mode >= 7) mode = 0; while (pedals[mode][0].type == 255 && pedals[mode][1].type == 255 && pedals[mode][2].type == 255 && pedals[mode][3].type == 255) if (++mode >= 7) { mode = 0; break; } } last = current; digitalWrite(2, (mode + 1) & 0b001); digitalWrite(3, (mode + 1) & 0b010); digitalWrite(4, (mode + 1) & 0b100); for (int i = 0; i < 4; i++) { pos1[i] = 0; pos2[i] = 0; state[i] = 0; oldState[i] = 0; wait[i] = 0; } delay(50); } for (int i = 0; i < 4; i++) { if (pedalThreads[i].shouldRun()) { curPedal = i; pedalThreads[i].run(); } } } void pedalAction() { struct pedal *pedal1 = &pedals[mode][curPedal]; if (pedal1->type == 255) return; unsigned char *prg; char *pos; if (pedal1->type) { int current; if ((current = digitalRead(ports[curPedal])) != oldState[curPedal]) { if (!current) state[curPedal] = !state[curPedal]; oldState[curPedal] = current; } if (!state[curPedal]) { //act1 pos2[curPedal] = 0; pos = &(pos1[curPedal]); prg = pedal1->act1; } else { //act2 pos1[curPedal] = 0; pos = &(pos2[curPedal]); prg = pedal1->act2; } } else { if (!digitalRead(ports[curPedal])) { //act1 pos2[curPedal] = 0; pos = &(pos1[curPedal]); prg = pedal1->act1; } else { //act2 pos1[curPedal] = 0; pos = &(pos2[curPedal]); prg = pedal1->act2; } } while (1) { if (wait[curPedal]) { wait[curPedal]--; return; } else if (prg[*pos] == 250) { wait[curPedal] = prg[++*pos]; } else if (prg[*pos] == 254) { // ,   *pos Keyboard.press(prg[++*pos]); } else if (prg[*pos] == 253) { // ,   *pos Keyboard.release(prg[++*pos]); } else if (prg[*pos] == 252) { delay(10); //" ",    ++*pos; return; } else if (prg[*pos] == 251) { //       *pos+1 *pos = prg[*pos + 1]; return; } else if (prg[*pos] == 255 || prg[*pos] == 0) { // ,   return; } else { //   Keyboard.write(prg[*pos]); } //       ,     if (++*pos >= 16) pos = 0; } } 


рдЕрдВрддрднрд╛рд╖рдг


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

рдЗрдХрдЯреНрдареЗ рдкреЗрдбрд▓рдмреЛрд░реНрдб:

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


All Articles