рдбрд┐рдЯреЗрдХреНрдЯрд┐рд╡ рдЯреВрдердкрд┐рдХ рд╕реЗ рд░реЗрдбрд┐рдпреЛ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд░рд╣рд╕реНрдп рдХрд╛ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ

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

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

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

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


рдорд╣рд╛рдХрд╛рд╡реНрдп рдХреА рд╡рд┐рдлрд▓рддрд╛

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

ред рджрд┐рди рдХреЗ рдирд╛рдпрдХ
рдЫрд╡рд┐
рдЫрд╡рд┐

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

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

ред рдпрд╣ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ рджрд┐рдЦрд╛рдпрд╛ рд╣реИ


ред рдСрдбреЗрд╕рд┐рдЯреА рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░реЗрдВ


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

рд░реВрдк рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐

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

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

ред рдпрджрд┐ рдЖрдк рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдмрдЯрди рджрдмрд╛рддреЗ рд╣реИрдВ рддреЛ рдпрд╣рд╛рдВ рдПрдХ рдЪрд┐рддреНрд░ рд╣реИ


ред рд╕рдордЭреЗрдВ рдХрд┐ рд╕рд┐рдЧреНрдирд▓ рдХрд╣рд╛рдБ рд╣реИ рдФрд░ рд╢реЛрд░ рдХрд╣рд╛рдБ рд╕рд░рд▓ рд╣реИред рдпрд╣рд╛рдВ рдЖрдк рдЖрдкрджрд╛ рдХреЗ рдкреИрдорд╛рдиреЗ рдХрд╛ рдЖрдХрд▓рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рд╕рдВрдХреЗрдд рд╕рд┐рд░реНрдл рдПрдХ рдмрдЯрди рд╣реИ
рдЫрд╡рд┐

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

ред рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рди рдХреЗрд╡рд▓ рд╕реАрдЦрдиреЗ рдХреА рдорд╛рдВ рд╣реИ, рдмрд▓реНрдХрд┐ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╕рд┐рдЧреНрдирд▓ рд░рд┐рд╕реЗрдкреНрд╢рди рдХреА рдХреБрдВрдЬреА рднреА рд╣реИ


рдЗрд╕реЗ рдореИрдВ рдХрд┐рд╕реНрдордд рдХрд╣рддрд╛ рд╣реВрдВ: рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЪрд╛рд▓ рдХреЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдХреЛрдбред

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

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

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

ред
рдЫрд╡рд┐

рдпрджрд┐ рдЖрдк рдФрд░ рднреА рдЕрдзрд┐рдХ рдмрдврд╝рд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдСрдбреЗрд╕рд┐рдЯреА рд▓рд╛рдЗрди рдореЗрдВ рджрд╛рд▓реЛрдВ рдХреА рд▓рдВрдмрд╛рдИ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдореИрдВрдиреЗ рд╕рднреА рдкрд╛рдВрдЪреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдерд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░рддреНрдпреЗрдХ рдкрд▓реНрд╕ рдХреЛ рдПрдХ рд╕реАрд░рд┐рдпрд▓ рдирдВрдмрд░ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рдерд╛ - рдпрд╣ Arduino рдореЗрдореЛрд░реА рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдЗрдЯ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдореИрдВрдиреЗ рдЕрднреА рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ 10 рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ рдФрд░ "рд╕рдВрдХреНрд╖рд┐рдкреНрдд" рд╕реЗ рдЧреНрд░рд╕реНрдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

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

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

рдкрд╣рд▓реА рдмрд╛рд░ рд╕реЗ рдХреБрдЫ рдирд╣реАрдВ рд╣реБрдЖред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдЕрдкреЗрдХреНрд╖рд┐рдд рдерд╛ред рдореБрдЭреЗ рдЙрдореНрдореАрдж рдирд╣реАрдВ рдереА рдХрд┐ рдпрд╣ рджреВрд╕рд░реА рдмрд╛рд░ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рд▓реЗрдХрд┐рди рдпрд╣ рдирд┐рдХрд▓рд╛ рдХрд┐ рдкреНрд░рддреНрдпрдХреНрд╖ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде (рдЕрд░реНрдерд╛рдд рдпрджрд┐ рдЖрд╡реЗрдЧ рдКрдкрд░ рд╣реИ - рд╣рдо OUTPUT / HIGH рдХреЛ рд╕рд╛рдВрдХреЗрддрд┐рдХ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдмрджрд▓рддреЗ рд╣реИрдВ) рд╕рдВрдХреЗрдд рдЙрд▓реНрдЯрд╛ рд╣реЛ рдЧрдпрд╛ - рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдпрд╣ рдЯреНрд░рд╛рдВрд╕рдореАрдЯрд░ рдХреА рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред рдЗрд╕реЗ рд╣рд▓ рдХрд░рдирд╛ рд╕рд░рд▓ рд╕реЗ рд╕рд░рд▓ рдерд╛: рд╣рдо рдХреЛрдб рдореЗрдВ рд╕реНрддрд░реЛрдВ рдХреЛ рдЙрд▓реНрдЯрд╛ рдХрд░рддреЗ рд╣реИрдВ (рдпрд╛рдиреА, рдкрд▓реНрд╕ рдЕрдк рдХреЛ OUTPUT / LOW рдХреЗ рд╕рд╛рде рдПрдиреНрдХреЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)ред рд╕рд┐рдореБрд▓реЗрд╢рди рдХреА рддреБрд▓рдирд╛ рдФрд░ рдореВрд▓ рд╕рдВрдХреЗрдд (рдСрдХреНрдЯреЗрдХреНрдЯреА рдореЗрдВ, рдЖрдВрдЦ рд╕реЗ) рдиреЗ рджрд╛рд▓реЛрдВ рдХреА рд▓рдВрдмрд╛рдИ рдореЗрдВ рдереЛрдбрд╝реА рд╡рд┐рд╕рдВрдЧрддрд┐ рднреА рджрд┐рдЦрд╛рдИ - рдореИрдВрдиреЗ рдЗрд╕реЗ рднреА рдареАрдХ рдХрд┐рдпрд╛ред

рдкрд╣рд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг, рдорд╣рд╛рди рдФрд░ рднрдпрд╛рдирдХ
int txPin = 9; // pin connected to RF transmitter int i; // counter to send command pulses int pulse; // count pulse repetitions int incomingByte = 0; // for incoming serial data // hard coded commands (see txButton): 1 - pulse start, 2 - zero, 3 - one, 4 - pause, 5 - low int button1[45]={44, 1, 2, 4, 2, 4, 2, 4, 3, 5, 2, 4, 2, 4, 3, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2}; int button2[43]={43, 1, 2, 4, 2, 4, 2, 4, 3, 5, 2, 4, 2, 4, 3, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 5, 3, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2}; int button3[41]={40, 1, 2, 4, 2, 4, 2, 4, 3, 5, 2, 4, 2, 4, 3, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 5, 3, 5, 3, 4, 2, 4, 2, 4, 2}; int button4[43]={42, 1, 2, 4, 2, 4, 2, 4, 3, 5, 2, 4, 2, 4, 3, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 5, 3, 4, 2, 4, 2, 4, 2}; int button5[43]={42, 1, 2, 4, 2, 4, 2, 4, 3, 5, 2, 4, 2, 4, 3, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 5, 2, 4, 3, 4, 2, 4, 2, 4, 2, 4, 2}; int button6[43]={42, 1, 2, 4, 2, 4, 2, 4, 3, 5, 2, 4, 2, 4, 3, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 5, 3, 4, 2, 4, 2, 4, 2, 4, 2}; int button7[41]={40, 1, 2, 4, 2, 4, 2, 4, 3, 5, 2, 4, 2, 4, 3, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 5, 3, 4, 2, 5, 3, 4, 2, 4, 2}; int button8[43]={42, 1, 2, 4, 2, 4, 2, 4, 3, 5, 2, 4, 2, 4, 3, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 5, 3, 4, 2, 4, 2}; int button9[43]={42, 1, 2, 4, 2, 4, 2, 4, 3, 5, 2, 4, 2, 4, 3, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 5, 2, 4, 2, 4, 3, 4, 2, 4, 2, 4, 2}; int button10[43]={42, 1, 2, 4, 2, 4, 2, 4, 3, 5, 2, 4, 2, 4, 3, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 5, 2, 4, 3, 4, 2, 4, 2, 4, 2}; int button11[41]={40, 1, 2, 4, 2, 4, 2, 4, 3, 5, 2, 4, 2, 4, 3, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 5, 3, 4, 2, 5, 2, 4, 3, 4, 2}; void setup () { pinMode(txPin, OUTPUT); Serial.begin(9600); Serial.println("Number = button; a to press 0; b to shut off all"); } void loop(){ if (Serial.available() > 0) { // read the incoming byte: incomingByte = Serial.read(); switch(incomingByte) { case 49: txButton(button1); Serial.println("Switching on 1"); break; case 50: txButton(button2); Serial.println("Switching on 2"); break; case 51: txButton(button3); Serial.println("Switching on 3"); break; case 52: txButton(button4); Serial.println("Switching on 4"); break; case 53: txButton(button5); Serial.println("Switching on 5"); break; case 54: txButton(button6); Serial.println("Switching on 6"); break; case 55: txButton(button7); Serial.println("Switching on 7"); break; case 56: txButton(button8); Serial.println("Switching on 8"); break; case 57: txButton(button9); Serial.println("Switching on 9"); break; case 97: txButton(button10); Serial.println("Switching on 0"); break; case 98: txButton(button11); Serial.println("Switching All off"); break; } } // end if serial available }// end void loop // transmit command. Due to transmitter (or something, I don't know) transmission code should be INVERTED. Ex: one is coded as LOW-delay->HIGH instead of HIGH-delay-LOW void txButton(int cmd[]) { Serial.print("Processing. Array size is "); Serial.println(cmd[0]); digitalWrite(txPin, HIGH); // not sure if its required, just an attempt to start transmission to enable AGC of the receiver delay(1000); for (pulse= 0; pulse <= 100; pulse=pulse+1) { // repeat command 100 times for (i = 1; i < cmd[0]+1; i = i + 1) { // transmit command switch(cmd[i]) { case 1: // start digitalWrite(txPin, HIGH); delayMicroseconds(550); digitalWrite(txPin, LOW); // Serial.print("s"); break; case 2: // "zero", that is short high spike digitalWrite(txPin, LOW); delayMicroseconds(110); digitalWrite(txPin, HIGH); // Serial.print("0"); break; case 3: // "one", that is long high spike digitalWrite(txPin, LOW); delayMicroseconds(303); digitalWrite(txPin, HIGH); // Serial.print("1"); break; case 4: // pause, that is short low spike digitalWrite(txPin, HIGH); delayMicroseconds(110); digitalWrite(txPin, LOW); // Serial.print("p"); break; case 5: // low, that is long low spike digitalWrite(txPin, HIGH); delayMicroseconds(290); digitalWrite(txPin, LOW); // Serial.print("l"); break; } } } } 



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

PROGMEM рдХреЗ рд╕рд╛рде рджреВрд╕рд░рд╛ рд╕рдВрд╕реНрдХрд░рдг
 #include <avr/pgmspace.h> // needed to use PROGMEM #define txPin 8 // pin connected to RF transmitter (pin 8) byte i; // command pulses counter for Livolo (0 - 100) byte pulse; // counter for command repeat // commands stored in PROGMEM arrays (see on PROGMEM use here: http://arduino.cc/forum/index.php?topic=53240.0) // first array element is length of command const prog_uchar button1[45] PROGMEM ={44, 1, 2, 4, 2, 4, 2, 4, 3, 5, 2, 4, 2, 4, 3, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2}; const prog_uchar button2[43] PROGMEM ={42, 1, 2, 4, 2, 4, 2, 4, 3, 5, 2, 4, 2, 4, 3, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 5, 3, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2}; const prog_uchar button3[41] PROGMEM ={40, 1, 2, 4, 2, 4, 2, 4, 3, 5, 2, 4, 2, 4, 3, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 5, 3, 5, 3, 4, 2, 4, 2, 4, 2}; const prog_uchar button4[43] PROGMEM ={42, 1, 2, 4, 2, 4, 2, 4, 3, 5, 2, 4, 2, 4, 3, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 5, 3, 4, 2, 4, 2, 4, 2}; const prog_uchar button5[43] PROGMEM ={42, 1, 2, 4, 2, 4, 2, 4, 3, 5, 2, 4, 2, 4, 3, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 5, 2, 4, 3, 4, 2, 4, 2, 4, 2, 4, 2}; const prog_uchar button7[41] PROGMEM ={40, 1, 2, 4, 2, 4, 2, 4, 3, 5, 2, 4, 2, 4, 3, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 5, 3, 4, 2, 5, 3, 4, 2, 4, 2}; const prog_uchar button11[41] PROGMEM ={40, 1, 2, 4, 2, 4, 2, 4, 3, 5, 2, 4, 2, 4, 3, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 5, 3, 4, 2, 5, 2, 4, 3, 4, 2}; // pointers to command arrays PROGMEM const prog_uchar *buttonPointer[] = {button1, button2, button3, button4, button5, button7, button11}; void setup() { // sipmle example: send button "button2" once. Note that array elements numbered starting from "0" (so button1 is 0, button2 is 1 and so on) txButton(1); } void loop() { } // transmitting part // zeroes and ones here are not actual 0 and 1. I just called these pulses for my own convenience. // also note that I had to invert pulses to get everything working // that said in actual command "start pulse" is long low; "zero" = short high; "one" = long high; "pause" is short low; "low" is long low. void txButton(byte cmd) { prog_uchar *currentPointer = (prog_uchar *)pgm_read_word(&buttonPointer[cmd]); // current pointer to command array passed as txButton(cmd) argument byte cmdCounter = pgm_read_byte(┬дtPointer[0]); // read array length for (pulse= 0; pulse <= 180; pulse = pulse+1) { // how many times to transmit a command for (i = 1; i < cmdCounter+1; i = i + 1) { // counter for reading command array byte currentCmd = pgm_read_byte(┬дtPointer[i]); // readpulse type from array switch(currentCmd) { // transmit pulse case 1: // start pulse digitalWrite(txPin, HIGH); delayMicroseconds(550); digitalWrite(txPin, LOW); break; case 2: // "zero" digitalWrite(txPin, LOW); delayMicroseconds(110); digitalWrite(txPin, HIGH); break; case 3: // "one" digitalWrite(txPin, LOW); delayMicroseconds(303); digitalWrite(txPin, HIGH); break; case 4: // "pause" digitalWrite(txPin, HIGH); delayMicroseconds(110); digitalWrite(txPin, LOW); break; case 5: // "low" digitalWrite(txPin, HIGH); delayMicroseconds(290); digitalWrite(txPin, LOW); break; } } } digitalWrite(txPin, LOW); } 



рд╕рд╛рдорд╛рдиреНрдп рдХрд╛ рдЖрд╡рдВрдЯрди

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

ред рдЕрд▓рдЧ-рдЕрд▓рдЧ рдмрдЯрди рдХреЛ рд╕реНрд▓рд╛рдЗрд╕ рдХрд░рдирд╛ - рдФрд░ рдЖрдк рддреБрд░рдВрдд рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкреИрдХреЗрдЬ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ


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

рдЖрдо рд╣рд┐рд╕реНрд╕рд╛ рдЕрдм рдПрдХ рдЕрд▓рдЧ рд╕рд░рдгреА рдореЗрдВ рдмрд╕ рдЧрдпрд╛ рд╣реИ
 #include <avr/pgmspace.h> // needed to use PROGMEM #define txPin 8 // pin connected to RF transmitter (pin 8) byte i; // command pulses counter for Livolo (0 - 100) byte pulse; // counter for command repeat // commands stored in PROGMEM arrays (see on PROGMEM use here: http://arduino.cc/forum/index.php?topic=53240.0) // first array element is length of command const prog_uchar start[30] PROGMEM = {1, 2, 4, 2, 4, 2, 4, 3, 5, 2, 4, 2, 4, 3, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2}; // remote ID - no need to store it with each command const prog_uchar button1[15] PROGMEM ={14, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2}; // only command bits const prog_uchar button2[13] PROGMEM ={12, 5, 3, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2}; const prog_uchar button3[11] PROGMEM ={10, 5, 3, 5, 3, 4, 2, 4, 2, 4, 2}; const prog_uchar button4[13] PROGMEM ={12, 4, 2, 4, 2, 5, 3, 4, 2, 4, 2, 4, 2}; const prog_uchar button5[13] PROGMEM ={12, 5, 2, 4, 3, 4, 2, 4, 2, 4, 2, 4, 2}; const prog_uchar button7[11] PROGMEM ={10, 5, 3, 4, 2, 5, 3, 4, 2, 4, 2}; const prog_uchar button11[11] PROGMEM ={10, 5, 3, 4, 2, 5, 2, 4, 3, 4, 2}; // pointers to command arrays PROGMEM const prog_uchar *buttonPointer[] = {start, button1, button2, button3, button4, button5, button7, button11}; void setup() { // sipmle example: send button "button2" once. Note that array elements numbered starting from "0" (so button1 is 0, button2 is 1 and so on) // Serial.begin(9600); } void loop() { txButton(3); delay(1000); } // transmitting part // zeroes and ones here are not actual 0 and 1. I just called these pulses for my own convenience. // also note that I had to invert pulses to get everything working // that said in actual command "start pulse" is long low; "zero" = short high; "one" = long high; "pause" is short low; "low" is long low. void txButton(byte cmd) { prog_uchar *currentPointer = (prog_uchar *)pgm_read_word(&buttonPointer[cmd]); // current pointer to command array passed as txButton(cmd) argument byte cmdCounter = pgm_read_byte(┬дtPointer[0]); // read array length prog_uchar *currentPointerStart = (prog_uchar *)pgm_read_word(&buttonPointer[0]); // current pointer to start command array for (pulse= 0; pulse <= 180; pulse = pulse+1) { // how many times to transmit a command for (i = 0; i<30; i=i+1) { byte currentCmd = pgm_read_byte(┬дtPointerStart[i]); sendPulse(currentCmd); // Serial.print(currentCmd); // Serial.print(", "); } for (i = 1; i < cmdCounter+1; i = i + 1) { // counter for reading command array byte currentCmd = pgm_read_byte(┬дtPointer[i]); // readpulse type from array sendPulse(currentCmd); // Serial.print(currentCmd); // Serial.print(", "); } } } void sendPulse(byte txPulse) { switch(txPulse) { // transmit pulse case 1: // start pulse digitalWrite(txPin, HIGH); delayMicroseconds(550); digitalWrite(txPin, LOW); break; case 2: // "zero" digitalWrite(txPin, LOW); delayMicroseconds(110); digitalWrite(txPin, HIGH); break; case 3: // "one" digitalWrite(txPin, LOW); delayMicroseconds(303); digitalWrite(txPin, HIGH); break; case 4: // "pause" digitalWrite(txPin, HIGH); delayMicroseconds(110); digitalWrite(txPin, LOW); break; case 5: // "low" digitalWrite(txPin, HIGH); delayMicroseconds(290); digitalWrite(txPin, LOW); break; } digitalWrite(txPin, LOW); } 



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

рдкреИрдЯрд░реНрди рдХреЗ рд▓рд┐рдП рдЦреЛрдЬреЗрдВ

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

рдпрд╣ рд╕рдордЭрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рджрд╛рд▓реЛрдВ рдХреЛ рдКрдкрд░ рдФрд░ рдиреАрдЪреЗ рдХреНрдпреЛрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╡рд┐рднрд┐рдиреНрди рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ), рдФрд░ рдЗрд╕реЗ рдХреИрд╕реЗ рд╕рдордЭреЗрдВред рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд╖реНрдХрд░реНрд╖реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реБрдИ:

1. рдЖрд╡реЗрдЧреЛрдВ рдХреЗ рдкрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдкрд╖реНрдЯ рдирд┐рдпрдо рд╣реИ: "рдЕрдк" рдЖрд╡реЗрдЧ рд╣рдореЗрд╢рд╛ рдкрд▓реНрд╕ рдЕрд╡рдзрд┐ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ "рдбрд╛рдЙрди" рдЖрд╡реЗрдЧ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реИред
2. рдореЗрд░реЗ рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рджреЛ рдЫреЛрдЯреА рджрд╛рд▓реЛрдВ рдХрд╛ рдЕрд░реНрде рд╣реИ "0"ред
3. рдЗрд╕реА рддрд░рд╣, рдордзреНрдпрдо рдЕрд╡рдзрд┐ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдирд╛рдбрд╝реА рдХрд╛ рдЕрд░реНрде рд╣реИ "1"ред
4. рднреЗрдЬрдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рд▓рдВрдмрд╛ рдЖрд╡реЗрдЧ рдПрдХ рд╢реБрд░реБрдЖрдд рдпрд╛ рд░реЛрдХ рд╣реИ, рдЬреЛ рдПрдХ рднреВрдорд┐рдХрд╛ рдирд╣реАрдВ рдирд┐рднрд╛рддрд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред

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

ред рд╕рднреА рдирд┐рдпрдореЛрдВ рджреНрд╡рд╛рд░рд╛


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

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

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрднреНрдпрд╛рд╕ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╕рднреА 16-рдмрд┐рдЯ рд░рд┐рдореЛрдЯ рдХрдВрдЯреНрд░реЛрд▓ рдЖрдЗрдбреЗрдВрдЯрд┐рдлрд╛рдпрд░ рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рдбрд░рд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ: рдПрдХ рд╣реА рдЕрднреНрдпрд╛рд╕ рдореЗрдВ, рдПрдХ рдЙрдкрдпреБрдХреНрдд рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдвреВрдВрдврдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред

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

рдФрд░ рдпрд╣рд╛рдБ рдкрд░рд┐рдгрд╛рдо рд╣реИ
 #define txPin 8 // pin connected to RF transmitter (pin 8) byte i; // just a counter byte pulse; // counter for command repeat boolean high = true; // pulse "sign" // keycodes #1: 0, #2: 96, #3: 120, #4: 24, #5: 80, #6: 48, #7: 108, #8: 12, #9: 72; #10: 40, #OFF: 106 // real remote IDs: 6400; 19303 // tested "virtual" remote ID: 8500, other IDs could work too, as long as they do not exceed 16 bit // known issue: not all 16 bit remote ID are valid // have not tested other buttons, but as there is dimmer control, some keycodes could be strictly system // use: sendButton(remoteID, keycode); // see void loop for an example of use void setup() { } void loop() { sendButton(6400, 120); // blink button #3 every 3 seconds using remote with remoteID #6400 delay(3000); } void sendButton(unsigned int remoteID, byte keycode) { for (pulse= 0; pulse <= 180; pulse = pulse+1) { // how many times to transmit a command sendPulse(1); // Start high = true; // first pulse is always high for (i = 16; i>0; i--) { // transmit remoteID byte txPulse=bitRead(remoteID, i-1); // read bits from remote ID selectPulse(txPulse); } for (i = 7; i>0; i--) { // transmit keycode byte txPulse=bitRead(keycode, i-1); // read bits from keycode selectPulse(txPulse); } } digitalWrite(txPin, LOW); } // build transmit sequence so that every high pulse is followed by low and vice versa void selectPulse(byte inBit) { switch (inBit) { case 0: for (byte ii=1; ii<3; ii++) { if (high == true) { // if current pulse should be high, send High Zero sendPulse(2); } else { // else send Low Zero sendPulse(4); } high=!high; // invert next pulse } break; case 1: // if current pulse should be high, send High One if (high == true) { sendPulse(3); } else { // else send Low One sendPulse(5); } high=!high; // invert next pulse break; } } // transmit pulses // slightly corrected pulse length, use old (commented out) values if these not working for you void sendPulse(byte txPulse) { switch(txPulse) { // transmit pulse case 1: // Start digitalWrite(txPin, HIGH); delayMicroseconds(500); // 550 digitalWrite(txPin, LOW); break; case 2: // "High Zero" digitalWrite(txPin, LOW); delayMicroseconds(100); // 110 digitalWrite(txPin, HIGH); break; case 3: // "High One" digitalWrite(txPin, LOW); delayMicroseconds(300); // 303 digitalWrite(txPin, HIGH); break; case 4: // "Low Zero" digitalWrite(txPin, HIGH); delayMicroseconds(100); // 110 digitalWrite(txPin, LOW); break; case 5: // "Low One" digitalWrite(txPin, HIGH); delayMicroseconds(300); // 290 digitalWrite(txPin, LOW); break; } } 



рд╣рдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдХрд┐рд░рд╛рдП рдкрд░ рджреЗрддреЗ рд╣реИрдВ

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

Arduino.cc рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рджрд┐рдП рдЧрдП рдирд┐рд░реНрджреЗрд╢ рдиреЗ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЕрдореВрд▓реНрдп рд╕рд╣рд╛рдпрддрд╛ рдкреНрд░рджрд╛рди рдХреАред рд░реВрд╕реА рдореЗрдВ, рдирд┐рд░реНрджреЗрд╢ Arduino.ru рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред

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

Lilvolo.h
 /* Livolo.h - Library for Livolo wireless switches. Created by Sergey Chernov, October 25, 2013. Released into the public domain. */ #ifndef Livolo_h #define Livolo_h #include "Arduino.h" class Livolo { public: Livolo(byte pin); void sendButton(unsigned int remoteID, byte keycode); private: byte txPin; byte i; // just a counter byte pulse; // counter for command repeat boolean high; // pulse "sign" void selectPulse(byte inBit); void sendPulse(byte txPulse); }; #endif 



Lilvolo.cpp
 /* Livolo.cpp - Library for Livolo wireless switches. Created by Sergey Chernov, October 25, 2013. Released into the public domain. 01/12/2013 - code optimization, thanks Maarten! http://forum.arduino.cc/index.php?topic=153525.msg1489857#msg1489857 */ #include "Arduino.h" #include "Livolo.h" Livolo::Livolo(byte pin) { pinMode(pin, OUTPUT); txPin = pin; } // keycodes #1: 0, #2: 96, #3: 120, #4: 24, #5: 80, #6: 48, #7: 108, #8: 12, #9: 72; #10: 40, #OFF: 106 // real remote IDs: 6400; 19303 // tested "virtual" remote IDs: 10550; 8500; 7400 // other IDs could work too, as long as they do not exceed 16 bit // known issue: not all 16 bit remote ID are valid // have not tested other buttons, but as there is dimmer control, some keycodes could be strictly system // use: sendButton(remoteID, keycode), see example blink.ino; void Livolo::sendButton(unsigned int remoteID, byte keycode) { for (pulse= 0; pulse <= 180; pulse = pulse+1) { // how many times to transmit a command sendPulse(1); // Start high = true; // first pulse is always high for (i = 16; i>0; i--) { // transmit remoteID byte txPulse=bitRead(remoteID, i-1); // read bits from remote ID selectPulse(txPulse); } for (i = 7; i>0; i--) { // transmit keycode byte txPulse=bitRead(keycode, i-1); // read bits from keycode selectPulse(txPulse); } } digitalWrite(txPin, LOW); } // build transmit sequence so that every high pulse is followed by low and vice versa void Livolo::selectPulse(byte inBit) { switch (inBit) { case 0: for (byte ii=1; ii<3; ii++) { if (high == true) { // if current pulse should be high, send High Zero sendPulse(2); } else { // else send Low Zero sendPulse(4); } high=!high; // invert next pulse } break; case 1: // if current pulse should be high, send High One if (high == true) { sendPulse(3); } else { // else send Low One sendPulse(5); } high=!high; // invert next pulse break; } } // transmit pulses // slightly corrected pulse length, use old (commented out) values if these not working for you void Livolo::sendPulse(byte txPulse) { switch(txPulse) { // transmit pulse case 1: // Start digitalWrite(txPin, HIGH); delayMicroseconds(500); // 550 // digitalWrite(txPin, LOW); break; case 2: // "High Zero" digitalWrite(txPin, LOW); delayMicroseconds(100); // 110 digitalWrite(txPin, HIGH); break; case 3: // "High One" digitalWrite(txPin, LOW); delayMicroseconds(300); // 303 digitalWrite(txPin, HIGH); break; case 4: // "Low Zero" digitalWrite(txPin, HIGH); delayMicroseconds(100); // 110 digitalWrite(txPin, LOW); break; case 5: // "Low One" digitalWrite(txPin, HIGH); delayMicroseconds(300); // 290 digitalWrite(txPin, LOW); break; } } 



readme.txt
 This is a library to control Livolo branded wireless switches. Features: - emulates buttons 1 to 0 and ALL OFF of Livolo remote controller Usage: Basically you need two things to get it to work: 1) Create Livolo instance 2) Use sendButton (unsigned int remoteID, byte keycode) function to "push" the buttons sendButton function uses to arguments: remote ID and keycode. Typically, remote IDs are 16 bit unsigned values, but not all of them are valid (maybe there are some IDs reserved only for system use or there is something I don't know). Tested remote IDs: - read from real remote IDs: 6400; 19303 - "virtual" remote IDs: 10550; 8500; 7400 You can try and find new IDs as well: put your switch into learning mode and start sendButton with remote ID you wish to use. If it is a valid ID, switch will accept it. Keycodes read from real remote: #1: 0, #2: 96, #3: 120, #4: 24, #5: 80, #6: 48, #7: 108, #8: 12, #9: 72; #10: 40, #OFF: 106 Keycodes are 7 bit values (actually I use 8 bit values, just skip most significant (leftmost) bit), but other keycodes could be reserved for system use (dimmer, for example). For an example sketch see blink.ino under examples folder. 



blink.ino
 // Simple blink example of Livolo.h library for Livolo wireless light switches #include <livolo.h> Livolo livolo(8); // transmitter connected to pin #8 void setup() { } void loop() { livolo.sendButton(6400, 120); // blink button #3 every 3 seconds using remote with remoteID #6400 delay(3000); } 



рдпрд╛ рд╕рднреА рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ ред

рдЬреЛ рдореИрдВ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдерд╛

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореИрдВ рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ - рд╕реНрд╡рд┐рдЪ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рд▓рд┐рд╡реЛрд▓реЛ рд░рд┐рдореЛрдЯ рдХрдВрдЯреНрд░реЛрд▓ рдХрд╛ рдЕрдиреБрдХрд░рдг, рд▓реЗрдХрд┐рди рдореИрдВ рдХрд┐рд╕реА рдореМрдЬреВрджрд╛ рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ "рдкрдврд╝" рдирд╣реАрдВ рд╕рдХрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬреЛ рдХреЛрдИ рднреА рдЕрдкрдиреЗ рд░рд┐рдореЛрдЯ рдХрдВрдЯреНрд░реЛрд▓ (Arduino рдХреЗ рд╕рд╛рде рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП) рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рдЙрд╕реЗ рдЕрдкрдиреЗ рд╕рд┐рдЧреНрдирд▓ рдХреЛ рдСрдбреЗрд╕рд┐рдЯреА (рдпрд╛ рдХреБрдЫ рд╕рдорд╛рди) рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдХреЛрдб рд╕рдВрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

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

рд╡рд╣ рд╕рдм рд╣реИред рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдкреВрд░реАред

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


All Articles