рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд▓рдВрдмреЗ рд╕рдордп рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЛ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ - рдЖрдИрдкреАрдЯреАрд╡реА рдЪреИрдирд▓реЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рдПрдХ рджреГрд╢реНрдп рдкреНрд░рджрд░реНрд╢рдиред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╢реБрд░реВ рдореЗрдВ рдпрд╣ рд╕рдм рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдерд╛ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╢рд╣рд░ рдХрд╛ рдПрдХ рдирдХреНрд╢рд╛, рдЙрд╕ рдкрд░ рдПрд▓ рдИ рдбреА рд░рдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВ (рдЙрди рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЬрд╣рд╛рдВ рдЙрдкрдХрд░рдг рд╕реНрдерд┐рдд рд╣реИ), рдФрд░ рдЗрд╕ рдирдХреНрд╢реЗ рдХреЛ рджреЗрдЦрдХрд░ рдЖрдк рд╣рдореЗрд╢рд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реБрдЖ рд╣реИред
рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдЖрдИрдкреАрдЯреАрд╡реА рдЪреИрдирд▓реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрди рдЪреИрдирд▓реЛрдВ рдореЗрдВ рд╕реЗ рдХрдИ рд╣реИрдВ, рд▓рдЧрднрдЧ 160 рдЯреБрдХрдбрд╝реЗ, рдпрд╣ рд╕реЗрд╡рд╛ рдЪреИрдирд▓реЛрдВ рдХреА рдЧрд┐рдирддреА рдирд╣реАрдВ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдВрдШреАрдп рдЪреИрдирд▓ рдмрд╣реБрд╕рдВрдХреЗрддрди рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЯреАрдПрдирдЯреА рдЪреИрдирд▓ рд╢рд╣рд░ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рд╕реНрдерд┐рдд рджреЛ рд░рд┐рд╕реАрд╡рд░реЛрдВ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рджреВрд╕рд░реЗ рд╢рд╣рд░ рд╕реЗ рдЖрдо рддреМрд░ рдкрд░ рдЪрд╛рд╣реВрдВрдЧрд╛), рдирд┐рдЬреА рдорд▓реНрдЯреАрдХрд╛рд╕реНрдЯ рдзрд╛рд░рд╛рдПрдВ рдорд▓реНрдЯреАрдкреНрд▓реЗрдХреНрд╕ рдореЗрдВ рдлрд┐рдЯ рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдорд▓реНрдЯреАрдХрд╛рд╕реНрдЯ рдЬрд╛рд░реА рдХрд░рддреА рд╣реИрдВ, рдФрд░ рджреБрд░реНрдШрдЯрдирд╛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЪреИрдирд▓реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд░рд┐рдЬрд░реНрд╡ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддрд╛ рд╣реИред
рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдореИрдВрдиреЗ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рдЧрд░рд╛рдиреА рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛, рдЕрд░реНрдерд╛рддред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕рднреА рдЪреИрдирд▓реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рдиреЗ рд╡рд╛рд▓реА рд▓рд┐рдкрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рдкреВрд░рд╛ рдкрд░рд┐рд╕рд░ рдмрдирд╛рдпрд╛ рд╣реИ - рдЙрдирдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдВ, рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ, рдЪреИрдирд▓ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ, рдХреИрдо рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЭрдЯрдХрд╛ рджреЗрдХрд░ рдЙрдиреНрд╣реЗрдВ рд╕рд╣реА рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ (рдЯреЗрд▓рдиреЗрдЯ, рд╕реНрдиреИрдореНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдпрд╣ рд░рд┐рд╕реАрд╡рд░ рдХреЛ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рддреБрдЪреНрдЫ рд╣реИред рдЗрд╕рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╡рд┐рдлрд▓ рдЪреИрдирд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЖрдзреЗ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╕рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдШрдЯрдирд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЭреЗ рдПрд╕рдПрдордПрд╕ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреВрд░реЗ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдЖрдВрдХрдбрд╝реЗ рднреА stb-shek, рд╕реНрд╡рд┐рдЪреЗрд╕ рд╕реЗ рдПрдХрддреНрд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдлрд░реНрдорд╡реЗрдпрд░ рд▓реЛрдЧ рд╣реИрдВ, рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрдВрд╕реЛрд▓, рдХреМрди рд╕реЗ рдЪреИрдирд▓ рдФрд░ рдХреМрди рд╕реЗ рд╡рд┐рд╢реЗрд╖ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реЛрдЧ рджреЗрдЦрддреЗ рд╣реИрдВ (рдмрд╣реБрдд рд╣реА рд░реЛрдЪрдХ рддрдереНрдп)ред
рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реИ рдЬреЛ рдореЛрдЬрд╝реЗрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЪреИрдирд▓реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рддрд╛ рд╣реИ, рдпрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд░рдЦрддрд╛ рд╣реИ
рд╕реНрдХреНрд░реАрди рдкрд░ рдЪреИрдирд▓реЛрдВ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ (рдЖрдк рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рд╕реНрдХреНрд░реАрди рдкрд░ рд╕рднреА 160 рдЪреИрдирд▓ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ 4x6 = 24 рдПрд╕рдбреА рдЪреИрдирд▓ рдПрдХ рдЕрдЪреНрдЫреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ / рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдб / рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рдХреЗ рд╕рд╛рде рдХрд╛рдлреА рдпрдерд╛рд░реНрдерд╡рд╛рджреА рд╣реИрдВ)ред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ, рдпрд╣ рд╕рдм рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореМрдЬреВрдж рд╣реИ, рд▓реЗрдХрд┐рди рдЗрддрдирд╛ рд╣реИ рдХрд┐ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рдмрд┐рдирд╛ рдФрд░ рдПрд▓ рдИ рдбреА рдХреЗ рд░реВрдк рдореЗрдВ - рдпрд╣ рдирд╣реАрдВ рд╣реЛрдЧрд╛ ...
рдФрд░ рдлрд┐рд░ рдореИрдВ Arduino рд╕реЗ рдорд┐рд▓рд╛ред
рдЖрдк рдЦреБрдж рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХрд┐рд╕ рд╡рдЬрд╣ рд╕реЗ рд╣реБрдЖред
рдЪреВрдВрдХрд┐ рдореИрдВ рдЯрд╛рдВрдХрд╛ рд▓рдЧрд╛рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрд╣реЗ рдХреЗ рд╕рд╛рде рджреЛрд╕реНрдд рдирд╣реАрдВ рдерд╛ (рдФрд░ рдЕрдм рдпрд╣ рдордЬрдмреВрдд рдирд╣реАрдВ рд╣реИ - рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреБрдЫ рдкреНрд░рдЧрддрд┐ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИ) рдФрд░ рд╕рд░реНрдХрд┐рдЯреНрд░реА, рдЖрджрд┐ рдХреЗ рд╕рд╛рде рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЕрдиреБрдХреВрд▓ рдирд╣реАрдВ рдерд╛ред - рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдкрд╣рд▓реЗ (рдФрд░ рдЕрдм рднреА) рдХрдард┐рди рдерд╛, рд▓реЗрдХрд┐рди рд╡рд╣ рд▓рдХреНрд╖реНрдп рдерд╛ - рдирдИ рдЪреАрдЬреЛрдВ рдХреЛ рд╕реАрдЦрдирд╛, рдкрд╣рд▓реЗ рд╡рд╛рд▓реЗ рдЕрдЬреНрдЮрд╛рдд рдХреЛ рдЬрд╛рдирдирд╛ред рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдирд╣реАрдВ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдореИрдВрдиреЗ рд╢рд┐рдлреНрдЯ рд░рдЬрд┐рд╕реНрдЯрд░, рдлреНрд▓реИрд╢ рд▓рд╛рдЗрдЯреНрд╕ рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ рд╕реАрдЦрд╛, рдпрд╣ рдПрд▓ рдИ рдбреА рдХреЗ рдкреВрд░реЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рдХреИрд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, "рдбрд╛рдпрдиреЗрдорд┐рдХ рдЗрдВрдбрд┐рдХреЗрд╢рди" рдЬреИрд╕реА рдЪреАрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗред рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдЕрдВрдд рдореЗрдВ рдХреНрдпрд╛ рд╣реБрдЖ (рдФрд░ рдореИрдВрдиреЗ рдРрд╕рд╛ рдХрд┐рдпрд╛!)ред

рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ 16x10 рдПрд▓рдИрдб рдХреЗ рдПрдХ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рддреИрдпрд╛рд░ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдмреЛрд░реНрдб рдореЗрдВ рдорд┐рд▓рд╛рдпрд╛, рдЙрдиреНрд╣реЗрдВ 4 рд╢рд┐рдлреНрдЯ рд░рдЬрд┐рд╕реНрдЯрд░ 74HC595 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреЛрдбрд╝рд╛ред рдЙрд╕рдХреЗ рд▓рд┐рдП enc28j60 рдкрд░ arduino рдФрд░ ethershield рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдирд┐рдХрд▓рд╛ (рдЪрд┐рддреНрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИрдВ)



рд╕рдВрд╕реНрдХрд░рдг 0.22 рдФрд░ рдЗрдерд░рд╢реАрд▓реНрдб рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕рдВрд╕реНрдХрд░рдг 1.1 рдХреЗ рд╕рд╛рде рд╡рд┐рдХрд╛рд╕ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдХреЛрдбред
рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдирдпрд╛ рд╣реИ, рдЕрдЧрд░ рдЖрдк рдЕрдЪрд╛рдирдХ рджреЛрд╣рд░рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - рддреЛ рдЖрдкрдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИ
#include "etherShield.h" static uint8_t mymac[6] = {0x00,0x80,0x48,0x2d,0xf7,0x25}; // mac- static uint8_t myip[4] = {10,20,30,40}; // ip- 10.20.30.40 #define MYPORT 5555 #define BUFFER_SIZE 500 static uint8_t buf[BUFFER_SIZE+1]; static char number[7]; const byte clockPin = 7; // const byte latchPin = 8; // const byte dataPin = 9; // const byte NumRegs = 4; // const byte NumCols=10; const byte NumRows=16; // - , // // 4 , , // // () 1 32 // 26 (10+16) - byte Col_bits[NumCols] = {3,5,7,11,13,15,19,21,23,27}; // // , .. 1- // 3 .. byte Row_bits[NumRows] = {32,30,28,26,24,22,20,18,16,14,12,10,8,6,4,2}; // // byte Regs[NumRegs]; int reg_n, bit_n, in_r, in_c; // , . // 2! ;) // - byte matrix[NumRows][NumCols]={{1,0,1,0,0,0,1,1,1,1}, {1,0,1,0,0,0,0,0,0,1}, {1,0,1,0,0,0,0,0,0,1}, {1,0,1,0,0,0,0,0,1,0}, {1,0,1,0,0,0,0,0,1,0}, {1,0,1,1,0,0,0,0,1,0}, {1,0,1,0,1,0,0,1,0,0}, {1,0,1,0,1,0,0,1,0,0}, {1,0,1,0,1,0,0,1,0,0}, {1,0,1,0,1,0,1,0,0,0}, {1,0,1,0,1,0,1,0,0,0}, {1,0,1,1,0,0,1,1,1,1}, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}}; EtherShield es=EtherShield(); void setup() { pinMode(latchPin, OUTPUT); pinMode(dataPin, OUTPUT); pinMode(clockPin, OUTPUT); es.ES_enc28j60Init(mymac); // es.ES_init_ip_arp_udp_tcp(mymac,myip, MYPORT); // } void loop() { uint16_t plen, dat_p, ptr; while(1) { burn_matrix(); // // ( ). // , // - // - read packet, handle ping and wait for a tcp packet: dat_p=es.ES_packetloop_icmp_tcp(buf,es.ES_enc28j60PacketReceive(BUFFER_SIZE, buf)); /* dat_p will be unequal to zero if there is a valid request */ if(dat_p == 0) { // no request continue; } // :) // "IbZ " if (strncmp("IbZ ",(char *)&(buf[dat_p]),4)==0) { // 4- ptr = dat_p+4; for(in_r=0; in_r < NumRows; in_r++) { for(in_c=0; in_c < NumCols; in_c++) { matrix[in_r][in_c] = 0; // ( , ;) ) } } // - - // , - 0 while(buf[ptr] != 0) { in_r = (buf[ptr]-1) % 16; in_c = (buf[ptr]-1) / 16; matrix[in_r][in_c] = 1; // ptr++; } } } } void burn_matrix() { // - 1- , , // 2- , 10- for(int c = 0; c < NumCols; c++) { for(int i = 0; i < NumRegs; i++) { Regs[i]=255; } reg_n = (Col_bits[c]-1) / 8; bit_n = (Col_bits[c]-1) % 8; bitWrite(Regs[reg_n], bit_n, 0); for(int r = 0; r < NumRows; r++) { reg_n = (Row_bits[r]-1) / 8; bit_n = (Row_bits[r]-1) % 8; bitWrite(Regs[reg_n], bit_n, matrix[r][c]); } registerWrite(); delay(1); } } // - void registerWrite() { digitalWrite(latchPin, LOW); for(int cur_reg = NumRegs-1; cur_reg >= 0; cur_reg
#include "etherShield.h" static uint8_t mymac[6] = {0x00,0x80,0x48,0x2d,0xf7,0x25}; // mac- static uint8_t myip[4] = {10,20,30,40}; // ip- 10.20.30.40 #define MYPORT 5555 #define BUFFER_SIZE 500 static uint8_t buf[BUFFER_SIZE+1]; static char number[7]; const byte clockPin = 7; // const byte latchPin = 8; // const byte dataPin = 9; // const byte NumRegs = 4; // const byte NumCols=10; const byte NumRows=16; // - , // // 4 , , // // () 1 32 // 26 (10+16) - byte Col_bits[NumCols] = {3,5,7,11,13,15,19,21,23,27}; // // , .. 1- // 3 .. byte Row_bits[NumRows] = {32,30,28,26,24,22,20,18,16,14,12,10,8,6,4,2}; // // byte Regs[NumRegs]; int reg_n, bit_n, in_r, in_c; // , . // 2! ;) // - byte matrix[NumRows][NumCols]={{1,0,1,0,0,0,1,1,1,1}, {1,0,1,0,0,0,0,0,0,1}, {1,0,1,0,0,0,0,0,0,1}, {1,0,1,0,0,0,0,0,1,0}, {1,0,1,0,0,0,0,0,1,0}, {1,0,1,1,0,0,0,0,1,0}, {1,0,1,0,1,0,0,1,0,0}, {1,0,1,0,1,0,0,1,0,0}, {1,0,1,0,1,0,0,1,0,0}, {1,0,1,0,1,0,1,0,0,0}, {1,0,1,0,1,0,1,0,0,0}, {1,0,1,1,0,0,1,1,1,1}, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}}; EtherShield es=EtherShield(); void setup() { pinMode(latchPin, OUTPUT); pinMode(dataPin, OUTPUT); pinMode(clockPin, OUTPUT); es.ES_enc28j60Init(mymac); // es.ES_init_ip_arp_udp_tcp(mymac,myip, MYPORT); // } void loop() { uint16_t plen, dat_p, ptr; while(1) { burn_matrix(); // // ( ). // , // - // - read packet, handle ping and wait for a tcp packet: dat_p=es.ES_packetloop_icmp_tcp(buf,es.ES_enc28j60PacketReceive(BUFFER_SIZE, buf)); /* dat_p will be unequal to zero if there is a valid request */ if(dat_p == 0) { // no request continue; } // :) // "IbZ " if (strncmp("IbZ ",(char *)&(buf[dat_p]),4)==0) { // 4- ptr = dat_p+4; for(in_r=0; in_r < NumRows; in_r++) { for(in_c=0; in_c < NumCols; in_c++) { matrix[in_r][in_c] = 0; // ( , ;) ) } } // - - // , - 0 while(buf[ptr] != 0) { in_r = (buf[ptr]-1) % 16; in_c = (buf[ptr]-1) / 16; matrix[in_r][in_c] = 1; // ptr++; } } } } void burn_matrix() { // - 1- , , // 2- , 10- for(int c = 0; c < NumCols; c++) { for(int i = 0; i < NumRegs; i++) { Regs[i]=255; } reg_n = (Col_bits[c]-1) / 8; bit_n = (Col_bits[c]-1) % 8; bitWrite(Regs[reg_n], bit_n, 0); for(int r = 0; r < NumRows; r++) { reg_n = (Row_bits[r]-1) / 8; bit_n = (Row_bits[r]-1) % 8; bitWrite(Regs[reg_n], bit_n, matrix[r][c]); } registerWrite(); delay(1); } } // - void registerWrite() { digitalWrite(latchPin, LOW); for(int cur_reg = NumRegs-1; cur_reg >= 0; cur_reg-- ) { shiftOut(dataPin, clockPin, MSBFIRST, Regs[cur_reg]); } digitalWrite(latchPin, HIGH); }
рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╕рд░рд▓ рд╣реИ: рдпрджрд┐ рдЪреИрдирд▓ рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ - рдпрд╣ рддреБрд░рдВрдд рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ - рдПрд▓рдИрдбреА рдкреНрд░рдХрд╛рд╢ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИ рдФрд░ рдПрд▓рдИрдбреА рдмрд╛рд╣рд░ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИред
рдЬрдм рдЪреИрдирд▓ рдХреА рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдПрд▓рдИрдбреА рдЪрд╛рд▓реВ рд╣реЛрддрд╛ рд╣реИ; рдпрджрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ, рддреЛ рдПрд▓рдИрдбреА рдмрд╛рд╣рд░ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреИрд╕реЗ рдЪреИрдХ рдЪреИрдирд▓ рдЪрд▓рд╛рддреА рд╣реИред рдпрд╣ рдирд┐рдЧрд░рд╛рдиреА рд╕рд░реНрд╡рд░ рдкрд░ рд╣рд░ рдЖрдзреЗ рдШрдВрдЯреЗ рдореЗрдВ рдПрдХ рдмрд╛рд░ рдЪрд▓рддрд╛ рд╣реИ (рдпрд╣ рдкреНрд░рддрд┐ рдЪреИрдирд▓ 8 рд╕реЗрдХрдВрдб рд╕реЗ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд╕рдордп рд▓реЗрддрд╛ рд╣реИ), рдирд┐рдЬреА рд╕рдВрдШреАрдп рд╕рд░реНрд╡рд░ рдХреЛ рдЕрд▓рдЧ рд╕реЗ рдЬрд╛рдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣рд╛рдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдпрд╣ рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╣реИ (рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рд╕рдЪреНрдЪрд╛рдИ рд╢рд╛рдпрдж рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ :() рдПрд▓ рдИ рдбреА рдХреА рдПрдХ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдмрдирд╛рддреЗ рд╣реИрдВ, рдХрдИ рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдирд┐рдЧрд░рд╛рдиреА (рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдХрд░реЗрдВ рддрд╛рдХрд┐ рд╕рднреА рдЪреИрдирд▓ рд╣рд░ 5-10 рдорд┐рдирдЯ рдореЗрдВ рдЬрд╛рдВрдЪреЗ рдЬрд╛ рд╕рдХреЗрдВ)ред
рдпрд╣рд╛рдБ рдПрдХ рдЫреЛрдЯрд╛ рд╡реАрдбрд┐рдпреЛ рд╣реИ:
рдЦреИрд░, рдЬреИрд╕рд╛ рдХрд┐ рдкреНрд░рдерд╛рдЧрдд рд╣реИ, рдореБрдЦреНрдп рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЕрдиреБрдорд╛рдирд┐рдд рд▓рд╛рдЧрдд (рдореВрд▓ рд░реВрдк рд╕реЗ рд╕рдм рдХреБрдЫ рдИрдмреЗ / рдЪреАрдиреА рджреБрдХрд╛рдиреЛрдВ рдкрд░ рдЦрд░реАрджрд╛ рдЧрдпрд╛ рдерд╛):
рдмреНрд░реЗрдбрдмреЛрд░реНрдб рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдкреАрд╕реАрдмреА рдкреНрд░рд┐рдВрдЯ рд╕рд░реНрдХрд┐рдЯ рдмреЛрд░реНрдб 18 x 30 | ~ $ 4 |
160 рд╣рд░реЗ 3 рдорд┐рдореА рдПрд▓рдИрдбреА | $ 5 рд╕реЗ рдХрдо рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ |
Arduino | ~ $ 16 |
ENC28J60 рдИрдерд░рдиреЗрдЯ рд╢реАрд▓реНрдб Arduino Duemilanove / Uno рдХреЗ рд▓рд┐рдП | ~ $ 16 |
4 рд░рдЬрд┐рд╕реНрдЯрд░ 74HC595 | ~ $ 3 |
рдХреБрд▓ рдореЗрдВ | ~ $ 45-50 |