рдЖрд░рд╛рдо рд╕реЗ рдЙрдареЗрдВ - рдЕрдкрдиреЗ рдЖрдк рдХреЛ рд╣рд▓реНрдХрд╛ рдЕрд▓рд╛рд░реНрдо рдмрдирд╛рдПрдВ

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

рд╕рдорд╛рдзрд╛рди рд╣реИ, рдкреНрд░рдХрд╛рд╢ рдЕрд▓рд╛рд░реНрдо рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдЪреАрдЬ рдХреА рдХреАрдордд 5000 рд░реВрдмрд▓ рд╕реЗ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЪреБрднрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдСрдкрд░реЗрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╣рд╛рд░реНрдб-рдХреЛрдбреЗрдб рд╣реИ, рдФрд░ рдпрд╣ рдХрд╛рдлреА рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐, рдЬрд╛рдЧрдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЖрдк рдХреБрдЫ рдХреЛ рд╕рд╣реА рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВрдЧреЗред
рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рддрд╛рддреНрдХрд╛рд▓рд┐рдХ рд╕рд╛рдзрдиреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЗрд╕ рднрд╛рд╡рдирд╛ рдореЗрдВ рдХреБрдЫ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдЬрд╛рдП? DIY рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рдкрд╣реЗрд▓реА!



рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:

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

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

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









рдЙрдиреНрд╣реЛрдВрдиреЗ рдХрдиреЗрдХреНрдЯрд░ рдХреЛ рдЙрд╕реА рдЧреЛрдВрдж рдХреЗ рд╕рд╛рде рдЪрд┐рдкрдХрд╛ рджрд┐рдпрд╛ред





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



рд╡реЗ рд▓рдЧрднрдЧ 100 mA рдХреА рдЕрдзрд┐рдХрддрдо рдЦрдкрдд рдХрд░рддреЗ рд╣реИрдВ, рдЖрдк рд╕реАрдзреЗ Arduino рдкреЛрд░реНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рдЯреНрд░рд╛рдВрдЬрд┐рд╕реНрдЯрд░ рдХреЗ рд╕рд╛рде рдбрд┐рдмрдЧ рдмреЛрд░реНрдб рдкрд░ рдПрдХ рд╡рд░реНрддрдорд╛рди рдПрдореНрдкрд▓реАрдлрд╛рдпрд░ рд╣реИ рдЬреЛ 200 рдПрдордП рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред



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

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



рд╣рдо Arduino рдХреЗ рдиреМрд╡реЗрдВ рдкрд┐рди рд╕реЗ рдПрдХ PWM рдХреЗ рд╕рд╛рде рдЪрдордХ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕реЗ рдмреЛрд░реНрдб рдкрд░ рдПрдореНрдкрд▓реАрдлрд╛рдпрд░ рдореЗрдВ рддрд▓рд╛рдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рдо рдЯрд░реНрдирд░ рдХреЛ SOD рдХрдиреЗрдХреНрдЯрд░ рдкрд░, DAT рдкреНрд▓рд╕ рдкрд░, GND рдорд╛рдЗрдирд╕ рдкрд░ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдХреА рдШрдбрд╝реА - I2C_5V рдХрдиреЗрдХреНрдЯрд░ рдХреЗ рд▓рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдЙрдиреНрд╣реЗрдВ рдмрд┐рдЬрд▓реА рдХреА рдЖрдкреВрд░реНрддрд┐ рдХреЗ рд▓рд┐рдП 5V рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдмреЛрд░реНрдб рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рджреЛ-рд▓рд╛рдЗрди рдПрд▓рд╕реАрдбреА рд╕реВрдЪрдХ рд╣реИ, рдмрд╣реБрдд рд╡рд┐рдкрд░реАрдд, рдПрдХ рдиреАрд▓реА рдкреГрд╖реНрдарднреВрдорд┐ рдкрд░ рдЕрдЪреНрдЫреЗ рд╕рдлреЗрдж рдкрд╛рддреНрд░реЛрдВ рдХреЗ рд╕рд╛рдеред

рджрд░рдЕрд╕рд▓, рд╕рд╛рд░рд╛ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЪрд▓рди рдореЗрдВ рд╣реИ, рдЕрдм рдпрд╣ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИред

рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рдХрд▓реНрдкрдирд╛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХреА рдЧрдИ рдереА:

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

рд╣рд░ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫреА рдЬрд╛рдЧреГрддрд┐ рд╣реИ!



рдЕрд▓рд╛рд░реНрдо рдШрдбрд╝реА рдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рд╕реНрдХреЗрдЪ
//
#include <LiquidCrystalRus.h>
#include <LiquidCrystalExt.h>
#include <LineDriver.h>
// I2C
#include <Wire.h>
// RTC
#include ┬лRTClib.h┬╗
// 2
//
#include <MsTimer2.h>

//-----------------------------------------------------------------------
#define NUM_KEYS 5
// ( )
int adcKeyVal[NUM_KEYS] = {30, 150, 360, 535, 760};
//-----------------------------------------------------------------------

int led13 = 13; // Arduino Nano
int alarmPin = 3; //
int led = 9; //
int brightness = 0; //
int riseAmount = 1; // 0-255
int timeAmount = 500; // ,
int beepCount = 0; //
int numberOfBeeps = 0;
unsigned long time_old;
unsigned long time_curr;
int alarm = 0; //
int Step; //
unsigned long tSetOld;
unsigned long tTickOld;

// lcd, RS,EN,DB4,DB5,DB6,DB7
LiquidCrystalRus lcd(A1, A2, A3, 2, 4, 7);

// RTC
RTC_DS1307 RTC;

int Year; // RTC
int Month;
int Day;
int Hour;
int Minute;
int Second;
int alarmHour = 0;
int alarmMinute = 0;
int setAlarm = 0; // ./.
int SetMode = 0; // / ./.
int AlarmOn; // ./.

void setup() {
pinMode(led13, OUTPUT);
pinMode(3, OUTPUT);
lcd.begin(16, 2);
Wire.begin(); // 1Wire ( RTC)
RTC.begin(); // RTC
RTC.writenvram(2, 0); // 00 ( 2 RTC)
tTickOld = millis(); //
// 5,
// 0
if (get_key() == 5) {
RTC.adjust(DateTime(__DATE__, __TIME__));
for (int i = 0; i < 5; i++) RTC.writenvram(i, 0);
}

}

void loop() {

AlarmOn = RTC.readnvram(3); // 3- RAM RTC: (1) (0)
if (get_key() == 2) { // 2
SetMode++; //
delay(500);
tSetOld = millis();
}

while (SetMode) { //
if (get_key() == 2) {
SetMode++;
delay(200);
tSetOld = millis();
}
if (SetMode > 4) { //
SetMode = 0;
lcd.noBlink();
lcd.noCursor();
}
switch (SetMode) { //
case 1:
lcd.setCursor(12, 1); lcd.blink();
break;
case 2:
lcd.setCursor(9, 1); lcd.blink();
break;
case 3:
lcd.setCursor(12, 0); lcd.blink();
break;
case 4:
lcd.setCursor(9, 0); lcd.blink();
break;
}

if (get_key() == 1 or get_key() == 3) { // 1 3
tSetOld = millis(); //
if (get_key() == 3) Step = 1; // 3 тАФ
if (get_key() == 1) Step = -1; // 1 тАФ
switch (SetMode) {
case 1:
SetMinuteAlarm(Step); //
break;
case 2:
SetHrAlarm(Step); //
break;
case 3:
SetMinute(Step); //
break;
case 4:
SetHr(Step); //
break;

}
}

if ((millis() тАФ tTickOld) > 1000) {
displayTime(); //
tTickOld = millis();
}
if ((millis() тАФ tSetOld) > 10000) {
SetMode = 0; // 10 .
lcd.noBlink();
}
} // end SetMode

if (get_key() == 4) { // /
int alarm_ram = RTC.readnvram(3);
RTC.writenvram(3, !alarm_ram);
delay(50);
AlarmOn = alarm_ram;
delay(500);
}

if (get_key() == 5) { //
alarm = 0;
digitalWrite(led13, LOW);
lightDown();
}

if (get_key() == 5 && brightness >= 0) { //
lightUp();
}

if (get_key() == 1 && !SetMode) { //
//alarm = 0;
MsTimer2::stop();
digitalWrite(alarmPin, LOW);
}

if ((millis() тАФ tTickOld) > 1000) {
displayTime(); //
tTickOld = millis();
}

if (alarm == 1) //
{
digitalWrite(led13, HIGH);
time_curr = millis();
if ((time_curr тАФ time_old) > timeAmount) {
if (brightness < 255) {
brightness = brightness + riseAmount;
time_old = time_curr;
if (brightness > 255) brightness = 255;
analogWrite(led, brightness); //
switch (brightness) { //
case 60:
numberOfBeeps = 4;
alarmRun();
break;
case 120:
numberOfBeeps = 4;
alarmRun();
break;
case 180:
numberOfBeeps = 8;
alarmRun();
break;
case 220:
numberOfBeeps = 14;
alarmRun();
break;
}
if (brightness >= 255) {
numberOfBeeps = 32000; // (32000 )
alarmRun();
}
}
else digitalWrite(led13, LOW);
}
}

} // end loop

//----------------------------------------------
int get_key() //
{
int input = analogRead(A6);
int k;
for (k = 0; k < NUM_KEYS; k++)
if (input < adcKeyVal[k])
return k + 1;
return 0;
}

void SetMinuteAlarm(int Step) { //
alarmMinute = RTC.readnvram(1);
alarmMinute += Step;
if (alarmMinute > 59) alarmMinute = 0;
if (alarmMinute < 0) alarmMinute = 59;
RTC.writenvram(1, alarmMinute);
delay(300);
}

void SetHrAlarm(int Step) { //
alarmHour = RTC.readnvram(0);
alarmHour += Step;
if (alarmHour > 23) alarmHour = 0;
if (alarmHour < 0) alarmHour = 23;
RTC.writenvram(0, alarmHour);
delay(300);
}

void SetMinute(int Step) { //
DateTime now = RTC.now();
Year = now.year();
Month = now.month();
Day = now.day();
Hour = now.hour();
Minute = now.minute();
Second = now.second();
Minute += Step;
if (Minute > 59) Minute = 0;
if (Minute < 0) Minute = 59;
RTC.adjust(DateTime(Year, Month, Day, Hour, Minute, Second));
delay(300);
}

void SetHr(int Step) { //
DateTime now = RTC.now();
Year = now.year();
Month = now.month();
Day = now.day();
Hour = now.hour();
Minute = now.minute();
Second = now.second();
Hour += Step;
if (Hour > 23) Hour = 0;
if (Hour < 0) Hour = 23;
RTC.adjust(DateTime(Year, Month, Day, Hour, Minute, Second));
delay(300);
}

void displayTime() { //
DateTime now = RTC.now();
Year = now.year() тАФ 2000;
Month = now.month();
Day = now.day();
Hour = now.hour();
Minute = now.minute();
Second = now.second();

lcd.setCursor(0, 0);
lcd.print(┬л: тАЮ);
if (Hour < 10) lcd.print(' ');
lcd.print(Hour);
lcd.print(':');
if (Minute < 10) lcd.print('0');
lcd.print(Minute);
lcd.print(':');
if (Second < 10) lcd.print('0');
lcd.print(Second);

int h = RTC.readnvram(0);
int m = RTC.readnvram(1);
int s = RTC.readnvram(2);

if (AlarmOn) {
lcd.setCursor(0, 1);
lcd.print(тАЬ: тАЮ);
if (h < 10) lcd.print(' ');
lcd.print(h);
lcd.print(':');
if (m < 10) lcd.print('0');
lcd.print(m);
lcd.print(':');
if (s < 10) lcd.print('0');
lcd.print(s);
}
else {
lcd.setCursor(0, 1);
lcd.print(тАЬ: --:--:--┬╗);
}

if (Hour == h && Minute == m && Second == s && AlarmOn) { // !
alarm = 1;
numberOfBeeps = 2;
alarmRun();
}

}

void lightDown() { //
while (brightness > 0) {
time_curr = millis();
if ((time_curr тАФ time_old) > 10) {
if (brightness > 0) {
brightness = brightness тАФ 1;
time_old = time_curr;
if (brightness < 1) brightness = 0;
analogWrite(led, brightness);
}
}
}
}

void lightUp() { //
while (brightness < 255) {
time_curr = millis();
if ((time_curr тАФ time_old) > 10) {
if (brightness < 255) {
brightness++;
time_old = time_curr;
if (brightness > 255) brightness = 255;
analogWrite(led, brightness);
}
}
}
}

void alarmRun() { // 1 ( )
digitalWrite(alarmPin, HIGH);
beepCount = 0;
MsTimer2::set(500, beep); // 500ms period
MsTimer2::start();
}

void beep() { // 500 2
if (beepCount < numberOfBeeps) {
static boolean output = HIGH;
digitalWrite(alarmPin, output);
output = !output;
beepCount++;
}
else {
MsTimer2::stop();
digitalWrite(alarmPin, LOW);
}
}
ред

ps рдзреНрдпрд╛рди! реирей рд╕рд┐рддрдВрдмрд░ рд╕реЗ реирей рдЕрдХреНрдЯреВрдмрд░ реирежрезрел рддрдХ рд╣рдо рдПрдХ рдлреЛрдЯреЛ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛

"3 рдбреА рдкреНрд░рд┐рдВрдЯрд┐рдВрдЧ рд░реЛрдЬрдорд░реНрд░рд╛ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП" рдзрд╛рд░рдг рдХрд░рддреЗ рд╣реИрдВ !

рд╡рд┐рдЬреЗрддрд╛ рдХреЛ рдПрдХ рдЙрдкрд╣рд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдРрдХреНрд░реЗрд▓рд┐рдХ рдорд╛рдорд▓реЗ рдХреЗ рд╕рд╛рде рдПрдХ 3 рдбреА рдкреНрд░рд┐рдВрдЯрд░-рдбрд┐рдЬрд╛рдЗрдирд░ рдПрдорд╕реА 5 рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛ ред

рдЬреЛ рд▓реЛрдЧ рдмрд╕ рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рд╡реЛрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╡реЛрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдлреЛрдЯреЛ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдХреА рд╕реНрдерд┐рддрд┐ ред

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


All Articles