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

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

рдФрд░ рдЗрд╕рдХреЗ рдкрд╛рд░ рдЖрдиреЗ рд╡рд╛рд▓реА рдкрд╣рд▓реА рдЪреАрдЬ рдПрдХ рдЧреИрд░-рдорд╛рдирдХ "рддреНрд░рд┐рдХреЛрдгреАрдп" рд╕рд┐рд░ рдХреЗ рд╕рд╛рде рдереА:

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

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

рдпрд╣ рдпреЛрдЬрдирд╛ рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реЗ рдирд┐рдпрдВрддреНрд░рдХ рдФрд░ рд▓реЗрдЦреЛрдВ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╢реАрдЯ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рдВрдХрд▓рд┐рдд рдХреА рдЧрдИ рдереАред
DIHALT рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдзрдиреНрдпрд╡рд╛рдж рдЙрдирдХрд╛ рд╢реБрд░реБрдЖрддреА рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХреНрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрд░рд╛ рд╢реБрд░реБрдЖрддреА рдмрд┐рдВрджреБ рдерд╛ред
рдШрдЯрдХ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИрдВред рдбреЗрдЯрд╢реАрдЯ рд╕реЗ рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХреИрдкреЗрд╕рд┐рдЯрд░ рд╕реА 1 рдФрд░ рд╕реА 2 рдкрд░ рдлрд┐рд▓реНрдЯрд░ рдПрдбреАрд╕реА рдХреА рд╕рдЯреАрдХрддрд╛ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИред Photoresistor LDR1 рдПрдХ рдкреНрд░рдХрд╛рд╢ рд╕рдВрд╡реЗрджрдХ рд╣реИ рдФрд░ рдкреНрд░рддрд┐рд░реЛрдзрдХ R3 рдкрд░ рд╡реЛрд▓реНрдЯреЗрдЬ рдбрд┐рд╡рд╛рдЗрдбрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред рдбреАрд╕реЗрдВрдЯ рдореЛрдЯрд░ рдХреЛ BC337 рдЯреНрд░рд╛рдВрдЬрд┐рд╕реНрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдиреБрдЕрд▓ рд░рд┐рд▓реАрдЬ рдмрдЯрди S1 рдФрд░ рджреЛ-рд░рдВрдЧ рдХреЗ рдПрд▓ рдИ рдбреА рднреА рдЖрд░реЗрдЦ рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рджреЛ рд░рдВрдЧреЛрдВ рд╡рд╛рд▓реА рдПрд▓рдИрдбреА рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ред рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдПрдХ рд╕рдВрдХреЗрддрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдмрд╛рд░ рд╣рд░реЗ рд░рдВрдЧ рдХреА рдЭрдкрдХреА рд▓реЗрддрд╛ рд╣реИ; рдЬрдм рдмреИрдЯрд░реА 2.5 рд╡реА рд╕реЗ рдиреАрдЪреЗ рдбрд┐рд╕реНрдЪрд╛рд░реНрдЬ рд╣реЛрддреА рд╣реИ, рддреЛ рдпрд╣ рд▓рд╛рд▓ рдЭрдкрдХреА рд▓реЗрддреА рд╣реИред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдШрдбрд╝реА рд╕рдВрдХреЗрдд рдХрд╛ рд╕реНрд░реЛрдд 32768 рд╣рд░реНрдЯреНрдЬ рдкрд░ рдХреНрд╡рд╛рд░реНрдЯреНрдЬ рдЬреЗрдб 1 рд╣реИ, рдЬреЛ рдПрдХ рдмреЛрд░реНрдб рдФрд░ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рд╕рд╛рде рдкреВрд░рд╛ рд╣реЛрддрд╛ рд╣реИред
рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рднрд╛рдЧ
рдореИрдВрдиреЗ C ++ рдореЗрдВ IAR рдПрдВрдмреЗрдбреЗрдб рд╡рд░реНрдХрдмреЗрдВрдЪ рдореЗрдВ рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрд╛ред рдореИрдВ рдпрд╣рд╛рдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЙрд╕рдХрд╛ рдХреЛрдб рд▓рд╛ рд░рд╣рд╛ рд╣реВрдВред
Spary.h рд╕реБрд░рдХреНрд╖рд╛ рдлрд╝рд╛рдЗрд▓ рдХреЛрдбрд╣реИрдбрд░ рдлрд╝рд╛рдЗрд▓ рд╕реНрдкреНрд░реЗред рдПрдЪ
#ifndef __SPRAY_H_ #define __SPRAY_H_ #include <sstream> // #define BUTTON BIT4; // #define SPRAY_PORT BIT6;// P1.6 #define LED_GREEN BIT1; // P2.1 #define LED_RED BIT2; // P2.2 #define LIGHT_SENSOR INCH_5; // A5 #define DARK_VALUE 650; // " ." #define LOWBATT_VALUE 520; // . // unsigned int SleepPeriod = 900; // . 15 . (900) unsigned int SpayDelay = 5; // 5. unsigned int DarkValue = 650; // " ." unsigned int LowBattValue = 520; // . unsigned int BattInterval = 5; // 5. // unsigned int ADCValue; // unsigned int SprayCount; // unsigned int TimerCount = 0; // unsigned int BattTimer = 0; // unsigned int RXByte; // UART // bool ADCDone = false; // bool LightOn = false; // ( ) bool SleepMode = false; // ( 15 ) bool IsCounting = false; // , // bool LowBatt = false; // bool BlinkOn = false; // bool Tick = false; // bool IsADCOn = false; // bool IsADCLight = true; // (true - // , false - ) bool ForceSpay = false; // bool UARTReceived = false; // UART // void UARTSend(string str); // UART void LightSensorOn(); // void VCCSensorOn(); // unsigned int ReadCountFromFlash(); // void WriteCountToFlash(unsigned int); // void Spray(); // #endif
рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдбрдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдкрд╛рдаред main.cpp:
#include <msp430g2553.h> #include "spray.h" int main( void ) { // WDT WDTCTL = WDTPW + WDTHOLD; // //------------------------- // - P1DIR &= ~BUTTON; // P1REN |= BUTTON; // P1OUT &= ~BUTTON; // - GND P1IES |= BUTTON; // P1IFG &= ~BUTTON; // P1IE |= BUTTON; // P1DIR |= SPRAY_PORT; // P1OUT &= ~SPRAY_PORT; // // P2DIR |= LED_GREEN P2DIR |= LED_RED; // ( ) P2OUT |= LED_GREEN; P2OUT &= ~LED_RED; // . //------------------------- // DCOCTL = CALDCO_1MHZ; // ~ 1 BCSCTL1 = CALBC1_1MHZ; //------------------------- // TACTL = TASSEL_1 + MC_1; // ACLK (), // CCR0 CCR0 = 0x8000; // .. 32768, // CCTL0 = CCIS0 + OUTMOD0 + CCIE; // , // //------------------------- // UART. FLASH P1SEL = BIT1 + BIT2; // P1SEL2 = BIT1 + BIT2; // UART UCA0CTL1 |= UCSSEL_2; // - SMCLK ~ 1MHz UCA0BR0 = 0x68; // 9600 UCA0BR1 = 0; // 1000000 / 9600 = 104 = 0x68 UCA0MCTL = UCBRS0; UCA0CTL1 &= ~UCSWRST; // IE2 = UCA0RXIE; // UART //------------------------- // Flash FCTL2 = FWKEY + FSSEL1 + FN1; // // . 65535 - // SprayCount = ReadCountFromFlash(); if(SprayCount == 65535) { SprayCount = 0; // WriteCountToFlash(SprayCount); // 0 Flash } //------------------------- __delay_cycles(2000); // //------------------------- __bis_SR_register(GIE); // P2OUT &= ~LED_GREEN; // . . UARTSend("Ready\r\n"); // while(true) { if(Tick) // . { Tick = false; // BattTimer++; if(BattTimer >= BattInterval) // { BattTimer = 0; // VCCSensorOn(); // } if(!SleepMode) // { LightSensorOn(); // if(IsCounting) // { if(TimerCount >= SpayDelay) // { Spray(); // } } } else { // if(TimerCount >= SleepPeriod) { TimerCount = 0; // SleepMode = false; // } } } if(ADCDone) // { ADCDone = false; // if(IsADCLight) // { if(ADCValue < DarkValue) // . { LightOn = true; // " " IsCounting = false; // ( , ) TimerCount = 0; // } else // { if(LightOn) // { LightOn = false; // IsCounting = true; // TimerCount = 0; } } } else // { if(ADCValue < LowBattValue) { LowBatt = true; // } else { LowBatt = false; // - } } } if(ForceSpay) // . . { ForceSpay = false; Spray(); } if(UARTReceived) // UART. . { UARTReceived = false; ostringstream s; s << SprayCount << "\r\n"; UARTSend(s.str()); } } } // UART void UARTSend(string str) { int len = str.length(); for(int i=0;i<len;i++) { while(!(IFG2&UCA0TXIFG)); UCA0TXBUF = str[i]; } } // void LightSensorOn() { if(!IsADCOn) { IsADCOn = true; IsADCLight = true; ADC10CTL0 &= ~ENC; ADC10CTL0 = ADC10SHT_3 + ADC10ON + ADC10IE; ADC10CTL1 = ADC10SSEL_2 + LIGHT_SENSOR; ADC10CTL0 |= ENC + ADC10SC; } } // void VCCSensorOn() { if(!IsADCOn) { IsADCOn = true; IsADCLight = false; ADC10CTL0 &= ~ENC; ADC10CTL0 = SREF_1 + ADC10SHT_3 + REFON + ADC10ON + REF2_5V + ADC10IE; ADC10CTL1 = ADC10SSEL_2 + INCH_11; __delay_cycles(128); ADC10CTL0 |= ENC + ADC10SC; } } // unsigned int ReadCountFromFlash() { __bic_SR_register(GIE); // int *Flash_ptr; Flash_ptr = (int *) 0x1040; // *Flash_ptr = 0; // unsigned int value = *Flash_ptr; // __bis_SR_register(GIE); // return value; // } // void WriteCountToFlash(unsigned int value) { __bic_SR_register(GIE); // int *Flash_ptr; Flash_ptr = (int *) 0x1040; // FCTL1 = FWKEY + ERASE; // FCTL3 = FWKEY; *Flash_ptr = 0; // FCTL1 = FWKEY + WRT; *Flash_ptr++ = value; // Flash FCTL1 = FWKEY; FCTL3 = FWKEY + LOCK; // __bis_SR_register(GIE); // } // void Spray() { __bic_SR_register(GIE); // P1OUT |= SPRAY_PORT; // __delay_cycles(500000); // ~ 0.5 ( 1) P1OUT &= ~SPRAY_PORT; // // LightOn=false; SleepMode=true; IsCounting=false; TimerCount=0; SprayCount++; WriteCountToFlash(SprayCount); __bis_SR_register(GIE); // } //--------------------------- // // #pragma vector=ADC10_VECTOR __interrupt void ADC_Handler() { ADCValue = ADC10MEM; // ADCDone = true; // IsADCOn = false; } // #pragma vector=PORT1_VECTOR __interrupt void Button_Handler() { P1IE &= ~BUTTON; // P1IFG &= ~BUTTON; // ForceSpay = true; // // __delay_cycles(300000); P1IE |= BUTTON; // } // 1 . #pragma vector=TIMER0_A0_VECTOR __interrupt void Timer_Handler() { // if(!BlinkOn) // { // // - , if(LowBatt) { P2OUT |= LED_RED; } else { P2OUT |= LED_GREEN; } BlinkOn = true; } else // { P2OUT &= ~LED_RED; P2OUT &= ~LED_GREEN; BlinkOn = false; } TimerCount++; // Tick=true; // } // UART #pragma vector=USCIAB0RX_VECTOR __interrupt void UART_Handler() { RXByte = UCA0RXBUF; UARTReceived = true; }
рдЗрд╕ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рд╕рд┐рд▓реЗрдВрдбрд░ рдХреЗ рдЕрдВрдд рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреНрд▓реЙрдХ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд▓рд┐рдЦрдиреЗ рдХреЗ рд╕рдордп рдпрд╣ рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рддрдиреЗ рд╕реНрдкреНрд░реЗ рд╕реЗ рдЪрд▓реЗрдЧрд╛ред
рд╕рднрд╛
рдмреЛрд░реНрдб рдкрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдФрд░ рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореЙрдбреНрдпреВрд▓ рдХреЛ рдмреНрд░реЗрдбрдмреЛрд░реНрдб рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:


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

рддрдм рдмреЛрд░реНрдб рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдбреНрд░рд╛рдЗрдВрдЧ рдХреЛ LUT рд╡рд┐рдзрд┐ (
DIHALT рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдзрдиреНрдпрд╡рд╛рдж) рджреНрд╡рд╛рд░рд╛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рдмреЛрд░реНрдб рдХреЛ рдлреЗрд░рд┐рдХ рдХреНрд▓реЛрд░рд╛рдЗрдб рдФрд░
рдЯрд┐рдирдб рдореЗрдВ рдЦреЛрджрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЕрдЧрд▓рд╛, рдШрдЯрдХреЛрдВ рдХреЛ рдорд┐рд▓рд╛рдк рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЛ рд╕реЙрдХреЗрдЯ рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ рддрд╛рдХрд┐ рдЗрд╕реЗ рд╣рдЯрд╛рдиреЗ рдФрд░ рдХрд╛рдЙрдВрдЯрд░ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдкрдврд╝рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рд╣реЛ, рд╕рд╛рде рд╣реА рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрдиреЗ рдкрд░ рдЗрд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рдмрджрд▓ рджреЗрдВред



рдФрд░ рдлрд┐рд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рдж рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдирдП рдирд┐рдпрдВрддреНрд░рдг рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


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