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

рдпрджрд┐ рдЖрдк рдРрд╕реЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдмрд┐рд▓реНрд▓реА рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред
рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ:
- рдкреНрд░рджрд░реНрд╢рди 1602, рдореЛрдиреЛрдХреНрд░реЛрдо 16x2 рд╡рд░реНрдг
- 5 рдмрдЯрди: рдКрдкрд░, рдиреАрдЪреЗ, рд░рджреНрдж рдХрд░реЗрдВ, рджрд░реНрдЬ рдХрд░реЗрдВ, рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ
- I2c рдЗрдВрдЯрд░рдлрд╝реЗрд╕
- DB9F рдХрдиреЗрдХреНрдЯрд░
- рдЖрдпрд╛рдо 155x90x44 рдорд┐рдореА
рд╕реНрдкрд╖реНрдЯ рдкреНрд░рд╢реНрди рд╣реИрдВ:
рддреИрдпрд╛рд░ рд╢реАрд▓реНрдб рдХреНрдпреЛрдВ рдирд╣реАрдВ рдЦрд░реАрджрддреЗ?рдмреЗрд╢рдХ, рдПрдХ рдкреНрд░рджрд░реНрд╢рди рдФрд░ рдХреАрдмреЛрд░реНрдб рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдЪреАрдиреА рд╕реЗ рддреИрдпрд╛рд░ рдврд╛рд▓ рдЦрд░реАрджрдирд╛ рд╕рдВрднрд╡ рдерд╛, рдФрд░ рдЗрд╕ рддрд░рд╣ рд╕реЗ:

рдЖрдк рдЗрд╕ рдврд╛рд▓ рдореЗрдВ 2 FC-113 рд╕реНрдХрд╛рд░реНрдл рдорд┐рд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдореЗрд░рд╛ рдЬреИрд╕рд╛ рд╣реЛрдЧрд╛: i2c рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреАрдмреЛрд░реНрдб рдХреЗ рд╕рд╛рде рдПрдХ рдбрд┐рд╕реНрдкреНрд▓реЗред рд╕реЗрдЯ рдХреА рдХреАрдордд $ 4 рд╕реЗ рд╣реЛрдЧреАред
рд▓реЗрдХрд┐рди рдЗрд╕ рдмреЛрд░реНрдб рдкрд░, рдмрдЯрди рдХрд╛ рдЖрдХрд╛рд░ рдореБрдЭреЗ рд╕реВрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдмрдбрд╝реЗ рд▓реЛрдЧреЛрдВ рдХреЛ рдмрд╣реБ-рд░рдВрдЧреАрди рдХреИрдк рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдореИрдВ рд╕рд╛рдорд╛рдиреНрдп DB9F рдХрдиреЗрдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ Arduino рдХреЛ HMI рд╕реЗ рдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдХрдиреЗрдХреНрд╢рди рдмреЛрд░реНрдб рдмрдирд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рдпрд╛ рджреЛ рдмреЛрд░реНрдб рдмрдирд╛рдиреЗ рд╕реЗ рдХреНрдпрд╛ рдлрд░реНрдХ рдкрдбрд╝рддрд╛ рд╣реИ? рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореЗрд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдЯреЙрдХ рдореЗрдВ рдХрдИ 1602 рдбрд┐рд╕реНрдкреНрд▓реЗ рдереЗ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдХреЗрд╡рд▓ рдПрдлрдЖрдИрд╕реА-113 ($ 0.55) рдФрд░ PCF8574P рдкреЛрд░реНрдЯ рдПрдХреНрд╕рдкреИрдВрдбрд░ ($ 0.47) рдХреЛ Aliexpress рдЦрд░реАрджрдиреЗ рдХреЗ рд▓рд┐рдП $ 1.02 рдЦрд░реНрдЪ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред
рдареАрдХ рд╣реИ, рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд, рдпрджрд┐ рдЖрдк Arduino рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЙрд╕рдХреЗ рд▓рд┐рдП рдврд╛рд▓ рдХрд╛ рд╕реНрд╡рддрдВрддреНрд░ рдирд┐рд░реНрдорд╛рдг рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рд╣реА рд╣реИ?
I2c рдмрд╕ рдХреНрдпреЛрдВ рд╣реИ, рдХреНрдпрд╛ рд╕реАрдзреЗ рдмрдЯрди рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ?рдФрджреНрдпреЛрдЧрд┐рдХ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ, рдЬрд╣рд╛рдВ рдореИрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ, рдПрдЪрдПрдордЖрдИ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд┐рдЯрд▓ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдЗрдВрдЯрд░рдлреЗрд╕ RS-232, RS-485, CAN, рдЖрджрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИ рдХрд┐ рдореЗрд░рд╛ рдШрд░-рдирд┐рд░реНрдорд┐рдд рдПрдЪрдПрдордЖрдИ рд╕рднреА рдбреЗрдЯрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, i2c рдкрд░ред
рдпрджрд┐ рдореИрдВрдиреЗ рдПрдХ рдЙрдкрдХрд░рдг рдмрдирд╛рдпрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдбрд┐рд╕реНрдкреНрд▓реЗ рдПрдХ рд╕реНрдХреНрд╡рд╛рдпрд░ рдмрд╕ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдмрдЯрди рд╕реАрдзреЗ Arduino рдХреЗ рдЗрдирдкреБрдЯ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдореБрдЭреЗ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЕрд╕рдВрддреБрд╖реНрдЯ рдорд╣рд╕реВрд╕ рдХрд░реЗрдЧрд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЗрд╕ рддрд╕реНрд╡реАрд░ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░реВрдВрдЧрд╛: рдкреИрдирд▓ рд╕реЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рддрдХ рдПрдХ рдЕрд▓рдЧ рдХреЙрд░реНрдб рдЪрд┐рдкрдХ рдЬрд╛рддрд╛ рд╣реИ, рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рд╕реЗ рддрд╛рд░, brrrr ...
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдмрдЯрди рдмреЛрд░реНрдб рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рдЬреЛ рд╕реАрдзреЗ Arduino рдирд┐рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдореЗрдВ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ i2c рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд╛рд▓рд╛ рдмрдЯрди рдмреЛрд░реНрдб рдХреЗрд╡рд▓ PCF8574P рдЪрд┐рдк ($ 0.47), рдПрдХ рд╕рдВрдзрд╛рд░рд┐рддреНрд░ рдФрд░ рджреЛ рдкреНрд░рддрд┐рд░реЛрдзреЛрдВ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред
рдмрдЯрди рдЗрд╕ рддрд░рд╣ рдХреНрдпреЛрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╣реИрдВ рдФрд░ рдЕрдиреНрдпрдерд╛ рдирд╣реАрдВ?рдмрд╛рдПрдВ рд╕реЗ рджрд╛рдПрдВ рдмрдЯрди рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рд╣реИрдВ: рдКрдкрд░, рдиреАрдЪреЗ, рд░рджреНрдж рдХрд░реЗрдВ, рджрд░реНрдЬ рдХрд░реЗрдВ, рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВред
"рдПрдбрд┐рдЯ" рдмрдЯрди рдХреЛ рдЕрдкрдиреЗ рдлрдВрдХреНрд╢рди рдкрд░ рдЬреЛрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рджреВрд╕рд░реЛрдВ рд╕реЗ рдереЛрдбрд╝рд╛ рджреВрд░ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рддрд╛рд░реНрдХрд┐рдХ рдорд╛рдкрджрдВрдбреЛрдВ (рдСрди / рдСрдл) рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдмрджрд▓рдирд╛ рдпрд╛ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдВрдкрд╛рджрди рдореЛрдб рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ред
рдХреБрд▓ 5 рдмрдЯрди рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреАрдмреЛрд░реНрдб рдмреЛрд░реНрдб рдкрд░ рдЪрд┐рдк рдЖрдкрдХреЛ 8 рдЯреБрдХрдбрд╝реЛрдВ рддрдХ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдпрд╣ рдЪрд╛рд░ рдмрдЯрди рдХреЗ рд╕рд╛рде рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛ рдФрд░ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рд╣реЛрдЧреА - "рдЗрдирдкреБрдЯ" рдФрд░ "рд╕рдВрдкрд╛рджрди" рдХреЛ рдПрдХ рдмрдЯрди рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╕рд┐рд░реНрдл рдЗрд╕ рдмрд╛рдд рдХрд╛ рдЕрдлрд╝рд╕реЛрд╕ рдерд╛ рдХрд┐ рдкреЛрд░реНрдЯ рдПрдХреНрд╕рдкреЛрд░реНрдЯрд░ рдорд╛рдЗрдХреНрд░реЛрдХреНрд░реЗрдХрд┐рдЯ рдХреЗ 8 рдореЗрдВ рд╕реЗ рдЖрдзреЗ рдкреИрд░ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред
рдпрджрд┐ рдореИрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдХрдИ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддрд╛ рд╣реВрдВ рддреЛ рдПрдХ рдФрд░ рдЕрд▓рдЧ "рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ" рдмрдЯрди рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдлрд┐рд░ рдЗрд╕ рдмрдЯрди рдХреЗ рд╕рд╛рде рдЖрдк рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реЗ рдмрджрд▓рдирд╛ рд╣реИред рдпрд╣ "SET" рдмрдЯрди рд▓реЛрдХрдкреНрд░рд┐рдп рдЪреАрдиреА HMI OP320 рдореЗрдВ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдпрджрд┐ рдкрд╣рд▓реЗ рджреЛ рдмрдЯрди рдКрдкрд░ рдФрд░ рдиреАрдЪреЗ рдХрд╛ рдорддрд▓рдм рд╣реИ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рд░реВрдк рд╕реЗ рдХреНрдпреЛрдВ рди рд░рдЦреЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдкрд░реЛрдХреНрдд рдЪреАрдиреА рдврд╛рд▓ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?
рдореЗрд░реЗ рд▓рд┐рдП рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдпрд╣ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдЬрдм рд╕рднреА рдмрдЯрди рдХреНрд╖реИрддрд┐рдЬ рд░реВрдк рд╕реЗ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдСрдкрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдЙрдВрдЧрд▓рд┐рдпрд╛рдВ рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рдорд╛рди рдореЗрдВ рдЪрд▓рддреА рд╣реИрдВред
рд▓реЛрд╣рд╛


1. DB9F рдХрдиреЗрдХреНрдЯрд░ рдХреЗ рд╕рд╛рде рдШрд░ рдХрд╛ рдмрдирд╛ рдмреИрдХрдкреНрд▓реЗрдиред рдЗрд╕рд▓рд┐рдП, рдЬрдм рд╣рдо рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП + 5V рдмрд┐рдЬрд▓реА рдХреА рдЖрдкреВрд░реНрддрд┐ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ Arduino рд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░рдХ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдореИрдВрдиреЗ рдмреЛрд░реНрдб рдкрд░ 0.1 A рдлреНрдпреВрдЬ рд▓рдЧрд╛рдпрд╛
2. рд╣рдо рд╕рднреА рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдПрдлрд╕реА -резрезрей рд╕реЛрд▓реНрдбрд░ рдмреЛрд░реНрдб рдХреЗ рд╕рд╛рде рдкреНрд░рд╕рд┐рджреНрдз резреирежреи рдбрд┐рд╕реНрдкреНрд▓реЗ рд╣реИ рдЬреЛ рдбрд┐рд╕реНрдкреНрд▓реЗ рдХреЛ рдЖрдИ реи рд╕реА рдмрд╕ рд╕реЗ рдЬреЛрдбрд╝рддрд╛ рд╣реИред
3. PCF8574P рдЪрд┐рдк рдХреЗ рд╕рд╛рде рдПрдХ рд╣реЛрдо-рдирд┐рд░реНрдорд┐рдд рдХреАрдмреЛрд░реНрдб рдмреЛрд░реНрдб, рдЬреЛ рдмрдЯрди рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдкрдврд╝реЗрдЧрд╛ рдФрд░ i220 рдмрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░реЗрдЧрд╛ред рд╡реИрд╕реЗ, FC-113 "рдбрд┐рд╕реНрдкреНрд▓реЗ" рдмреЛрд░реНрдб рднреА PCF8574 рдЪрд┐рдк рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдХреЗрд╡рд▓ T рдЗрдВрдбреЗрдХреНрд╕ рдХреЗ рд╕рд╛рде, рдЕрд░реНрдерд╛рддред PCF8574P рдЬреИрд╕реЗ рдкреНрд▓рд╛рдирд░, DIP рдирд╣реАрдВред
рдмрдЯрди рдореИрдВ 12h12 рдорд┐рдореА рдХреЛ рдПрдХ рд╕реНрдХреНрд╡рд╛рдпрд░ рдкреБрд╢рд░ рдХреЗ рд╕рд╛рде рд▓рдЧрд╛рддрд╛ рд╣реВрдВ, рдЙрди рдкрд░ рдЖрдк рдмрдбрд╝реЗ рдмрд╣реБ-рд░рдВрдЧреАрди рдЯреЛрдкреА рдкрд╣рди рд╕рдХрддреЗ рд╣реИрдВред
рд╣реЛрдордореЗрдб рд╕рд░реНрдХрд┐рдЯ рдмреЛрд░реНрдбреЛрдВ рдХреА рддрд╕реНрд╡реАрд░реЗрдВ рдФрд░ рдпреЛрдЬрдирд╛рдПрдВ рдпрд╣ PCF8574P рдЪрд┐рдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрдж рдХрд╣рдиреЗ рд▓рд╛рдпрдХ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдореИрдВрдиреЗ рдХреАрдмреЛрд░реНрдб рдмреЛрд░реНрдб рдмрдирд╛рдпрд╛ред
PCF8574P рдПрдХ i2c рдкреЛрд░реНрдЯ рдПрдХреНрд╕рдЯреЗрдВрдбрд░ рд╣реИред рдХреБрд▓ 8 рдкреЛрд░реНрдЯ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдЗрдирдкреБрдЯ рдпрд╛ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдЪрд┐рдк рдХреЗ рд▓рд┐рдП рдФрд░ рд╕реНрдЯреНрд░реИрдкрд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдзрд┐рдХрддрдо 232 рдпрд╛рдж рд░рдЦреЗрдВ), рдмрд╕ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореИрдВрдиреЗ рдкрд╛рд╡рд░ рдХреЗ рд▓рд┐рдП рдХреИрдкреЗрд╕рд┐рдЯрд░ рд▓рдЧрд╛рдпрд╛ред
PCF8574P рдЪрд┐рдк рдХрд╛ рдкрддрд╛ рдПрдбреНрд░реЗрд╕ рд▓реЗрдЧ A0, A1, A2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдЬрдореАрди рдкрд░ рдЦреАрдВрдЪреЗ рдЬрд╛рддреЗ рд╣реИрдВ рдпрд╛ 10 k╬й рд░реЗрд╕рд┐рд╕реНрдЯрд░ рдХреЗ рдЬрд░рд┐рдП рдмрд┐рдЬрд▓реА рд╕рдкреНрд▓рд╛рдИ рдХрд░рддреЗ рд╣реИрдВред
рдХреАрдмреЛрд░реНрдб рдмреЛрд░реНрдб рдкрд░, рдореИрдВрдиреЗ PCF8574P рдХреЗ рд╕рднреА рдкрддрд╛ рдкреИрд░реЛрдВ рдХреЛ рдЬрдореАрди рдкрд░ рд░рдЦ рджрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкрддрд╛ 0x20 рдХреЗ рд░реВрдк рдореЗрдВ рд╣рд╛рд░реНрдбрдХреЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЖрдк рдЗрд╕реЗ рдмрджрд▓ рдирд╣реАрдВ рд╕рдХрддреЗред
рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рд▓рд┐рдЦрд╛ рдерд╛, рдореИрдВрдиреЗ рдПрдЪрдПрдордЖрдИ рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдбреАрдмреА 9 рдПрдл рдХреЛ рдЪреБрдирд╛ред Arduino рдЗрд╕реЗ +5 V, GND, SDA, SCL рд╕реЗ рд╕рдВрдХреЗрдд рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред

I2c Arduino рдФрд░ HMI рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рддрд╛рд░ 1.4 рдореАрдЯрд░ рд▓рдВрдмрд╛ рдмрдирд╛, рдпрд╣ рдмрд┐рдирд╛ рдЧреНрд▓рд┐рдЪ рдХреЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдореИрдВрдиреЗ рд╕реНрдкреНрд░рд┐рдВрдЯ рд▓реЗрдЖрдЙрдЯ 6 рдореЗрдВ рдмреЛрд░реНрдбреЛрдВ рдХреЛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд┐рдпрд╛, рдПрд▓рдпреВрдЯреА рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдиреНрд╣реЗрдВ рдЯреЗрдХреНрд╕реНрдЯреЛрд▓рд╛рдЗрдЯ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдФрд░ рдкреЗрд░реЛрдХреНрд╕рд╛рдЗрдб рдФрд░ рд╕рд╛рдЗрдЯреНрд░рд┐рдХ рдПрд╕рд┐рдб рдХреЗ рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдмрдирд╛рдпрд╛ред
рдЕрдЪрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛рдкрдиреНрдиреА рд╢реАрд╕реЗ рд░реЗрд╢рд╛ рдкрд░ рд╕рд╛рдЗрдЯреНрд░рд┐рдХ рдПрд╕рд┐рдб рдмреЛрд░реНрдб рдирдХрд╝реНрдХрд╝рд╛рд╢реА рдХреЗ рд▓рд┐рдП рдХрдИ рд╡реНрдпрдВрдЬрдиреЛрдВ рд╣реИрдВред
рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛: рд╣рд╛рдЗрдбреНрд░реЛрдЬрди рдкреЗрд░реЛрдХреНрд╕рд╛рдЗрдб рдХрд╛ 100 рдорд┐рд▓реАрд▓реАрдЯрд░ 3%, рд╕рд╛рдЗрдЯреНрд░рд┐рдХ рдПрд╕рд┐рдб рдХрд╛ 50 рдЧреНрд░рд╛рдо, рдирдордХ рдХреЗ 3 рдЪрдореНрдордЪред рдЙрдиреНрд╣реЛрдВрдиреЗ рд▓рдЧрднрдЧ 70 рдбрд┐рдЧреНрд░реА рдХреЗ рддрд╛рдкрдорд╛рди рдкрд░ рдкрд╛рдиреА рдХреЗ рд╕рд╛рде рдкреИрди рдореЗрдВ рдкреЗрд░реЛрдХреНрд╕рд╛рдЗрдб рдЬрд╛рд░ рдХреЛ рдЧрд░реНрдо рдХрд┐рдпрд╛ред
рд╣рдо рдкреИрдЯрд░реНрди рдиреАрдЪреЗ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдмреЛрд░реНрдб рдХреЛ рд╡рд┐рд╕рд░реНрдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдкреЗрд░реЛрдХреНрд╕рд╛рдЗрдб рдХреЗ рд╕рд╛рде etched рд╣реЛрдиреЗ рдкрд░ рдЕрдиреБрд╢рдВрд╕рд┐рдд рд╣реЛрддрд╛ рд╣реИред
рджрд╕рд┐рдпреЛрдВ рд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж, рдПрдХ рддреВрдлрд╛рдиреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИред рдмрд╣реБрдд рд╕рд╛рд░реА рднрд╛рдк рдирд┐рдХрд▓рддреА рд╣реИ, рдЬрд┐рд╕реЗ рд╕рд╛рдВрд╕ рдореЗрдВ рд▓реЗрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рдирд╣реАрдВ рджреА рдЬрд╛рддреА рд╣реИред рд╢рд╛рдпрджред

рдлрд┐рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИред рдмреЛрд░реНрдб рдХреЛ рдкрд▓рдЯ рджреЗрдВред

рд╣реЛ рдЧрдпрд╛ред

рд▓реЗрдЬрд░ рдХрдЯрд┐рдВрдЧ рдорд╢реАрди рдкрд░ Plexiglas 4 рдорд┐рдореА рдХреЗ рдПрдХ рдорд┐рддреНрд░ рд╕реЗ рдорд╛рдорд▓рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдХреЛрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЧреЗрдп рд╡рд┐рд╖рдпрд╛рдВрддрд░рдПрдХ рддреИрдпрд╛рд░ рдорд╛рдорд▓рд╛ рдЦрд░реАрджреЗрдВ рдпрд╛ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдХрд░реЗрдВ? рдереЛрдбрд╝рд╛ рд╕реЛрдЪрдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдЗрд╕реЗ рдЦреБрдж рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдЬрд┐рди рд▓реЛрдЧреЛрдВ рдиреЗ рдореБрдЭреЗ рдмрд┐рдХреНрд░реА рдкрд░ рджреЗрдЦрд╛, рд╡реЗ рдпрд╛ рддреЛ рдХреАрдордд рдХреЗ рд▓рд┐рдП рдпрд╛ рд╕реМрдВрджрд░реНрдп рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рдереЗ, рдпрд╛ рдПрдХ рдбреАрдЖрдИрдПрди рд░реЗрд▓ рдкрд░ рдереЗ, рдЬреЛ рдореБрдЭреЗ рд╕реВрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рдереЗред
рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рд╢рд░реАрд░ рдкреНрд▓рд╛рдИрд╡реБрдб рд╕реЗ рдмрд╛рд╣рд░ рдХрдЯреМрддреА рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдлрд┐рд░ рдореБрдЭреЗ рдпрд╛рдж рдЖрдпрд╛ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдЕрджреНрднреБрдд рдорд┐рддреНрд░ рдФрд░, рдПрдХ рдЦреЗрд▓ рдкреБрд░рд╕реНрдХрд╛рд░ рдХрдВрдкрдиреА рдХреЗ рдирд┐рджреЗрд╢рдХ, рдореЗрд░реА рдмрд╣реБрдд рдЦреБрд╢реА рд╣реИред рдЙрд╕рдХреЗ рдкрд╛рд╕ рд╡рд╣рд╛рдВ рд╣рд░ рддрд░рд╣ рдХреА рдорд╢реАрдиреЗрдВ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд▓реЗрдЬрд░ рдХрдЯрд┐рдВрдЧ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред
рдЙрд╕рдиреЗ рдорджрдж рдорд╛рдВрдЧреА рдФрд░ рдПрдХ рджреЛрд╕реНрдд рдиреЗ рдордирд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛, рдХреБрдЫ рдорд┐рдирдЯреЛрдВ рдХреЗ рд▓рд┐рдП рднрд╛рдЧреЛрдВ рдХреЛ рд▓реЗрдЬрд░ рд╕реЗ рдХрд╛рдЯ рджрд┐рдпрд╛ рдЧрдпрд╛ред
рдореИрдВ рдпрд╣ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдзрдиреНрдпрд╡рд╛рдж рджреЗрддрд╛ рд╣реВрдВ, рдХреЛрд▓рд╛! рдЕрдиреНрдпрдерд╛, рдореБрдЭреЗ рдкреВрд░реЗ рджрд┐рди рдкреНрд▓рд╛рдИрд╡реБрдб рдХреЛ рдХрд╛рдЯрдирд╛ рдФрд░ рдкреАрд╕рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдкрд░рд┐рдгрд╛рдо рд╢рд╛рдпрдж рд╣реА рдЗрддрдирд╛ рд╢рд╛рдирджрд╛рд░ рд╣реЛрдЧрд╛ред
рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ
Arduino рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдЗрд╕ HMI рдореЗрдВ 2 рдЙрдкрдХрд░рдг рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ i2c рдмрд╕ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ: 0x27 рдкрддреЗ рдХреЗ рд╕рд╛рде рдПрдХ рдбрд┐рд╕реНрдкреНрд▓реЗ (рдПрд▓рд╕реАрдбреА) рдФрд░ рдкрддрд╛ 0x20 рдХреЗ рд╕рд╛рде рдПрдХ рдХреАрдмреЛрд░реНрдбред рддрджрдиреБрд╕рд╛рд░, Arduino рдХреАрдмреЛрд░реНрдб рдХреЗ рд╕рд╛рде рдФрд░ рдПрд▓рд╕реАрдбреА рдХреЗ рд╕рд╛рде рдЕрд▓рдЧ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
рдПрд▓рд╕реАрдбреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреБрд╕реНрддрдХрд╛рд▓рдп "рд▓рд┐рдХреНрд╡рд┐рдбрдХреНрд░рд┐рд╕реНрдЯрд▓_рдЖрдИрдПрдХреНрд╕.рдПрдЪ" рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕реЗ рдПрдбреБрдЗрдиреЛ рдЖрдИрдбреАрдИ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдХреАрдмреЛрд░реНрдб рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп рдорд╛рдирдХ рд╡рд╛рдпрд░.рдПрдЪ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рдПрдбреБрдЗрдиреЛ рдЖрдИрдбреАрдИ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИред
рд╣рдо рдПрдЪрдПрдордЖрдИ рдХреЛ рдЕрд░рд╛рдзреНрдпреБрдиреЛ рд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред

1. рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ Arduino рд╣рдорд╛рд░реЗ HMI рдХреЛ рджреЗрдЦрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓реЛрдб рдХрд░реЗрдВ, рдЬреЛ рдЙрд╕ рдкрд░ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП i2c рдмрд╕ рдХреЛ рд╕реНрдХреИрди рдХрд░реЗрдЧрд╛ред
рд╕реНрдХреЗрдЪ 1, i2c рдмрд╕ рд╕реНрдХреИрди//i2c_scaner #include <Wire.h> String stringOne; void setup() { Wire.begin(); Serial.begin(9600); while (!Serial); } void loop() { byte error, address; int nDevices; Serial.println("Scanning..."); nDevices = 0; for(address = 1; address < 127; address++ ) { Wire.beginTransmission(address); error = Wire.endTransmission(); if (error == 0) { String stringOne = String(address, HEX); Serial.print("0x"); Serial.print(stringOne); Serial.print(" - "); if(stringOne=="0A") Serial.println("'Motor Driver'"); if(stringOne=="0F") Serial.println("'Motor Driver'"); if(stringOne=="1D") Serial.println("'ADXL345 Input 3-Axis Digital Accelerometer'"); if(stringOne=="1E") Serial.println("'HMC5883 3-Axis Digital Compass'"); if(stringOne=="5A") Serial.println("'Touch Sensor'"); if(stringOne=="5B") Serial.println("'Touch Sensor'"); if(stringOne=="5C") Serial.println("'BH1750FVI digital Light Sensor' OR 'Touch Sensor" ); if(stringOne=="5D") Serial.println("'Touch Sensor'"); if(stringOne=="20") Serial.println("'PCF8574 8-Bit I/O Expander' OR 'LCM1602 LCD Adapter' "); if(stringOne=="21") Serial.println("'PCF8574 8-Bit I/O Expander'"); if(stringOne=="22") Serial.println("'PCF8574 8-Bit I/O Expander'"); if(stringOne=="23") Serial.println("'PCF8574 8-Bit I/O Expander' OR 'BH1750FVI digital Light Sensor'"); if(stringOne=="24") Serial.println("'PCF8574 8-Bit I/O Expander'"); if(stringOne=="25") Serial.println("'PCF8574 8-Bit I/O Expander'"); if(stringOne=="26") Serial.println("'PCF8574 8-Bit I/O Expander'"); if(stringOne=="27") Serial.println("'PCF8574 8-Bit I/O Expander' OR 'LCM1602 LCD Adapter '"); if(stringOne=="39") Serial.println("'TSL2561 Ambient Light Sensor'"); if(stringOne=="40") Serial.println("'BMP180 barometric pressure sensor'" ); if(stringOne=="48") Serial.println("'ADS1115 Module 16-Bit'"); if(stringOne=="49") Serial.println("'ADS1115 Module 16-Bit' OR 'SPI-to-UART'"); if(stringOne=="4A") Serial.println("'ADS1115 Module 16-Bit'"); if(stringOne=="4B") Serial.println("'ADS1115 Module 16-Bit'"); if(stringOne=="50") Serial.println("'AT24C32 EEPROM'"); if(stringOne=="53") Serial.println("'ADXL345 Input 3-Axis Digital Accelerometer'"); if(stringOne=="68") Serial.println("'DS3231 real-time clock' OR 'MPU-9250 Nine axis sensor module'"); if(stringOne=="7A") Serial.println("'LCD OLED 128x64'"); if(stringOne=="76") Serial.println("'BMP280 barometric pressure sensor'"); if(stringOne=="77") Serial.println("'BMP180 barometric pressure sensor' OR 'BMP280 barometric pressure sensor'"); if(stringOne=="78") Serial.println("'LCD OLED 128x64'" ); nDevices++; } else if (error==4) { Serial.print("Unknow error at address 0x"); if (address<16) Serial.print("0"); Serial.println(address,HEX); } } if (nDevices == 0) Serial.println("No I2C devices found\n"); else Serial.println("done\n"); delay(5000); }
рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди, Arduino рд╕реАрд░рд┐рдпрд▓ рдкреЛрд░реНрдЯ рдХреЛ i2c рдмрд╕ рдХреЗ рд╕реНрдХреИрди рдкрд░рд┐рдгрд╛рдо рд▓рд┐рдЦреЗрдЧрд╛ред рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП, Arduino IDE Tools-> рдкреЛрд░реНрдЯ рдореЙрдирд┐рдЯрд░ рдкрд░ рдЬрд╛рдПрдВред

рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ i2c рдмрд╕ рдкрд░ Arduino рдиреЗ 0x20 рдФрд░ 0x27 рдкрддреЗ рд╡рд╛рд▓реЗ рджреЛ рдЙрдкрдХрд░рдгреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХреА, рдпреЗ рдХреНрд░рдорд╢рдГ рдХреАрдмреЛрд░реНрдб рдФрд░ рдПрд▓рд╕реАрдбреА рд╣реИрдВред
2. рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░рд╛ рдХреАрдмреЛрд░реНрдб рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрдирд╛рдПрдВ рдЬреЛ рдмрдЯрдиреЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдкреНрд░рджреВрд╖рд┐рдд рдХрд░реЗрдЧрд╛ рдФрд░ рдЗрд╕реЗ рдПрд▓рд╕реАрдбреА рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред
рд╕реНрдХреЗрдЪ 2, рдмрдЯрди рдХреА рд╕реНрдерд┐рддрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ #include <LiquidCrystal_I2C.h> #include <Wire.h> #define led 13 #define ADDR_KBRD 0x20 #define ADDR_LCD 0x27 byte dio_in; bool b; bool key[5]; LiquidCrystal_I2C lcd(ADDR_LCD,16,2); // void setup() { pinMode(led, OUTPUT); // lcd.init(); lcd.backlight();// // Wire.begin(); Wire.beginTransmission(ADDR_KBRD); Wire.write(B11111111); // PCF8574P Wire.endTransmission(); } void loop() { Wire.requestFrom(ADDR_KBRD,1); while (!Wire.available()); byte dio_in = Wire.read(); // PCF8574P() // byte mask=1; for(int i=0; i<5;i++) { key[i]=!(dio_in & mask); mask=mask<<1; } b=!b; digitalWrite(led, b); // // LCD lcd.setCursor(0, 0); lcd.print(String(key[0])+" "+ String(key[1])+" "+ String(key[2])+" "+ String(key[3])+" "+ String(key[4])+" "); delay(100); }

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

рдиреЗрдЯреЗ рдореЗрдВ C ++ рдореЗрдВ рдПрдХ рдмрд╣реБ-рд╕реНрддрд░реАрдп рдореЗрдиреВ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдЬрд╛рдирдХрд╛рд░реА рд╣реИ, рд▓реЗрдХрд┐рди Arduino рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдХреБрдЫ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рднреА рджреЗрдЦрд╛ред рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдЦреБрдж рдореЗрдиреВ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХрдо рдмрд╛рдПрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдп, рд╢рд╛рдВрддред рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рдпрд╣ рд╕рд░рд▓ рд╣реИред
рдореБрдЭреЗ рдкреЗрдбрд╝ рдХреЗ рдореЗрдиреВ рдХрд╛ рдПрдХ рдФрд░ рд░реВрдк рдорд┐рд▓рд╛ред рдореЗрдиреВ рдЖрдкрдХреЛ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╕реНрдерд┐рд░ рдкрд╛рда рдФрд░ рдЪрд░ рдорд╛рди рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдирд╛рдо рдФрд░ рдЙрд╕рдХрд╛ рдорд╛рди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╕реНрдХреНрд░реАрди рдкрд░ рдЪрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЯреИрдЧ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реВрдВ - рдкрд╛рда рдореЗрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рдкрд╛рда рд▓реЗрдмрд▓, рдЬрд┐рд╕рдХреЗ рдмрдЬрд╛рдп, рдЬрдм рд╕реНрдХреНрд░реАрди рдкрд░ рдкрд╛рда рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдПрдХ рдореВрд▓реНрдп рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИред
"рдПрдбрд┐рдЯ" рдмрдЯрди рджрдмрд╛рдХрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдмрджрд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░рддреНрдпреЗрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЯреИрдЧ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд╕рдВрдкрд╛рджрди рдпрд╛ рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИред рдпрджрд┐ рд╡рд░реНрддрдорд╛рди рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗрд╡рд▓-рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рддреЛ рд▓рд╛рдЗрди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдкреЙрдЗрдВрдЯрд░ '*' рд╣реЛрдЧрд╛, рдЕрдЧрд░ рдПрдбрд┐рдЯрд┐рдВрдЧ рд╕рдХреНрд╖рдо рд╣реИ, рддреЛ рдкреЙрдЗрдВрдЯрд░ '+' рдмрди рдЬрд╛рдПрдЧрд╛ред
рд╕реНрдХреЗрдЪ 3, рдмрд╣реБ-рд╕реНрддрд░реАрдп рдореЗрдиреВ /* , LCD i2c LCD FC-113, 0x27 PCF8574P, 0x20 */ #include <LiquidCrystal_I2C.h> #include <Wire.h> #define led 13 // ; , , #define ADDR_KBRD 0x20 #define ADDR_LCD 0x27 #define PORT_D2 2 #define PORT_D3 3 #define PORT_D4 4 #define POINT_ON_ROOT_MENU_ITEM 0 // 0/1= / (* +) byte dio_in; bool b; byte i; //bool , bool BoolVal[9]={0,0,0, 0,0,0, 0,0,0}; #define ValSvet1 BoolVal[0] #define ValSvet2 BoolVal[1] #define ValSvet3 BoolVal[2] #define ValRozetka1 BoolVal[3] #define ValRozetka2 BoolVal[4] #define ValRozetka3 BoolVal[5] #define ValClapan1 BoolVal[6] #define ValClapan2 BoolVal[7] #define ValClapan3 BoolVal[8] // struct STRUCT_KEY{ bool StateCur; // bool StateOld; // bool Imp; // ( 0 1) }; // STRUCT_KEY Key[5]={0,0,0, 0,0,0, 0,0,0, 0,0,0, 0,0,0 }; //--- /* * , : * '#A1' bool , * '#'- bool, * 'A'- (HEX) BoolVal, * '1'- * , */ String StrNull=" "; // String StrRoot1="COMP-MAN.INFO"; String StrRoot2="PLC-BLOG.COM.UA"; String StrSvet= ""; // String StrSvet1=" 1 #01"; String StrSvet2=" 2 #10"; String StrSvet3=" 3 #21"; String StrRozetka=""; // String StrRozetka1=" 1 #30"; String StrRozetka2=" 2 #40"; String StrRozetka3=" 3 #50"; String StrClapan=""; // String StrClapan1=" 1 #60"; // String StrClapan2=" 2 #70"; String StrClapan3=" 3 #80"; struct MENU_ITEM // (), 2 { byte KeyUp; //тДЦ , "" byte KeyDwn; //тДЦ , "" byte KeyCancel; //тДЦ , ""(cancel) byte KeyEnter; //тДЦ , ""(enter) byte KeyEdit; // "edit", String *pstr1; // () String *pstr2; // () }; // MENU_ITEM Menu[]={0,0,0,1,0, &StrRoot1,&StrRoot2, //0 1,8,0,2,0, &StrSvet,&StrRozetka, //1 2,3,1,2,0, &StrSvet1,&StrSvet2, //2 2,4,1,3,0, &StrSvet2,&StrSvet3, //3 3,4,1,4,0, &StrSvet3,&StrNull, //4 0,0,0,0,0, &StrNull,&StrNull, //5 0,0,0,0,0, &StrNull,&StrNull, //6 0,0,0,0,0, &StrNull,&StrNull, //7 1,15,0,9,0, &StrRozetka,&StrClapan, //8 9,10,8,9,0, &StrRozetka1, &StrRozetka2, //9 9,11,8,10,0, &StrRozetka2, &StrRozetka3, //10 10,11,8,11,0, &StrRozetka3, &StrNull, //11 0,0,0,0,0, &StrNull,&StrNull, //12 0,0,0,0,0, &StrNull,&StrNull, //13 0,0,0,0,0, &StrNull,&StrNull, //14 8,15,0,16,0, &StrClapan, &StrNull, //15 16,17,15,0,0, &StrClapan1,&StrClapan2, //16 16,18,15,0,0, &StrClapan2,&StrClapan3, //17 17,18,15,0,0, &StrClapan3,&StrNull, //18 0,0,0,0,0, &StrNull,&StrNull, //19 0,0,0,0,0, &StrNull,&StrNull, //20 0,0,0,0,0, &StrNull,&StrNull, //21 }; byte PosMenu=0; // LiquidCrystal_I2C lcd(ADDR_LCD,16,2); // // void ReadKey(byte dio_in) { // byte mask=1; for(i=0; i<5; i++) { Key[i].StateCur=!(dio_in & mask); mask=mask<<1; Key[i].Imp=!Key[i].StateOld & Key[i].StateCur; // ( 0 1) Key[i].StateOld=Key[i].StateCur; } } /* * UTF-8 ( ) LCD * */ byte MasRus[33][2]= { 144, 0x41, // 145, 0xa0, 146, 0x42, 147, 0xa1, 148, 0xe0, 149, 0x45, 129, 0xa2, 150, 0xa3, 151, 0xa4, 152, 0xa5, 153, 0xa6, 154, 0x4b, 155, 0xa7, 156, 0x4d, 157, 0x48, 158, 0x4f, 159, 0xa8, 160, 0x50, 161, 0x43, 162, 0x54, 163, 0xa9, 164, 0xaa, 165, 0x58, 166, 0xe1, 167, 0xab, 168, 0xac, 169, 0xe2, 170, 0xad, 171, 0xae, 172, 0xc4, 173, 0xaf, 174, 0xb0, 175, 0xb1 // }; String RusStrLCD(String StrIn) { String StrOut=""; byte b1; byte y; byte l=StrIn.length(); for(byte i=0; i<l; i++) { b1=StrIn.charAt(i); if (b1<128) StrOut=StrOut+char(b1); else { if (b1==208) //==208, 2- . { b1=StrIn.charAt(i+1); for(y=0; y<33; y++) if(MasRus[y][0]==b1) { StrOut=StrOut+char(MasRus[y][1]); break; } } i++; } } return StrOut; } //--------------------------- //ASCII HEX ---> dec byte StrHexToByte(char val) { byte dec=0; switch (val) { case '0': dec=0; break; case '1': dec=1; break; case '2': dec=2; break; case '3': dec=3; break; case '4': dec=4; break; case '5': dec=5; break; case '6': dec=6; break; case '7': dec=7; break; case '8': dec=8; break; case '9': dec=9; break; case 'A': dec=10; break; case 'B': dec=11; break; case 'C': dec=12; break; case 'D': dec=13; break; case 'E': dec=14; break; case 'F': dec=15; break; default: dec=0; break; } return dec; } // void WriteLCD(byte num) { String str[]={"*"+*Menu[num].pstr1,*Menu[num].pstr2}; if (num==0 && POINT_ON_ROOT_MENU_ITEM==0) // ? str[0].setCharAt(0,' '); // , // byte NumVal; byte l; for(byte y=0; y<2; y++) { l=str[y].length(); for(i=0; i<l; i++) { if (str[y].charAt(i)=='#') //# bool, off/ON { if(StrHexToByte(str[y].charAt(i+2))==1 && y==0) // ? str[y].setCharAt(0,'+'); NumVal=StrHexToByte(str[y].charAt(i+1)); str[y]=str[y].substring(0,i)+String(NumVal) ; if(BoolVal[NumVal]==0) str[y]=str[y].substring(0,i)+"off" ; if(BoolVal[NumVal]==1) str[y]=str[y].substring(0,i)+"ON" ; } if (str[y].charAt(i)=='$') //$ int, , { ; } if (str[y].charAt(i)=='~') //~ , , { ; } } } //--- lcd.clear(); lcd.setCursor(0, 0); lcd.print(str[0]); lcd.setCursor(1, 1); lcd.print(str[1]); } //, byte GoMenu(byte key) { byte PosMenuNew=PosMenu; switch (key) { case 0: PosMenuNew=Menu[PosMenu].KeyUp; break; case 1: PosMenuNew=Menu[PosMenu].KeyDwn; break; case 2: PosMenuNew=Menu[PosMenu].KeyCancel; break; case 3: PosMenuNew=Menu[PosMenu].KeyEnter; break; case 4: ; break; default: break; } return PosMenuNew; } // "Edit" void Edit(byte posmenu) { byte NumVal; bool *pval; String str=*Menu[posmenu].pstr1; byte l=str.length(); for(i=0; i<l; i++) if (str.charAt(i)=='#') //#- bool, off/ON { if(StrHexToByte(str.charAt(i+2))==1) // ? { pval= &(BoolVal[StrHexToByte(str.charAt(i+1))]); // , . *pval=!(*pval); // } } } // void ValToPort() { digitalWrite(PORT_D2,ValSvet1); digitalWrite(PORT_D3,ValSvet2); digitalWrite(PORT_D4,ValSvet3); } void setup() { pinMode(led, OUTPUT); // pinMode(PORT_D2, OUTPUT); pinMode(PORT_D3, OUTPUT); pinMode(PORT_D4, OUTPUT); // LCD StrSvet=RusStrLCD(StrSvet); StrSvet1=RusStrLCD(StrSvet1); StrSvet2=RusStrLCD(StrSvet2); StrSvet3=RusStrLCD(StrSvet3); StrRozetka=RusStrLCD(StrRozetka); StrRozetka1=RusStrLCD(StrRozetka1); StrRozetka2=RusStrLCD(StrRozetka2); StrRozetka3=RusStrLCD(StrRozetka3); StrClapan=RusStrLCD(StrClapan); StrClapan1=RusStrLCD(StrClapan1); StrClapan2=RusStrLCD(StrClapan2); StrClapan3=RusStrLCD(StrClapan3); // lcd.init(); lcd.backlight();// WriteLCD(PosMenu); Wire.begin(); Wire.beginTransmission(ADDR_KBRD); Wire.write(B11111111); // PCF8574P Wire.endTransmission(); } void loop() { Wire.requestFrom(ADDR_KBRD,1); while (!Wire.available()); byte dio_in = Wire.read(); // PCF8574P() ReadKey(dio_in); // //, ; , int KeyImp=-1; for (i=0; i<5; i++) if(Key[i].Imp==1) { KeyImp=i; Key[i].Imp==0; } if (KeyImp>-1) // ? { if (KeyImp==4) // "Edit" Edit(PosMenu); PosMenu=GoMenu((KeyImp)); WriteLCD(PosMenu); } b=!b; digitalWrite(led, b); // ValToPort(); // delay(50); }
рдПрд▓рд╕реАрдбреА 1602 рдФрд░ рднрд╛рд╖рд╛ рдХрд╛ рдореБрджреНрджрд╛
рдЕрд▓рдЧ рд╕реЗ, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рд░реБрд╕рд┐рдлрд┐рдХреЗрд╢рди рдХрд╛ рдореБрджреНрджрд╛ рдЙрдард╛рдпрд╛ рдЬрд╛рдПред
рдХреБрдЫ рдПрд▓рд╕реАрдбреА 1602 рдХреЗ рдЪрд░рд┐рддреНрд░ рдЬрдирд░реЗрдЯрд░ рдореЗрдВ рдХреЛрдИ рд░реВрд╕реА рдЕрдХреНрд╖рд░ рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рдЙрдирдХреЗ рдмрдЬрд╛рдп рдЬрд╛рдкрд╛рдиреА рдХреНрд░реИрдХреЛрдЬрд╝реИрдмреНрд░реА рд╕рд┐рд▓реЗ рд╣реБрдП рд╣реИрдВред рдЪрд░рд┐рддреНрд░ рдЬрдирд░реЗрдЯрд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рднрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреЛ рдпрд╛ рддреЛ рд▓реИрдЯрд┐рди рдЕрдХреНрд╖рд░реЛрдВ рдореЗрдВ рд╕реНрдХреНрд░реАрди рдкрд░ рд╢рдмреНрджреЛрдВ рдХреЛ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛, рдпрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рд░реВрд╕реА рдЕрдХреНрд╖рд░реЛрдВ рдХреЛ рд╕реНрд╡рдпрдВ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдПрд▓рд╕реАрдбреА 1602 рдореЗрдВ рд░реИрдо рд░реИрдо рдореЗрдВ рдЕрдкрдиреЗ рдЦреБрдж рдХреЗ рдкрд╛рддреНрд░реЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдФрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рд▓реЗрдХрд┐рди, рдмрд╛рдж рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдк рд╕реНрдХреНрд░реАрди рдкрд░ рдПрдХ рдмрд╛рд░ рдореЗрдВ рдЖрда "рдШрд░ рдХрд╛ рдмрдирд╛" рдкрд╛рддреНрд░реЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЪрд░рд┐рддреНрд░ рдЪрд╛рд░реНрдЯ рдПрд▓рд╕реАрдбреА 1602 рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдПрд▓рд╕реАрдбреА рдкрд░ рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рд░реВрд╕реА рд╢рдмреНрдж рд▓рд┐рдЦрдирд╛ рдареАрдХ рд╣реИред рд╡рд╣рд╛рдБ рднреА, рдПрдХ рджрд╢рдХ рд╕реЗ рдбреЗрдврд╝ рджрд╢рдХ рддрдХ рдлреНрд░рд╛рдВрд╕реАрд╕реА рдХрдВрдкрдиреА рд╢реНрдирд╛рдЗрдбрд░ рдЗрд▓реЗрдХреНрдЯреНрд░рд┐рдХ (рдХреНрд░рд╛рдВрддрд┐ рдХреЗ рдкрд╣рд▓реЗ рд╣реЙрд╡рд┐рддреНрдЬрд░ рдХреЛ tsar рдХреЛ рдмреЗрдЪрдиреЗ рд╡рд╛рд▓рд╛) рд░реВрд╕реА рдХреЛ рдЙрдирдХреЗ рдкреНрд░рд╕рд┐рджреНрдз рдЬрд╝реЗрд▓рд┐рдпреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдмрд▓ рд░рд┐рд▓реЗ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд░ рдкрд╛рдпрд╛ред рд▓реЗрдХрд┐рди рдпрд╣ рдЙрдиреНрд╣реЗрдВ рдкреВрд░реЗ рд╕реАрдЖрдИрдПрд╕ рдХреА рд╡рд┐рд╢рд╛рд▓рддрд╛ рдореЗрдВ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╡реНрдпрд╛рдкрд╛рд░ рдХрд░рдиреЗ рд╕реЗ рдирд╣реАрдВ рд░реЛрдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдирд╣рд░реЛрдВ, рд╕реНрдкреЗрдирд┐рд╢ рдФрд░ рдкреБрд░реНрддрдЧрд╛рд▓реА рд╢реБрд░реВ рдХреАред
рд╣рдорд╛рд░реЗ рдХрдИ рдХрд╛рд░рдЦрд╛рдиреЛрдВ рдореЗрдВ, рдпреЗ рдЬрд╝реЗрд▓рд┐рдпреЛ "рдирд╛рд╕реНрдХ 1 рд╡реАрдХреЗрдПрд▓" рдЬреИрд╕реЗ рд╡рд╛рдХреНрдпрд╛рдВрд╢реЛрдВ рдХреЗ рд╕рд╛рде рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рддреЗ рд╣реИрдВред
рдЬрдм рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдПрд▓рд╕реАрдбреА рдореЗрдВ рд░реВрд╕реА рдкрддреНрд░ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╕реНрдХреНрд░реАрди рдкрд░ рдЗрд╕рдХреЗ рдЪрд░рд┐рддреНрд░ рдЬрдирд░реЗрдЯрд░ рдХреЗ рд╕рднреА рдкрд╛рддреНрд░реЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рд╕рд┐рд░рд┐рд▓рд┐рдХ рд╣реИ, рддреЛ рдпрд╣ 160 рдХреА рд╕реНрдерд┐рддрд┐ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред
рд╕реНрдХреЗрдЪ 4, рдПрд▓рд╕реАрдбреА 1602 рдЪрд░рд┐рддреНрд░ рдЬрдирд░реЗрдЯрд░ рдХреА рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рд╕рднреА рдкрд╛рддреНрд░реЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2); // void setup() { // put your setup code here, to run once: lcd.init(); lcd.clear(); } void loop() { int i,y; while(1) { for (i=0; i < 16; i++) { lcd.clear(); lcd.setCursor(0,0); lcd.print(String(i*16)+" - "+String(i*16+15)); lcd.setCursor(0,1); for(y=0;y<16;y++) lcd.print(char(i*16+y)); delay(3000); } } }
рд▓реЗрдХрд┐рди рднрд▓реЗ рд╣реА рдЖрдкрдХрд╛ LCD 1602 Russified рд╣реЛ, рд░реВрд╕реА рд╢рдмреНрджреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЗрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИред рдХрдо рд╕реЗ рдХрдо, i2c рдмрд╕ рдореЗрдВ LCD рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп LiquidCrystal_I2C.h рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред
рдпрджрд┐ рдЖрдк рдмрд╕ рд░реВрд╕реА рдкрд╛рда рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рд░реНрджреЗрд╢ lcd.print ("рд╣реИрд▓реЛ !!!") рдХреЗ рд╕рд╛рде, рдлрд┐рд░ "рд╣реИрд▓реЛ" рдХреЗ рдмрдЬрд╛рдп рдХреБрдЫ рдмрдХрд╡рд╛рд╕ рд╕реНрдХреНрд░реАрди рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред
рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ Arduino IDE рд░реВрд╕реА рдЕрдХреНрд╖рд░реЛрдВ рдХреЛ рджреЛ-рдмрд╛рдЗрдЯ UTF-8 рдХреЛрдб рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдПрд▓рд╕реАрдбреА рдореЗрдВ рд╕рднреА рд╡рд░реНрдг рдПрдХрд▓-рдмрд╛рдЗрдЯ рд╣реЛрддреЗ рд╣реИрдВред
рдЗрд╕реА рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛, рдЕрд░реНрдбреБрдЗрдиреЛ рд╕реЗ рд░реВрд╕реА рдЧреНрд░рдВрдереЛрдВ рдХреЛ Arduino IDE рдкреЛрд░реНрдЯ рдореЙрдиреАрдЯрд░ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╕рдордп рджреЗрдЦреА рдЬрд╛рддреА рд╣реИред Arduino UTF-8 рдбрдмрд▓-рдмрд╛рдЗрдЯ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдореЗрдВ рд░реВрд╕реА рдкрддреНрд░реЛрдВ рдХреЛ рд╕реАрд░рд┐рдпрд▓ рдкреЛрд░реНрдЯ рддрдХ рдкрд╣реБрдВрдЪрд╛рддрд╛ рд╣реИ, рдФрд░ Arduino IDE рдкреЛрд░реНрдЯ рдореЙрдирд┐рдЯрд░ рдЙрдиреНрд╣реЗрдВ рд╕рд┐рдВрдЧрд▓-рдмрд╛рдЗрдЯ рд╡рд┐рдВрдбреЛрдЬ -1251 рдПрдиреНрдХреЛрдбрд┐рдВрдЧ (cp1251) рдореЗрдВ рдкрдврд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐ cp1251 рднреА 8 рдмрд┐рдЯ рд╣реИ, рдПрд▓рд╕реАрдбреА 1602 рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреА рддрд░рд╣, рдпрд╣ рдЗрд╕рдХреЗ рд╕рд╛рде рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИред
рдЖрдк рдЪрд░рд┐рддреНрд░ рдХреЛрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░реВрд╕реА рдЧреНрд░рдВрдереЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ Russified LCD рдкрд░ рд▓рд╛рдЗрди 'LCD рдбрд┐рд╕реНрдкреНрд▓реЗ' рдХреЛ рдЗрд╕ рддрд░рд╣ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
lcd.print("\243K \343\270c\276\273e\271");
рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ рддрд░реАрдХрд╛ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИред
Russified LCD 1602 рдкрд░ рд░реВрд╕реА рдкрд╛рда рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, Arduino рдХреЗ рд▓рд┐рдП рдХрдИ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рд╕рдореАрдХреНрд╖рд╛рдУрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддреЗ рд╕рдордп рдЧреНрд▓рд┐рдЯреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрдИ рд╢рд┐рдХрд╛рдпрддреЗрдВ рд╣реИрдВред
рдЗрд╕рд▓рд┐рдП, рдореЗрд░реЗ рдмрд╣реБ-рд╕реНрддрд░реАрдп рдореЗрдиреВ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ, рдореИрдВрдиреЗ рд╕реНрд╡рдпрдВ рдпреВрдЯреАрдПрдл -8 рдХреЛ рдПрд▓рд╕реАрдбреА рдХреЛрдб рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдХрд╛рд░реНрдп рд▓рд┐рдЦрд╛ рд╣реИред рд╕рдЪ рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕реЗ рдХреЗрд╡рд▓ рд░рд╛рдЬрдзрд╛рдиреА рд░реВрд╕реА рдкрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдерд╛, рдЬреЛ рдореБрдЭреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реВрдЯ рдХрд░рддрд╛ рд╣реИред
рдпреВрдЯреАрдПрдл -8 рдЕрдкрд░рдХреЗрд╕ рд░реВрд╕реА рдЕрдХреНрд╖рд░реЛрдВ рдХреЛ рд╕рд┐рдВрдЧрд▓-рдмрд╛рдЗрдЯ рдПрд▓рд╕реАрдбреА 1602 рдХреЛрдб рдореЗрдВ рдмрджрд▓рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп /* * UTF-8 ( ) LCD * */ byte MasRus[33][2]= { 144, 0x41, // 145, 0xa0, 146, 0x42, 147, 0xa1, 148, 0xe0, 149, 0x45, 129, 0xa2, 150, 0xa3, 151, 0xa4, 152, 0xa5, 153, 0xa6, 154, 0x4b, 155, 0xa7, 156, 0x4d, 157, 0x48, 158, 0x4f, 159, 0xa8, 160, 0x50, 161, 0x43, 162, 0x54, 163, 0xa9, 164, 0xaa, 165, 0x58, 166, 0xe1, 167, 0xab, 168, 0xac, 169, 0xe2, 170, 0xad, 171, 0xae, 172, 0xc4, 173, 0xaf, 174, 0xb0, 175, 0xb1 // }; String RusStrLCD(String StrIn) { String StrOut=""; byte b1; byte y; byte l=StrIn.length(); for(byte i=0; i<l; i++) { b1=StrIn.charAt(i); if (b1<128) StrOut=StrOut+char(b1); else { if (b1==208) //==208, 2- . { b1=StrIn.charAt(i+1); for(y=0; y<33; y++) if(MasRus[y][0]==b1) { StrOut=StrOut+char(MasRus[y][1]); break; } } i++; } } return StrOut; }
рдпрд╣ рд╕рдм i2c рдмрд╕ рдХреЗ рд╕рд╛рде рд╣реЛрдордореЗрдб HMI рдХреЗ рд▓рд┐рдП рд╣реИред
рдУрд╣ рд╣рд╛рдБ, рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдореИрдВрдиреЗ рд▓рд┐рдЦрд╛ рдерд╛ рдХрд┐ рдореИрдВ рдПрдЪрдПрдордЖрдИ Arduino рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ Arduino- рд╕рдВрдЧрдд рдЙрдкрдХрд░рдг рдХреЗ рд▓рд┐рдП рдХрд░ рд░рд╣рд╛ рдерд╛ред рдпрд╣ рдореЗрд░реЗ рдкрд╛рд╕ PLC
рдХрдВрдЯреНрд░реЛрд▓рд░ MAXI рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рдЬрд┐рд╕реЗ Arduino IDE (рдФрд░ рдХрдИ рдЕрдиреНрдп) рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

CONTROLLINO MAXI рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ Arduino + рдврд╛рд▓реЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд╣реИ рдФрд░ рд╕рдм рдХреБрдЫ рдПрдХ рдФрджреНрдпреЛрдЧрд┐рдХ рдкреАрдПрд▓рд╕реА рдХреЗ рд░реВрдк рдореЗрдВ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд▓реА рдмрд╛рд░ рдЙрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред
рд╕рдВрджрд░реНрднтЖТ рдбрд╛рдпрдЧреНрд░рд╛рдо, рд╕реНрдХреЗрдЪ рдФрд░ рдПрдХ рдкреНрд░рд┐рдВрдЯреЗрдб рд╕рд░реНрдХрд┐рдЯ рдмреЛрд░реНрдб рдХреЗ рд╕рд╛рде рд▓реЗрдЖрдЙрдЯ 6 рдлреЙрд░реНрдореЗрдЯ рдореЗрдВ
тЖТ
Arduino- рд╕рдВрдЧрдд PLC CONTROLLINO , рдЬрд┐рд╕ рдХрд╛рд░реНрдп рдХреЗ рд╕рд╛рде HMI i2c рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рдкреНрд░реЗрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ
тЖТ
PCF8574 рдкреЛрд░реНрдЯ рд╡рд┐рд╕реНрддрд╛рд░рдХ рдФрд░ рдЗрд╕реЗ Arduino рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛
тЖТ I2c рдмрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрд▓рд╕реАрдбреА 1602 рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП
FC-113 рдмреЛрд░реНрдб рдФрд░ Arduino рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдХрдиреЗрдХреНрд╢рди
тЖТ
рдмрд╣реБрд╕реНрддрд░реАрдп рдЯреНрд░реА рдореЗрдиреВ , C рдореЗрдВ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рд╕рд┐рджреНрдзрд╛рдВрдд
тЖТ
UTF-8 рдХреЛ рдПрдирдХреЛрдбрд┐рдВрдЧтЖТ
рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд╡рд┐рдВрдбреЛрдЬ -1251