Arduin рдФрд░ LED, рдпрд╛ рдмрдЪреНрдЪреЛрдВ рдХреЗ рдбрд┐рдЬрд╝рд╛рдЗрдирд░ рдХреЛ рдХреИрд╕реЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд░реЗрдВ



рдореЗрд░реЗ рдмреЗрдЯреЗ рдиреЗ рдЪреБрдВрдмрдХреАрдп рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореИрдЧрдлреЙрд░реНрдорд░реНрд╕ рдкрд░ рджреГрдврд╝рддрд╛ рд╕реЗ "рд╣реБрдХ" рдХрд┐рдпрд╛ред рдПрдХ рдмрд╛рд░ рдлрд┐рдХреНрд╕рд┐рдХреНрд╕ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджреЗрдЦрдиреЗ рдкрд░ рдЬрд╣рд╛рдВ рдПрдХ рд╣реА рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рдЪрд┐рддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдмрдЪреНрдЪреЗ рдиреЗ рдкреВрдЫрд╛: "рдкрд┐рддрд╛рдЬреА, рдХреНрдпреЛрдВ рдлрд┐рдХреНрд╕реНрдЪрд░ рдореЗрдВ рд╡рд┐рд╡рд░рдг рд╣реИрдВ рдЬреЛ рдЪрдордХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ?"

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

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

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

рдкрд╣рд▓рд╛ рдХрджрдо


рдпрд╣ рдореБрдЭреЗ рд▓рдЧ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдПрдХ рдирд┐рдпрдорд┐рдд рдПрд▓рдИрдбреА (рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЖрд░рдЬреАрдмреА) рдкрд░ рдЪрдордХ рдЙрдмрд╛рдК рдФрд░ рдХреЗрд▓реЗ рд╣реИред рд▓реЗрдХрд┐рди WS8212 рдХреА рддрд░рд╣ рдХреБрдЫ рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд▓рдЧ рд░рд╣рд╛ рдерд╛ред рдИрдмреАрдИ рдкрд░, рдЖрдХрд╛рд░ рдореЗрдВ 16x16 рддрдХ рдХреЗ рджреЛрдиреЛрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдПрд▓ рдИ рдбреА рдФрд░ рдореИрдЯреНрд░реАрд╕ рдХреА рдкреЗрд╢рдХрд╢ рдХреА рдЧрдИ рдереАред рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореЙрдбреНрдпреВрд▓ рдЦрд░реАрджреЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ 4x4 рдореИрдЯреНрд░рд┐рдХреНрд╕ рдкрд░ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рд╡рд┐рднрд┐рдиреНрди рджреГрд╢реНрдп рдкреНрд░рднрд╛рд╡реЛрдВ рдореЗрдВ рд▓рд┐рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдПрд▓рдИрдбреА рд╣реИрдВ, рдЬрдмрдХрд┐ рдореЙрдбреНрдпреВрд▓ рдЖрдХрд╛рд░ рдореЗрдВ рдбрд┐рдЬрд╝рд╛рдЗрдирд░ рдХреЗ рд╡рд░реНрдЧ рдмреНрд▓реЙрдХ рдХреА рдЦрд┐рдбрд╝рдХреА рд╕реЗ рддреБрд▓рдиреАрдп рд╣реИред



рдПрд▓рдИрдбреА рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рдкрд┐рди рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рднреА рдЖрд░реНрдбрд┐рдиреЛ рдиреИрдиреЛ рдПрдХ рдмрд╕реНрдЯ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ (рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдорд╛рдорд▓реЗ рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрдЧрд╛)ред рд▓реЗрдХрд┐рди ATTiny85 рдирд┐рдпрдВрддреНрд░рдХ рдкрд░ digispark рдХреНрд▓реЛрди рд╕рд┐рд░реНрдл рд╕рд╣реА рдирд┐рдХрд▓рд╛ - рдЗрд╕рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдореЗрдореЛрд░реА рдФрд░ рдкрд┐рди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдПрд▓рдИрдбреА рдмреНрд▓рд┐рдВрдХрд░ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред рдореЙрдбреНрдпреВрд▓ Arduino IDE рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдХреАрдХреГрдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдмреЛрд░реНрдб рдкрд░ рдПрдХ USB рдмреВрдЯрд▓реЛрдбрд░ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рдФрд░ рдЖрд░рд╛рдорджрд╛рдпрдХ рд╣реИред рдореИрдВ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЗрд╕реЗ рдЖрдЬрдорд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рд╕рдмрд╕реЗ рд╕рд░рд▓ рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд┐рдпрд╛ред



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

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



рддреЛ, рдЕрдм USB рдмрд┐рдЬрд▓реА VIN рдкрд┐рди рдХреЛ рдЖрдкреВрд░реНрддрд┐ рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ рдлрд┐рд░ рдЪрд╛рд░реНрдЬрд░ рдЗрдирдкреБрдЯ рдкрд░ рдЬрд╛рддреА рд╣реИред рдЪрд╛рд░реНрдЬрд░ рдЖрдЙрдЯрдкреБрдЯ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдмреИрдЯрд░реА рд╕реАрдзреЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ) 5V рдкреИрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмреЛрд░реНрдб рдореЗрдВ рд╡рд╛рдкрд╕ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдпрджреНрдпрдкрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ 3 рд╕реЗ 4.2V (рдмреИрдЯрд░реА рд╡реЛрд▓реНрдЯреЗрдЬ) рд╣реЛрдЧрд╛, рдпрд╣ рдХрд╛рдлреА рд╕рд╛рдорд╛рдиреНрдп рд╣реИ - рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХрд╛ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╡реЛрд▓реНрдЯреЗрдЬ рд░реЗрдВрдЬ 1.8-5.5V рд╣реИред рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрд▓рдИрдбреА рдореЙрдбреНрдпреВрд▓ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ 2.7V рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ 3.2V рдХреЗ рдиреАрдЪреЗ рдиреАрд▓реЗ рдПрд▓рдИрдбреА рдХреА рдереЛрдбрд╝реА рдХрдореА рд╣реИ рдФрд░ рд░рдВрдЧ "рдлреНрд▓реЛрдЯ" рдкреАрд▓реЗ рд░рдВрдЧ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рд╛ рд╣реИред

рдКрд░реНрдЬрд╛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрд╢рд╛ рдСрди-рдбреА 2 рдПрд▓рдИрдбреА рднреА рдЧрд╛рдпрдм рд╣реЛ рдЧрдпрд╛ред рд╕рд╛рдорд╛рдиреНрдп рдпреЛрдЬрдирд╛ рдЕрдм рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ



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

рдореИрдВрдиреЗ eBay рдкрд░ рдПрдХ 6x25x35 рдЖрдХрд╛рд░ рдХреА рдмреИрдЯрд░реА рдЦрд░реАрджреА, рд▓реЗрдХрд┐рди рдпрд╣ рдпрд╛ рддреЛ рдЦрд╝рд░рд╛рдм рд╣реЛ рдЧрдИ, рдпрд╛ рдореИрдВрдиреЗ рдЗрд╕реЗ рд╢реЙрд░реНрдЯ рд╕рд░реНрдХрд┐рдЯ рдпрд╛ рдмрдбрд╝реЗ рдЪрд╛рд░реНрдЬ рдХрд░рдВрдЯ рд╕реЗ рдорд╛рд░ рджрд┐рдпрд╛ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЪрд╛рд░реНрдЬ рдХрд░рдВрдЯ 1A рдкрд░ рд╕реЗрдЯ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдХрд░рдВрдЯ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд░реЛрдХрдиреЗрд╡рд╛рд▓рд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)ред рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬрдм рд▓реЛрдб рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рдерд╛, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ 10 рдПрдордП рдкрд░, рдмреИрдЯрд░реА рдкрд░ рд╡реЛрд▓реНрдЯреЗрдЬ 1 рд╡реА рддрдХ рдЧрд┐рд░ рдЧрдпрд╛ред рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рдордп, рдореИрдВрдиреЗ рдПрдХ рдЫреЛрдЯреЗ рдХреНрд╡рд╛рдбреНрд░реЛрдХреЙрдкреНрдЯрд░ рд╕реЗ рдПрдХ рдЕрд░реНрдз-рдореГрдд LiPo рдмреИрдЯрд░реА рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ред рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рдореИрдВрдиреЗ рдПрдХ рдЕрдиреНрдп рд╡рд┐рдХреНрд░реЗрддрд╛ рд╕реЗ рдмреИрдЯрд░реА рдХрд╛ рдЖрджреЗрд╢ рджрд┐рдпрд╛ рдФрд░ рдпрд╣ рдЕрдЪреНрдЫрд╛ рдирд┐рдХрд▓рд╛ред

рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЗрд╕ рдкрд░ рд░реЛрдХрдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛, рдХрдиреЗрдХреНрдЯрд┐рдВрдЧ рддрд╛рд░реЛрдВ рдХреЛ рдорд┐рд▓рд╛рдк рдХрд░рдирд╛ рдФрд░ рдзреАрд░реЗ-рдзреАрд░реЗ рд╕рдм рдХреБрдЫ рдХрд┐рд╕реА рддрд░рд╣ рдХреЗ рдЖрд╡рд╛рд╕ рдореЗрдВ рдзрдХреЗрд▓рдирд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рд╕рд░реНрдХрд┐рдЯ рдХреА рдЦрдкрдд рдХреЛ рдорд╛рдкрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдФрд░ рдлрд┐рд░ рдореИрдВ рд░реЛ рдкрдбрд╝рд╛ред рдареАрдХ рд╣реИ, рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ (рдЬрдм рдмрд▓реНрдм рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЪрдордХрддреЗ рд╣реИрдВ) рддреЛ рдпрд╣ рдЪреАрдЬрд╝ 130mA рддрдХ рдЦрд╛ рдЬрд╛рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрд░рд╛рдо рдХрд░рдиреЗ рдкрд░, рдЦрдкрдд 25mA рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрддреА рд╣реИ! рдпрд╛рдиреА рдпрд╣ рдмреНрд▓рд┐рдВрдХрд░ рдПрдХ рджрд┐рди рд╕реЗ рднреА рдХрдо рд╕рдордп рдореЗрдВ рдореЗрд░реА 600mAh рдХреА рдмреИрдЯрд░реА рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ!

рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд▓рдЧрднрдЧ 10 mA рдПрд▓ рдИ рдбреА рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рд╡реЗ рдкреНрд░рдХрд╛рд╢ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдЕрднреА рднреА рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдХрдорд╛рдВрдб рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдпрд╛рдиреА рдЖрдкрдХреЛ рдПрд▓ рдИ рдбреА рдХреЗ рд▓рд┐рдП рдкрд╛рд╡рд░-рдбрд╛рдЙрди рд╕рд░реНрдХрд┐рдЯ рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд╢реЗрд╖ 15 рдПрдордП рдХреА рдЦрдкрдд рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдХреА рдЬрд╛рддреА рд╣реИред рд╣рд╛рдВ, рдЗрд╕реЗ рдмрд┐рд╕реНрддрд░ рдкрд░ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдбреЗрдЯрд╛рд╢реАрдЯ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЦрдкрдд рдХреЛ рдорд╛рдЗрдХреНрд░реЛрдПрдореНрдкреНрд╕ рджреНрд╡рд╛рд░рд╛ рдорд╛рдкрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ 1 рдПрдордП рд╕реЗ рдХрдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рдерд╛ред рдореИрдВрдиреЗ ADC рдХреЛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдФрд░ рдкрд┐рдиреЛрдВ рдХреЛ рдЗрдирдкреБрдЯ рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХрд┐рдпрд╛ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд╣реАрдВ рди рдХрд╣реАрдВ рд╕рд░реНрдХрд┐рдЯ рдореЗрдВ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд░рд┐рд╕рд╛рд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХреНрд╕ рдХрд╛ рдореЗрд░рд╛ рдорд╛рдореВрд▓реА рдЬреНрдЮрд╛рди рдЗрд╕реЗ рдЦреЛрдЬрдиреЗ рдФрд░ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред

рд╣рдо рдпреЛрдЬрдирд╛ рдХреЛ рдЬрдЯрд┐рд▓ рдмрдирд╛рддреЗ рд╣реИрдВ


рддрдм рдореБрдЭреЗ рдпрд╛рдж рдЖрдпрд╛ рдХрд┐ рдореИрдВрдиреЗ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП PT1502 рдЪрд┐рдк рдЦрд░реАрджреА рд╣реИред рдпрд╣ рдЪрд┐рдк рдПрдХ рд▓рд┐рдерд┐рдпрдо рдмреИрдЯрд░реА рдЪрд╛рд░реНрдЬ рдирд┐рдпрдВрддреНрд░рдХ рд╣реИ рдЬреЛ рдХрдИ рдирд┐рдпрдВрддреНрд░рдг рдЗрдирдкреБрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдмрд┐рдЬрд▓реА рдХреА рдЖрдкреВрд░реНрддрд┐ рдХреЗ рд╕рд╛рде рдкреВрд░рд╛ рд╣реЛрддрд╛ рд╣реИред рдПрдХрдорд╛рддреНрд░ рдХрдард┐рдирд╛рдИ рдпрд╣ рд╣реИ рдХрд┐ рдорд╛рдЗрдХреНрд░реЛрдХреНрд░рд┐рд╕рд┐рдЯ 4x4 рдорд┐рдореА рдХреЗ рдХреНрдпреВрдПрдлрдПрди 20 рдкреИрдХреЗрдЬ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕реНрдЯреНрд░реИрдкрд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдШрд░ рдкрд░ рдЗрд╕реЗ рдЯрд╛рдВрдХрд╛ рд▓рдЧрд╛рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрднрд╡ рд╣реИред рд╢реБрд▓реНрдХ рдПрдХ рдирд┐рдпрдорд┐рдд LUT рдХреЗ рд▓рд┐рдП рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдФрд░ рдЪреАрдиреА рд╕реЗ рдЖрджреЗрд╢ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рд╣рдо рдХрдард┐рдирд╛рдЗрдпреЛрдВ рд╕реЗ рдбрд░рддреЗ рдирд╣реАрдВ рд╣реИрдВ, рд╣реИ рдирд╛?

рдХрдИ рдмреЙрдХреНрд╕ рдореЗрдВ, рдпреЛрдЬрдирд╛ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред



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

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



рдпрд╣, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рджреЛрд╣рди рдХреЗ рд╕рд╛рде рдПрдХ рд▓рд┐рдерд┐рдпрдо рдмреИрдЯрд░реА рдЪрд╛рд░реНрдЬ рдирд┐рдпрдВрддреНрд░рдХ рд╣реИред LED1 рдЪрд╛рд░реНрдЬ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ - рдЪрд╛рд▓реВ рд╣реИ, рдлрд┐рд░ рдЪрд╛рд░реНрдЬ рдЪрд╛рд▓реВ рд╣реИред рд░реЗрд╕рд┐рд╕реНрдЯрд░ R6 рдЪрд╛рд░реНрдЬ рдХрд░рдВрдЯ рдХреЛ 470mA рдкрд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдЪреВрдБрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ 600mAh рдХреА рдмреИрдЯрд░реА рд╣реИ, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЖрдк рдХрд░рдВрдЯ рдХреЛ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ 600mA рддрдХ 780-800 Ohms рдкрд░ рд░реЗрд╕рд┐рд╕реНрдЯрд░ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореИрдВ рдЕрдкрдиреА рдмреИрдЯрд░реА рдХреА рд╡рд┐рд╢реЗрд╖ рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдБ - рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рдзреАрд░реЗ-рдзреАрд░реЗ рдЪрд╛рд░реНрдЬ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдзрд┐рдХ рд╕рдордп рддрдХ рдЪрд▓реЗрдЧрд╛ред

рдкрд╛рд╡рд░ рдкреНрд▓рд╛рди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ



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

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

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

рдЪрд▓реЛ рдПрдХ рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП SW1 рдмрдЯрди рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВред рдореИрдВрдиреЗ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдХрд┐ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд▓рд┐рдП рдФрд░ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд▓рд┐рдП 2 рдЕрд▓рдЧ-рдЕрд▓рдЧ рдмрдЯрди рди рдмрдирд╛рдПрдВред рдЗрд╕рд▓рд┐рдП, рдПрдХ рд╣реА рдмрдЯрди ATTiny85 рд╕реЗ рднреА рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ рдФрд░ рдСрдкрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдмреНрд▓рд┐рдВрдХрд┐рдВрдЧ рдореЛрдб рд╕реНрд╡рд┐рдЪ рдХрд░рддрд╛ рд╣реИред рдбрд┐рд╡рд╛рдЗрдбрд░ R7-R8 рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЪреБрдирд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ PB2 рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рдкреЛрд░реНрдЯ рдХреЛ рди рдЬрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗред рд╕рднреА рдмреИрдЯрд░реА рд╡реЛрд▓реНрдЯреЗрдЬ рдкрд░реНрд╡рддрдорд╛рд▓рд╛ (3.3 - 4.2V) рдХреЗ рд▓рд┐рдП, рд╡реЛрд▓реНрдЯреЗрдЬ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдбреЗрдЯрд╛рд╢реАрдЯ рд╕реАрдорд╛ (0.7 * рд╡реАрд╕реАрд╕реА - рд╡реАрд╕реАрд╕реА + 0.5 рд╡реА) рдХреЗ рднреАрддрд░ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рдкреИрд░ рдХреЛ рдЖрдкреВрд░реНрддрд┐ рдХреА рдЬрд╛рдПрдЧреА

рдПрдХ рд╢рдХреНрддрд┐ рд╕реНрд░реЛрдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ



рдпрд╣ рдПрдХ рд╕реНрдкрдВрджрд┐рдд рдбреАрд╕реА-рдбреАрд╕реА рдХрдирд╡рд░реНрдЯрд░ рд╣реИред рдЖрдЙрдЯрдкреБрдЯ рд╡реЛрд▓реНрдЯреЗрдЬ рдкреНрд░рддрд┐рд░реЛрдзреЛрдВ R10-R11 рджреНрд╡рд╛рд░рд╛ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░, рдбреЗрдЯрд╢реАрдЯ рд╕реЗ рд╕реВрддреНрд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░, 3.3V рдкрд░ рд╕реЗрдЯ рд╣реИред рдмрд╛рдХреА рд╕рдм рдХреБрдЫ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕реНрдЯреНрд░реИрдкрд┐рдВрдЧ рд╣реИред

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



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

рдЖрдЗрдП рддрд╛рд░реНрдХрд┐рдХ рднрд╛рдЧ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред



USB рдХреЗрдмрд▓ рдХреЛ Digispark рдмреЛрд░реНрдб рд╕реЗ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдпреВрдПрд╕рдмреА рд╡реЛрд▓реНрдЯреЗрдЬ (рдЬреЛ 3.3 рд╡реА рдЪрд▓рд╛рддрд╛ рд╣реИ) рдФрд░ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд╕рдВрдХреЗрддреЛрдВ (рдЬреЛ рдореВрд▓ рдореЗрдВ 5 рд╡реА рджреНрд╡рд╛рд░рд╛ рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реЛрддрд╛ рд╣реИ) рдХреЗ рд╕рдордиреНрд╡рдп рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЪреВрдВрдХрд┐ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рднреА 3.3V рджреНрд╡рд╛рд░рд╛ рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рд░реНрдХрд┐рдЯ рдХреЛ рд╕рд░рд▓реАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд┐рд░реНрдл рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВрдиреЗ рдмреЛрд░реНрдб рдкрд░ рдореВрд▓ рд╕рд░реНрдХрд┐рдЯ рдХреЛ рддрд▓рд╛рдХ рджрд┐рдпрд╛ред



рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рдмрдВрдзрди рдореЗрдВ рдХреБрдЫ рднреА рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИред

рдЕрдВрддрд┐рдо рд╕реНрдкрд░реНрд╢ рдХрдиреЗрдХреНрдЯрд░ рд╣реИ



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

рдФрд░ рд▓рдЧрднрдЧ рд╕рднреА рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ (рдкреАрдмреА 1 - рд╣реЛрд▓реНрдб рд▓рд╛рдЗрди, рдкреАрдмреА 2 - рдкрд╛рд╡рд░ рдмрдЯрди, рдкреАрдмреА 3 / рдкреАрдмреА 4 - рдпреВрдПрд╕рдмреА, рдкреАрдмреА 5 - рд░реАрд╕реЗрдЯ) рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрдВрдзреЗ рд╣реЛрдиреЗ рджреЗрдВ, рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХреБрдЫ рд╕реАрдорд╛рдУрдВ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпреВрдПрд╕рдмреА рдХреЗрдмрд▓ рдХреЛ рдорд┐рд▓рд╛рдк рди рдХрд░реЗрдВ рдФрд░ рдкреАрдмреА 3 / рдкреАрдмреА 4 рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВред рдпрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд░реАрд╕реЗрдЯ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдкреАрдмреА 5 рдЬрд╛рд░реА рдХрд░реЗрдВред рдЗрд╕ рдмреАрдЪ, рдХреЗрд╡рд▓ PB0 рдореБрдХреНрдд рд░рд╣рддрд╛ рд╣реИ - рдФрд░ рд╣рдорд╛рд░реЗ рдПрд▓рдИрдбреА рдХреЛ рдЗрд╕рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВред

рд╣рдо рдмреЛрд░реНрдб рдореЗрдВ рдкрд╛рд╕ рд╣реЛрддреЗ рд╣реИрдВред 40x40 рдорд┐рдореА рдореЗрдВ рдмреЛрд░реНрдб рдХреЗ рдЖрдХрд╛рд░, рдШрдЯрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ PT1502 рдЪрд┐рдк рдХреЗ QFN20 рдЖрд╡рд╛рд╕ рдХреА рд╕реАрдорд╛рдУрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рдШрд░ рдкрд░ рдмреЛрд░реНрдб рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдкрд░ рднреА рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рддреБрд░рдВрдд рд╕рдмрд╕реЗ рдХреЙрдореНрдкреИрдХреНрдЯ рдЯреВ-рд▓реЗрдпрд░ рдмреЛрд░реНрдб рдХреЛ рдкреНрд░рдЬрдирди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред рдореБрдЭреЗ рдпрд╣реА рдорд┐рд▓рд╛ рд╣реИ



рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рдиреА рдХреЗ рд▓рд┐рдП, рд░рд┐рд╡рд░реНрд╕ рд╕рд╛рдЗрдб рдкрд░ рдореИрдВрдиреЗ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд┐рдП (рдореБрдЭреЗ Digispark рдмреЛрд░реНрдб рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдорд┐рд▓рд╛)



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

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



рдЖрд╡рд╛рд╕


рдпрд╣ рдкрддрд╡рд╛рд░ рдкрд░ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдореИрдВрдиреЗ рдЗрд╕реЗ 3 рдбреА рдкреНрд░рд┐рдВрдЯрд░ рдкрд░ рдЫрд╛рдкрд╛ред рдиреЛ-рдлреНрд░рд┐рд▓реНрд╕ рдбрд┐рдЬрд╛рдЗрди - рдмреЙрдХреНрд╕ рдФрд░ рдмрдЯрдиред рдбрд┐рдЬрд╛рдЗрдирд░ рдХреЗ рдорд╛рдирдХ рд╡рд░реНрдЧ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЬреБрдЧрдиреВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЙрдХреНрд╕ рдкрд░ рд╡рд┐рд╢реЗрд╖ рд╣реБрдХ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред



рдореБрдЦреНрдп рдмреЛрд░реНрдб рдФрд░ рдмреИрдЯрд░реА рдорд╛рдорд▓реЗ рдореЗрдВ рд░рд╣рддреЗ рд╣реИрдВред





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

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



рдЗрд╕ рд░реВрдк рдореЗрдВ, рдбрд┐рд╡рд╛рдЗрд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рдмрджрд╕реВрд░рдд рджрд┐рдЦрддрд╛ рд╣реИ - рдкрд░реНрдпрд╛рдкреНрдд рд╡рд┐рд╕рд╛рд░рдХ рдирд╣реАрдВ рд╣реИред

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

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



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

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

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





рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐


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

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХреБрдЫ рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ рдФрд░ рд╕реНрдерд┐рд░рд╛рдВрдХ

// Number of total LEDs on the board. Mine has 4x4 LEDs #define NUM_HW_PIXELS 16 // Pin number where LED data pin is attached #define DATA_PIN 0 // Pin number where mode switch button is attached #define BUTTON_PIN 2 // Power Enabled pin #define POWER_EN_PIN 1 // Max brightness (dimming the light for debugging) #define MAX_VAL 255 

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

рдореЗрд░реЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдореЗрдВ рдПрд▓ рдИ рдбреА рдХреЛ рдПрдХ рдЧреИрд░-рд╕реНрдкрд╖реНрдЯ рддрд░реАрдХреЗ рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдПрдХ рдЬрд╝рд┐рдЧрдЬрд╝реИрдЧред рдЗрд╕рд▓рд┐рдП, рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рднрд╛рд╡реЛрдВ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рддреНрдпрд╛рдЧ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред

 // LED indexes for different patterns uint8_t circleLEDIndexes[] = {0, 1, 2, 3, 4, 11, 12, 13, 14, 15, 8, 7}; uint8_t beaconLEDIndexes[] = {6, 5, 10, 9}; uint8_t policeLEDIndexes[] = {7, 6, 10, 11, 4, 5, 9, 8}; 

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

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдмреЛрд░реНрдб рдФрд░ рдбрдмреНрд▓реВрдПрд╕ libraryреирезрез рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

 // Driver Ai_WS2811 ws2811; void setup() { // Set up power pinMode(POWER_EN_PIN, OUTPUT); digitalWrite(POWER_EN_PIN, HIGH); // initialize LED data pin pinMode(LED_PIN, OUTPUT); // Initialize button pin pinMode(BUTTON_PIN, INPUT); // Initialize WS8211 library static CRGB ledsBuf[NUM_HW_PIXELS]; ws2811.init(DATA_PIN, NUM_HW_PIXELS, ledsBuf); // Set the watchdog timer to 2 sec wdt_enable(WDTO_2S); } 

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

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

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

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

 void setRgb(uint8_t led_idx, uint8_t r, uint8_t g, uint8_t b) { CRGB * leds = ws2811.getRGBData(); leds[led_idx].r = r; leds[led_idx].g = g; leds[led_idx].b = b; } 

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

 /** * HVS to RGB conversion (simplified to the range 0-255) **/ void setHue(uint8_t led_idx, int hue, int brightness) { //this is the algorithm to convert from RGB to HSV double r = 0; double g = 0; double b = 0; double hf = hue/42.6; // Not /60 as range is _not_ 0-360 int i=(int)floor(hue/42.6); double f = hue/42.6 - i; double qv = 1 - f; double tv = f; switch (i) { case 0: r = 1; g = tv; break; case 1: r = qv; g = 1; break; case 2: g = 1; b = tv; break; case 3: g = qv; b = 1; break; case 4: r = tv; b = 1; break; case 5: r = 1; b = qv; break; } brightness = constrain(brightness, 0, MAX_VAL); setRgb(led_idx, constrain(brightness*r, 0, MAX_VAL), constrain(brightness*g, 0, MAX_VAL), constrain(brightness*b, 0, MAX_VAL) ); } 

рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдЖрдИ_рдбрдмреНрд▓реНрдпреВрдПрд╕ 8211 рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдереЛрдбрд╝рд╛ рд╕рд╛ рджрд╛рдпрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдореВрд▓ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдХреБрдЫ рдХреАрдбрд╝реЗ рдереЗ, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдЗрдВрджреНрд░рдзрдиреБрд╖ рдкрд░ рд░рдВрдЧ рдЭрдЯрдХреЗ рдХреЗ рд╕рд╛рде рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред

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

рдпрд╣ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдкреНрд░рднрд╛рд╡ рд╣реИ - рд╕рднреА рдПрд▓рдИрдбреА рдПрдХ рд░рдВрдЧ рд╕реЗ рднрд░реЗ рд╣реБрдП рд╣реИрдВ, рдЬреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрджрд▓рддрд╛ рд╣реИред

 void rainbow() { static uint8_t hue = 0; hue++; for (int led = 0; led < NUM_HW_PIXELS; led++) setHue(led, hue, MAX_VAL); ws2811.sendLedData(); delay(80); } 

рдЕрдЧрд▓рд╛ рдкреНрд░рднрд╛рд╡ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ - рдпрд╣ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рд╕рдореЛрдЪреНрдЪ рдХреЗ рд╕рд╛рде рдПрдХ рдЗрдВрджреНрд░рдзрдиреБрд╖ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрдВрджреНрд░рдзрдиреБрд╖ рдореЗрдВ рд░рдВрдЧ рдзреАрд░реЗ-рдзреАрд░реЗ рдПрдХ рд╕рд░реНрдХрд▓ рдореЗрдВ рд╢рд┐рдлреНрдЯ рд╣реЛрддреЗ рд╣реИрдВред

 void slidingRainbow() { static uint8_t pos = 0; pos++; for (int led = 0; led < ARRAY_SIZE(circleLEDIndexes); led++) { int hue = (pos + led*256/ARRAY_SIZE(circleLEDIndexes)) % 256; setHue(circleLEDIndexes[led], hue, MAX_VAL); } ws2811.sendLedData(); delay(10); } 

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

 void randomColorsFadeInOut() { static uint8_t color = 0; static bool goesUp = false; static uint8_t curLevel = 0; if(curLevel == 0 && !goesUp) { color = rand() % 256; goesUp = true; } if(curLevel == MAX_VAL && goesUp) { goesUp = false; } for(int led = 0; led < NUM_HW_PIXELS; led++) setHue(led, color, curLevel); if(goesUp) curLevel++; else curLevel--; ws2811.sendLedData(); delay(10); } 

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

 void orangeBeacon() { const int ORANGE_HUE = 17; static uint8_t pos = 0; pos+=3; for (int led = 0; led < ARRAY_SIZE(circleLEDIndexes); led++) { int brightness = brightnessByPos(pos, led*255/ARRAY_SIZE(circleLEDIndexes), 70); setHue(circleLEDIndexes[led], ORANGE_HUE, brightness); } ws2811.sendLedData(); delay(1); } 

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

 int brightnessByPos(int pos, int ledPos, int delta) { int diff = abs(pos - ledPos); if(diff > 127) diff = abs(256-diff); int brightness = MAX_VAL - constrain(MAX_VAL*diff/delta, 0, MAX_VAL); return brightness; } 

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

рдпрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдкреБрд▓рд┐рд╕ рд▓рд╛рд▓-рдиреАрд▓реА рдЪрдордХрддреА рд░реЛрд╢рдиреА

 void policeBeacon() { const int RED_HUE = 0; const int BLUE_HUE = 170; static uint8_t pos = 0; pos += 2; for (int led = 0; led < ARRAY_SIZE(policeLEDIndexes); led++) { int ledPos = led*255/ARRAY_SIZE(policeLEDIndexes); int brightness = brightnessByPos(pos, ledPos, 50); setHue(policeLEDIndexes[led], RED_HUE, brightness); if(brightness == 0) { brightness = brightnessByPos((pos+100) % 256, ledPos, 50); setHue(policeLEDIndexes[led], BLUE_HUE, brightness); } } ws2811.sendLedData(); delay(1); } 

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

рдпреЗ рдРрд╕реЗ рдХрд╛рд░реНрдп рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдкрджреЛрдВ рдкрд░ рд╡рд┐рднрд┐рдиреНрди рдЯреНрд░реИрдлрд╝рд┐рдХ рд╕рд┐рдЧреНрдирд▓ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

 void clearPixels() { for(int i=0; i<NUM_HW_PIXELS; i++) { setRgb(i, 0, 0, 0); } } void redTrafficLights() { for(int i=0; i<4; i++) setRgb(i, MAX_VAL, 0, 0); ws2811.sendLedData(); } void yellowTrafficLights() { for(int i=4; i<8; i++) setRgb(i, MAX_VAL, MAX_VAL, 0); ws2811.sendLedData(); } void greenTrafficLights() { for(int i=8; i<16; i++) setRgb(i, 0, MAX_VAL, 0); ws2811.sendLedData(); } 

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

 enum TRAFFIC_LIGHTS { NONE, RED, YELLOW, GREEN }; struct trafficLightState { uint8_t state; uint16_t duration; }; const trafficLightState trafficLightStates[] = { {NONE, 1}, // clear yellow {RED, 7000}, // red {YELLOW, 2000}, // red + yellow {NONE, 1}, // clear red+yellow {GREEN, 7000}, // green {NONE, 300}, // Blinking green {GREEN, 300}, // Blinking green {NONE, 300}, // Blinking green {GREEN, 300}, // Blinking green {NONE, 300}, // Blinking green {GREEN, 300}, // Blinking green {NONE, 1}, // clear green {YELLOW, 2000}, // yellow }; 

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдЬреЛ рдЗрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ

 void trafficLights() { static uint8_t curStateIdx = 0; static unsigned long curStateTimeStamp = 0; // Switch to a new state when time comes if(millis() - curStateTimeStamp > (unsigned long)trafficLightStates[curStateIdx].duration) { curStateIdx++; curStateIdx %= ARRAY_SIZE(trafficLightStates); curStateTimeStamp = millis(); } switch(trafficLightStates[curStateIdx].state) { case NONE: clearPixels(); ws2811.sendLedData(); break; case RED: redTrafficLights(); break; case YELLOW: yellowTrafficLights(); break; case GREEN: greenTrafficLights(); break; default: break; } // Just waiting delay(10); } 

рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдордп рдЕрдВрддрд░рд╛рд▓ рдкрд░ рдкрд╣реБрдВрдЪрдиреЗ рдкрд░, рдЕрдЧрд▓рд╛ рдЯреНрд░реИрдлрд╝рд┐рдХ рд▓рд╛рдЗрдЯ рдореЛрдб рдЪрд╛рд▓реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЙрд▓рдЯреА рдЧрд┐рдирддреА рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИред

рдЕрдВрддрд┐рдо рдкреНрд░рднрд╛рд╡ рдЬрд┐рд╕ рдкрд░ рдореЗрд░реА рдХрд▓реНрдкрдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рдереА, рддрд╛рд░рд╛рдВрдХрди рд╣реИред 5 рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдПрд▓ рдИ рдбреА рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЪрдордХ рдкрд░ рдкреНрд░рдХрд╛рд╢ рдФрд░ рдлрд┐рд░ рд╕реБрдЪрд╛рд░реВ рд░реВрдк рд╕реЗ рдмрдВрджред рдпрджрд┐ рдПрдХ рддрд╛рд░рд╛ рдмрд╛рд╣рд░ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕реНрдерд╛рди рдкрд░ рдПрдХ рдФрд░ рдкреНрд░рдХрд╛рд╢ рд╣реЛрдЧрд╛ред

 void stars() { const uint8_t numleds = 5; static uint8_t ledIndexes[numleds] = {0}; static uint8_t curVal[numleds] = {0}; static uint8_t maxVal[numleds] = {0}; for(int i=0; i<numleds; i++) { if(ledIndexes[i] == 0) { uint8_t led = rand() % (NUM_HW_PIXELS+1); CRGB * leds = ws2811.getRGBData(); if(leds[led].r == 0) { ledIndexes[i] = led; maxVal[i] = rand() % (MAX_VAL-1) + 1; curVal[i] = 0; } } else { uint8_t led = ledIndexes[i]; if(curVal[i] < maxVal[i]) curVal[i]++; else if(curVal[i] == maxVal[i]) maxVal[i] = 0; else if(curVal[i] == 0 || --curVal[i] == 0) ledIndexes[i] = 0; setRgb(led-1, curVal[i], curVal[i], curVal[i]); } } ws2811.sendLedData(); delay(80); } 

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

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

 void shutdownOnTimeOut(bool resetTimer = false) { static unsigned long periodStartTime = 0; if(periodStartTime == 0 || resetTimer) { periodStartTime = millis(); return; } if(millis() - periodStartTime >= 90000UL) { periodStartTime = 0; shutDown(); } } 

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд┐рдЬрд▓реА рдмрдВрдж рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реЛрддреА рд╣реИред

 void shutDown() { clearPixels(); ws2811.sendLedData(); wdt_disable(); digitalWrite(POWER_EN_PIN, LOW); // No power after this point while(true) ; } 

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

рдЕрдВрдд рдореЗрдВ, рдореБрдЦреНрдп рд▓реВрдк рдЬреЛ рдЗрд╕реЗ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ

 // List of pointers to functions that serve different modes void (*Modes[])() = { rainbow, slidingRainbow, orangeBeacon, policeBeacon, trafficLights, stars, randomColorsFadeInOut }; void loop() { static uint8_t mode = eeprom_read_byte( (uint8_t*) 10 ); static bool waitingForBtnUp = false; static long btnPressTimeStamp; // Button switches mode if(digitalRead(BUTTON_PIN) == HIGH && !waitingForBtnUp) { delay(20); if(digitalRead(BUTTON_PIN) == HIGH) { mode++; mode %= ARRAY_SIZE(Modes); // num modes clearPixels(); ws2811.sendLedData(); delay(1); eeprom_write_byte( (uint8_t*) 10, mode ); waitingForBtnUp = true; btnPressTimeStamp = millis(); shutdownOnTimeOut(true); } } // Shut down on long press over 5s if(digitalRead(BUTTON_PIN) == HIGH && waitingForBtnUp && millis() - btnPressTimeStamp > 5000) shutDown(); // Detect button release if(digitalRead(BUTTON_PIN) == LOW && waitingForBtnUp) waitingForBtnUp = false; // display LEDs according to current mode Modes[mode](); // pong shutdown timer shutdownOnTimeOut(); // Yes, we still alive wdt_reset(); } 

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

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

рдпрд╣рд╛рдВ рдПрдХ рд╡реАрдбрд┐рдпреЛ рд╣реИ рдЬреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред


рдмреВрдЯрд▓реЛрдбрд░


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

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

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

рджреЛрдиреЛрдВ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рд▓рд╛рдн рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред рдбрд┐рдЬреАрд╕реНрдкрд╛рд░реНрдХ ATTiny85 рдорд╛рдЗрдХреНрд░реЛрдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдмреВрдЯрд▓реЛрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ ред рдпрд╣ рдмреВрдЯрд▓реЛрдбрд░ рд╣рдорд╛рд░реА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдлрд╛рдЗрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реИред рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЛ рд╕рд╣реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

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

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

 #define ENTRYMODE ENTRY_JUMPER 

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

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

 #define HOLD_PIN PB1 #define JUMPER_PIN PB2 #define JUMPER_PORT PORTB #define JUMPER_DDR DDRB #define JUMPER_INP PINB #define bootLoaderInit() {JUMPER_DDR &= ~_BV(JUMPER_PIN); JUMPER_DDR |= _BV(HOLD_PIN); JUMPER_PORT &= ~_BV(JUMPER_PIN); JUMPER_PORT |= _BV(HOLD_PIN); _delay_ms(1);} #define bootLoaderExit() {;} 

bootLoaderInit () рдЗрдирдкреБрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдЯрди рдкрд┐рди (JUMPER_PIN) рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдирд┐рд▓рдВрдмрд┐рдд рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмреЛрд░реНрдб рдкрд░ рдФрд░ рдЬрдореАрди рдкрд░ рдПрдХ рдкреБрд▓-рдЕрдк рд╣реИ, рдФрд░ рдЬрдм рдЖрдк рдкрд┐рди рдкрд░ рдПрдХ рдмрдЯрди рджрдмрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдПрдХ рд╣реЛрдЧрд╛ред рдЙрд╕реА рд╕рдордп, рдЖрдк рддреБрд░рдВрдд рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рд╣реЛрд▓реНрдб рд╕рд┐рдЧреНрдирд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпреВрдирд┐рдЯ рдХреЛ рдЙрд╕ рдкрд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ...

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

BootLoaderExit () рдлрд╝рдВрдХреНрд╢рди рд░рд┐рдХреНрдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЙрдЬрд╛рдЧрд░ рд╡рд┐рдиреНрдпрд╛рд╕ рдореБрдЦреНрдп рдлрд░реНрдорд╡реЗрдпрд░ рдХреЗ рдмрд╛рдж рдХреЗ рд╕рдВрдХреНрд░рдордг рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдЙрдкрдпреБрдХреНрдд рд╣реИ

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

 #ifndef __ASSEMBLER__ // Bootloader condition is to hold the button for 5 seconds inline unsigned char bootLoaderStartCondition() { long int i; for(i=0; i<10000000; i++) if( !(JUMPER_INP & _BV(JUMPER_PIN))) return 0; return 1; } #endif 

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

рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, рдмреВрдЯрд▓реЛрдбрд░рдХреЛрдиреНрдлрд┐рдЧ.рд╣ рдлрд╝рд╛рдЗрд▓ рдХреЛрдбрд╛рдВрддрд░рдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рдВрдХрд▓рди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдХреЛрдб рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред рдореБрдЭреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ #ifndef __ASSEMBLER__ рдмреНрд▓реЙрдХ рдореЗрдВ рд░рдЦрдирд╛ рдерд╛

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

 /* * Define bootloader timeout value. * * The bootloader will only time out if a user program was loaded. * * AUTO_EXIT_NO_USB_MS The bootloader will exit after this delay if no USB is connected. * Set to 0 to disable * Adds ~6 bytes. * (This will wait for an USB SE0 reset from the host) * * All values are approx. in milliseconds */ #define AUTO_EXIT_NO_USB_MS 1000 

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

 # hexadecimal address for bootloader section to begin. To calculate the best value: # - make clean; make main.hex; ### output will list data: 2124 (or something like that) # - for the size of your device (8kb = 1024 * 8 = 8192) subtract above value 2124... = 6068 # - How many pages in is that? 6068 / 64 (tiny85 page size in bytes) = 94.8125 # - round that down to 94 - our new bootloader address is 94 * 64 = 6016, in hex = 1780 BOOTLOADER_ADDRESS = 1940 

рдлрд┐рд░ рдореИрдВрдиреЗ рдмреВрдЯрд▓реЛрдбрд░ рд╕реНрдЯрд╛рд░реНрдЯ рдПрдбреНрд░реЗрд╕ рдХреЛ рдПрдХ рдкреЗрдЬ (64 рдмрд╛рдЗрдЯреНрд╕) рдкрд░ рдХрдо рдХрд░ рджрд┐рдпрд╛, рдЬрд┐рд╕рд╕реЗ рдмреВрдЯрд▓реЛрдбрд░ рд╕реНрдкреЗрд╕ рдмрдврд╝ рдЧрдпрд╛ред

рдЕрдиреНрдпрдерд╛, USBAsp рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмреВрдЯрд▓реЛрдбрд░ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдФрд░ рдЕрдкрд▓реЛрдб рдХрд░рдирд╛ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдереАред

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


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

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

рдЕрдВрдд рдореЗрдВ, рдпрд╣рд╛рдБ рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдВрдХ рд╣реИрдВ:

рдлрд░реНрдорд╡реЗрдпрд░ рдХреЛрдб
рд╕рд░реНрдХрд┐рдЯ рдФрд░ рдмреЛрд░реНрдб
рдЖрд╡рд╛рд╕ рдФрд░ рд╡рд┐рд╕рд╛рд░рдХ рдореЙрдбрд▓
рдореБрджреНрд░рдг рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдПрд╕рдЯреАрдПрд▓ рдореЙрдбрд▓

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


All Articles