рдЧреЗрдорд┐рдВрдЧ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд▓рд┐рдП рд▓реЙрдЬрд┐рдХ рдЧреЗрдо рдмрдирд╛рдирд╛

рдирдорд╕реНрддреЗ

рдореИрдВ Gameduino 3 рдЧреЗрдорд┐рдВрдЧ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд╕рд╛рде рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдиреЗ рдХреА рдЕрдкрдиреА рдХрд╣рд╛рдиреА рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЗрд╕ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕рд░рд▓ рд▓реЙрдЬрд┐рдХ рдЧреЗрдо рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝реА рдмрд╛рдд рдХрд░рддрд╛ рд╣реВрдВ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ Arduino Uno рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

Gameduino 3 рдХреНрдпрд╛ рд╣реИ? Gameduino 3 рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░ рдмреЛрд░реНрдб рд╣реИ рдЬреЛ рдЖрдкрдХреЛ Arduino рдХреЛ рдЖрдзреБрдирд┐рдХ рд╣реИрдВрдбрд╣реЗрд▓реНрдб (рдЕрд░реНрде рдЖрдХрд╛рд░) рдЧреЗрдо рдХрдВрд╕реЛрд▓ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдореЗрд░реЗ рдЖрд╢реНрдЪрд░реНрдп рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рд╣рдм рдкрд░ рдЗрд╕ рдмреЛрд░реНрдб рдХреА рдХреЛрдИ рд╡рд┐рд╕реНрддреГрдд рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рдорд┐рд▓реАред рдореИрдВ рдЗрд╕ рдЕрдВрддрд░ рдХреЛ рднрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЦрд╛рд╕рдХрд░ рдмреЛрд░реНрдб рдХреЗ рдмрд╛рдж рд╕реЗ, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИред

рдереЛрдбрд╝рд╛ рд╕рд╛ рдЗрддрд┐рд╣рд╛рд╕


Gameduino рдирд╛рдордХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓реЗрдЦрдХ рдЬреЗрдореНрд╕ рдмреЛрдорди рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ 2011 рдореЗрдВ рдмреЛрд░реНрдб рдХрд╛ рдкрд╣рд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдпрд╛ рдерд╛ред рддрдм рдЗрд╕реЗ Arduino рдХреЗ рд▓рд┐рдП VGA рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдмреЛрд░реНрдб рдХреЛ рдЧреИрдореЗрдбреБрдЗрдиреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рдерд╛ рдФрд░ рдпрд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдмрд▓ рд▓реЙрдЬрд┐рдХ FPGAs рдХреЗ Xilinx рд╕рдВрдпрдореА -3 A рдкрд░рд┐рд╡рд╛рд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдерд╛ред рдмреЛрд░реНрдб рдкрд░ рд╡реАрдЬреАрдП рдореЙрдирд┐рдЯрд░ рдФрд░ рд╕реНрдЯреАрд░рд┐рдпреЛ рд╕реНрдкреАрдХрд░ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрдЯрд░реНрд╕ рд▓рдЧрд╛рдП рдЧрдП рдереЗред рдЫрд╡рд┐

Gameduino рд╕реБрд╡рд┐рдзрд╛рдПрдБ (1):
  • 400x300 рдкрд┐рдХреНрд╕реЗрд▓, 512 рд░рдВрдЧреЛрдВ рдХреЗ рд╕рдВрдХрд▓реНрдк рдХреЗ рд╕рд╛рде рд╡реАрдЬреАрдП рд╡реАрдбрд┐рдпреЛ рдЖрдЙрдЯрдкреБрдЯ;
  • рд╕рднреА рд░рдВрдЧ рд╕рд░рдЧрдо тАЛтАЛрдХреЛ 15-рдмрд┐рдЯ рд╕рдЯреАрдХрддрд╛ рдХреЗ рд╕рд╛рде FPGA рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ;

рдкреГрд╖реНрдарднреВрдорд┐ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕:

  • рдкреНрд░рддреАрдХрд╛рддреНрдордХ рдкреГрд╖реНрдарднреВрдорд┐ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХрд╛ рдХреНрд╖реЗрддреНрд░ 512x512 рдкрд┐рдХреНрд╕реЗрд▓;
  • 256 рд╡рд░реНрдг, рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ 4-рд░рдВрдЧ рдкреИрд▓реЗрдЯ рдХреЗ рд╕рд╛рде рдкреНрд░рддреНрдпреЗрдХ;
  • рдкрд┐рдХреНрд╕реЗрд▓ рдЪреМрд░рд╕рд╛рдИ рдХреЗ рд╕рд╛рде рдкрд╛рда рдХреЗ рддрд╛рд░ рд▓рдкреЗрдЯрдиреЗ рдХреЗ рдкреНрд░рднрд╛рд╡ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛;

рдЕрдЧреНрд░рднреВрдорд┐ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕:

  • рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХрд╛ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди 16x16 рдкрд┐рдХреНрд╕реЗрд▓ рд╣реИ;
  • рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдореЗрдВ 256-, 16- рдпрд╛ 4-рд░рдВрдЧ рдкреИрд▓реЗрдЯ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ;
  • 4-рд╡реЗ рд░реЛрдЯреЗрд╢рди рдФрд░ рдХреНрд╖реИрддрд┐рдЬ рд░реЛрдЯреЗрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди;
  • 96 рд╕реНрдкреНрд░рд╛рдЗрдЯреНрд╕ рдкреНрд░рддрд┐ рд░рд╛рд╕реНрдЯрд░ рд▓рд╛рдЗрди, 1536 рдмрдирд╛рд╡рдЯ рддрддреНрд╡ рдкреНрд░рддрд┐ рд░рд╛рд╕реНрдЯрд░ рд▓рд╛рдЗрди;
  • рд╕реНрдкреНрд░рд╛рдЗрдЯреНрд╕ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рдЪреМрд░рд╛рд╣реЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддрдВрддреНрд░;

рдСрдбрд┐рдпреЛ рдЖрдЙрдЯрдкреБрдЯ:

  • 12-рдмрд┐рдЯ рджреЛрд╣рд░реЗ рдЪреИрдирд▓ рдЖрд╡реГрддреНрддрд┐ рд╕рд┐рдВрдереЗрд╕рд╛рдЗрдЬрд╝рд░;
  • 10 - 8000 рд╣рд░реНрдЯреНрдЬ рдХреА рдЖрд╡реГрддреНрддрд┐ рд░реЗрдВрдЬ рдореЗрдВ 64-рдЖрд╡рд╛рдЬрд╝ рдкреЙрд▓реАрдлреЛрдиреАред

рдЫрд╡рд┐ 400x300 рдкрд┐рдХреНрд╕рд▓ рдХреЗ рдПрдХ рд╕рдВрдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдПрдХ рдорд╛рдирдХ рд╡реАрдЬреАрдП рдореЙрдирд┐рдЯрд░ рдХреА рд╕реНрдХреНрд░реАрди рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреА рд╣реИ,
800x600 рдкрд┐рдХреНрд╕рд▓ рдХреЗ рдПрдХ рд╕рдВрдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рдорд╛рдирдХ рд╡реАрдЬреАрдП рдореЙрдирд┐рдЯрд░ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рдмрдирд╛рдП рд░рдЦреА рдЬрд╛рддреА рд╣реИред

2013 рдореЗрдВ, рдмреЛрд░реНрдб рдХрд╛ рджреВрд╕рд░рд╛ рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рдЧрд╛рдореЗрдбреБрдЗрдиреЛ 2, рдЬрд┐рд╕рдореЗрдВ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╡рд┐рдкрд░реАрдд, 480x272 рдХреЗ рд╕рдВрдХрд▓реНрдк рдХреЗ рд╕рд╛рде 4.3 рдЗрдВрдЪ рдХрд╛ рдкреНрд░рддрд┐рд░реЛрдзрдХ рдЯрдЪ рд╕реНрдХреНрд░реАрди, 3-рдПрдХреНрд╕рд┐рд╕ рдПрдХреНрд╕реЗрд▓реЗрд░реЛрдореАрдЯрд░, рдПрдХ рдорд╛рдЗрдХреНрд░реЛрдПрд╕рдбреА рдХрд╛рд░реНрдб рдХрд╛рд░реНрдб рд╕реНрд▓реЙрдЯ рдФрд░ рд╣реЗрдбрдлрд╝реЛрди рдХреЗ рд▓рд┐рдП рдПрдХ рдСрдбрд┐рдпреЛ рдЖрдЙрдЯрдкреБрдЯ рдерд╛ред

рдЫрд╡рд┐

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

FT800 рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЖрд░реЗрдЦ
рдЫрд╡рд┐

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдмреНрд▓реЙрдХреЛрдВ рдХреЛ рдорд╛рдЗрдХреНрд░реЛрдХрд┐рд░рд┐рдЯ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдЧреНрд░рд╛рдлрд┐рдХ рдирд┐рдпрдВрддреНрд░рдХ, рдСрдбрд┐рдпреЛ рдирд┐рдпрдВрддреНрд░рдХ, рдкреНрд░рддрд┐рд░реЛрдзрдХ рд╕реНрдкрд░реНрд╢ рдкреИрдирд▓ рдирд┐рдпрдВрддреНрд░рдХред FT800 рдЪрд┐рдк рдХреЛ 512 x 512 рдкрд┐рдХреНрд╕рд▓ рдХреЗ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рд╡рд╛рд▓реЗ рдбрд┐рд╕реНрдкреНрд▓реЗ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред FT800 рднреА рдПрд▓рд╕реАрдбреА WQVGA (480 x 272) рдФрд░ QVGA (320 x 240) рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред EVE (рдПрдВрдмреЗрдбреЗрдб рд╡реАрдбрд┐рдпреЛ рдЗрдВрдЬрди) FT800 рдПрдХ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдпреВрдЬрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯрд░реНрдирдХреА рд╕рдорд╛рдзрд╛рди рд╣реИред Microcircuit рдбрд┐рд╕реНрдкреНрд▓реЗ рдХрдВрдЯреНрд░реЛрд▓ рд╕рд┐рдЧреНрдирд▓ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдореЗрдВ рдбреЙрдЯреНрд╕, рд▓рд╛рдЗрдиреНрд╕, рдмрд┐рдЯрдореИрдк рдЗрдореЗрдЬ, рд╡реЙрд▓реНрдпреВрдореЗрдЯреНрд░рд┐рдХ рдмрдЯрди, рдЯреЗрдХреНрд╕реНрдЯ рдЖрджрд┐ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдЯ-рдЗрди рдЧреНрд░рд╛рдлрд┐рдХ рдлрд╝рдВрдХреНрд╢рдВрд╕ рд╣реЛрддреЗ рд╣реИрдВред


рд╕рд┐рд╕реНрдЯрдо рд╕рдВрд░рдЪрдирд╛ FT800 рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдирд┐рдпрдВрддреНрд░рдХ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ
рдЫрд╡рд┐ рдЧрдарди рдХрдорд╛рдВрдб (рдкреНрд░рджрд░реНрд╢рди рд╕реВрдЪреА) рдХреЗ рдПрдХ рд╕реЗрдЯ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЬреЛ I2C рдпрд╛ SPI рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (Gameduino 2 рдореЗрдВ, Arduino рдФрд░ FT800 рдХреЗ рдмреАрдЪ SPI рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдлрдЯреА 800 рдХреЛ рдирд┐рдпрдВрддреНрд░рдг рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред FT800 рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдореЗрдЬрдмрд╛рди рдирд┐рдпрдВрддреНрд░рдХ рд╕реЗ рдХрд╛рдлреА рд░рд╛рд╣рдд рдорд┐рд▓рддреА рд╣реИред

рдЫрд╡рд┐

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

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

рд░реВрд╕реА рдореЗрдВ, рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛, рд╕рд╛рдорд╛рдиреНрдп рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдФрд░ рдХрд╛рдо рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рд╡рд░рдг рдпрд╣рд╛рдВ рд╣реИ ред

Gameduino 2 рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ:
  • 24-рдмрд┐рдЯ рд░рдВрдЧ рдореЗрдВ 480x272 рдкрд┐рдХреНрд╕рд▓ рдХрд╛ рд╕реНрдХреНрд░реАрди рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди;
  • OpenGL рдХреА рд╢реИрд▓реА рдореЗрдВ рдХрдорд╛рдВрдб рдХрд╛ рдПрдХ рд╕реЗрдЯ;
  • рдХрд┐рд╕реА рднреА рдЖрдХрд╛рд░ рдХреЗ 2000 рд╕реНрдкреНрд░рд╛рдЗрдЯ рддрдХ;
  • рд╡реАрдбрд┐рдпреЛ рдореЗрдореЛрд░реА рдХреЗ 256 рдХреЗрдмреА;
  • рдЪрд┐рдХрдиреА рд╕реНрдкреНрд░рд╛рдЗрдЯ рд░реЛрдЯреЗрд╢рди рдФрд░ рдмрд┐рд▓рд┐рдирд┐рдпрд░ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╕реНрдХреЗрд▓рд┐рдВрдЧ;
  • рдЪрд┐рдХрдиреА рд╕рд░реНрдХрд▓ рдФрд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдореЗрдВ рд░реИрдЦрд┐рдХ рдкреИрдЯрд░реНрди - 16x рдЪреМрд░рд╕рд╛рдИ;
  • рдЬреЗрдкреАрдИрдЬреА рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдбрд┐рдХреЛрдбрд┐рдВрдЧ;
  • рдЕрдВрддрд░реНрдирд┐рд░реНрдорд┐рдд рд░реЗрдВрдбрд░рд░реНрд╕ рдХреЗ рдЧреНрд░реИрдбрд┐рдПрдВрдЯреНрд╕, рдЯреЗрдХреНрд╕реНрдЯ, рдбрд╛рдпрд▓ рдФрд░ рдмрдЯрдиред

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

рдирд┐рдпрдВрддреНрд░рдХ ROM рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд╛рдпрд░реНрдб рд╣реИ:

  • рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реЗ рдлреЛрдВрдЯ (6 рдЖрдХрд╛рд░);
  • рдорд┐рдбреА рдиреЛрдЯ рджреНрд╡рд╛рд░рд╛ рдЦреЗрд▓реЗ рдЧрдП 8 рд╕рдВрдЧреАрдд рд╡рд╛рджреНрдпрдпрдВрддреНрд░реЛрдВ рдХреЗ рдирдореВрдиреЗ;
  • 10 рдЯрдХреНрдХрд░ рдХреА рдЖрд╡рд╛рдЬрд╝ рдХреЗ рдирдореВрдиреЗред

рдФрд░, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдЖрдк рдЕрдкрдиреЗ рдЦреБрдж рдХреЗ рдлреЛрдВрдЯ рдФрд░ рдзреНрд╡рдирд┐ рдХрд╛рдЯрдиреЗ рдХреЛ 256 Kbytes RAM рдореЗрдВ рд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

Arduino рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдПрдХ рдкреВрд░реНрд╡рд╛рдкреЗрдХреНрд╖рд╛ рдирд╣реАрдВ рд╣реИ: Gameduino 2 рдмреЛрд░реНрдб SPI рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдпрд╛ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдмреЛрд░реНрдб рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

2017 рдореЗрдВ, рдмреЛрд░реНрдб рдХрд╛ рддреАрд╕рд░рд╛ рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рдЧреИрдореЗрдбреБрдЗрдиреЛ 3, рдЬреЛ рд▓рдЧрднрдЧ Gameduino рдХреЗ рд╕рдорд╛рди рджрд┐рдЦрддрд╛ рд╣реИред FT800 рдХреЗ рдмрдЬрд╛рдп, рдирдП FT810 рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдирд┐рдпрдВрддреНрд░рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ FT800 (рдпрд╛рдиреА Gameduino2 рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреЛрдб Gameduino3 рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ) рдХреЗ рд╕рд╛рде рдмреИрдХрд╡рд░реНрдб рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╕рдВрдЧрддрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЗрд╕рдореЗрдВ 4 рдЧреБрдирд╛ рдЕрдзрд┐рдХ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреНрд╖рдорддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рддреЗрдЬ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЬреЗрдкреАрдИрдЬреА рдбрд┐рдХреЛрдбрд┐рдВрдЧ, рд╡реАрдбрд┐рдпреЛ рдбрд┐рдХреЛрдбрд┐рдВрдЧ, 1 рдПрдордмреА рддрдХ рд░реИрдо, рдЖрджрд┐ред

Gameduino 3 рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ:
  • рдкреВрд░реНрдг рд╕реНрдХреНрд░реАрди 30 рдПрдлрдкреАрдПрд╕ рд╡реАрдбрд┐рдпреЛ рдХреЗ рд▓рд┐рдП рд╡реАрдбрд┐рдпреЛ рдбрд┐рдХреЛрдбрд░;
  • рдЖрдВрддрд░рд┐рдХ рд░реИрдо рдХрд╛ 1 рдореЗрдЧрд╛рдмрд╛рдЗрдЯ;
  • рдорд╛рдЗрдХреНрд░реЛрдПрд╕рдбреА-рдХрд╛рд░реНрдб рдФрд░ рдСрдбрд┐рдпреЛ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрдЯрд░;
  • 4.3 тАЭ480x272 рд╣рд╛рдИ-рдХрдВрдЯреНрд░рд╛рд╕реНрдЯ рдПрд▓рд╕реАрдбреА рдкреИрдирд▓ рд╡рд┐рде рд░реЗрд╕рд┐рд╕реНрдЯрд┐рд╡ рдЯрдЪ рд╕реНрдХреНрд░реАрди;
  • рдЯрд╛рдЗрд▓ рд╡рд╛рд▓реЗ рдорд╛рдирдЪрд┐рддреНрд░ рд╕рдВрдкрд╛рджрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдП рдЧрдП рдорд╛рдирдЪрд┐рддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди;
  • рдорд╛рдЗрдХреНрд░реЛрдПрд╕рдбреА рд╕реЗ рдкреАрдПрдирдЬреА рдЫрд╡рд┐ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ;
  • рддреНрд╡рд░рд┐рдд рдЬреЗрдкреАрдИрдЬреА рдбрд┐рдХреЛрдбрд┐рдВрдЧ;
  • рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкреЛрд░реНрдЯреНрд░реЗрдЯ / рд▓реИрдВрдбрд╕реНрдХреЗрдк рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ;
  • Arduino, ESP8266 рдФрд░ Teensy 3.2 рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди;
  • рдЧреНрд░рд╛рдлрд┐рдХреНрд╕, рдСрдбрд┐рдпреЛ, рдлрд╝реЙрдиреНрдЯ рдФрд░ рд╡реАрдбрд┐рдпреЛ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдСрдирд▓рд╛рдЗрди рдЙрдкрдХрд░рдг;


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

рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ


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

рдкрд╣рд▓реА рдЪреАрдЬрд╝ рдЬреЛ рдореБрдЭреЗ рдХрд░рдиреА рдереА рд╡рд╣ рдереА рд╕реНрдХреНрд░реАрди рдкрд░ рдЯреЗрдХреНрд╕реНрдЯ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ред

рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдлреЛрдВрдЯ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╕реНрдХреНрд░реАрди рдкрд░ рдкрд╛рда рдЖрдЙрдЯрдкреБрдЯ рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реИред рдпрд╣рд╛рдБ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ рдПрдХ рдбреЗрдореЛ рд╕реНрдХреЗрдЪ рд╣реИ (рдореЗрд░реА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде):

рд╕реНрдХреЗрдЪ helloworld.ino
#include <EEPROM.h> #include <SPI.h> #include <GD2.h> void setup() { Serial.begin(1000000); //   ,    1000000  GD.begin(0); //  ,   . } void loop() { GD.ClearColorRGB(0x103000); //    . GD.Clear(); //   (   ) GD.cmd_text( //  ,  GD.w / 2, //     2 GD.h / 2, //     2 31, //   OPT_CENTER, // ,         . "Hello world"); //   GD.swap(); //         (   ). } 
рдирддреАрдЬрддрди, рд╣рдо рдпрд╣рд╛рдБ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕реБрдВрджрд░ рдкрд╛рда рдорд┐рд▓рддрд╛ рд╣реИ:
рдЫрд╡рд┐

рдЕрдЧрд▓рд╛, рдЬреНрдпрд╛рдорд┐рддреАрдп рдЖрдХреГрддрд┐рдпреЛрдВ рдХреЛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: рд▓рд╛рдЗрдиреЗрдВред
рд░реЗрдЦрд╛рдПрдБ рдЦреАрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ Begin (LINES) рдпрд╛ Begin (LINE_STRIP) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рд▓рд╛рдЗрдиреЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЬреЛрдбрд╝реА рдХреЛ рдЬреЛрдбрд╝ рджреЗрддреА рд╣реИрдВ, рдЬрдмрдХрд┐ LINE_STRIP рд╕рднреА рдХреЛрдиреЗ рдПрдХ рд╕рд╛рде рдЬреБрдбрд╝рддрд╛ рд╣реИред

рдореИрдВ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдбреЗрдореЛ рд╕реНрдХреЗрдЪ рджреВрдВрдЧрд╛ (рдЕрдкрдиреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде):

рд╕реНрдХреЗрдЪ рд▓рд╛рдЗрдиреЗрдВ ..ino
 #include <EEPROM.h> #include <SPI.h> #include <GD2.h> void setup() { Serial.begin(1000000); //   ,    1000000 . GD.begin(); //  ,   . } static void zigzag(int x) { GD.Vertex2ii(x - 10, 10); //     GD.Vertex2ii(x + 10, 60); //     () GD.Vertex2ii(x - 10, 110); GD.Vertex2ii(x + 10, 160); GD.Vertex2ii(x - 10, 210); GD.Vertex2ii(x + 10, 260); //     () } void loop() { GD.Clear(); //   (    - 0000000) GD.Begin(LINES); //     zigzag(140); //   zigzag   -   GD.Begin(LINE_STRIP); //     zigzag(240); GD.LineWidth(16 * 10); //        1/16 , .. 1/16 * 16 * 10 = 10  GD.Begin(LINE_STRIP); zigzag(340); GD.swap(); //         (   ). } 

рд╕реНрдХреНрд░реАрди рдкрд░ рд▓рд╛рдЗрдиреЗрдВ:

рдЫрд╡рд┐

рд░реЗрдЦрд╛ рдЦреАрдВрдЪрдиреЗ рд╕реЗ, рдЖрдЗрдП рд░реЗрдЦрд╛рдУрдВ рдкрд░ рдЪрд┐рддреНрд░ рдмрдирд╛рддреЗ рд╣реИрдВред

рдЖрдпрддреЛрдВ рдХреЛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрд░рдВрдн (RECTS) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдЖрдпрдд рдХреЗ рд╡рд┐рдкрд░реАрдд рдХреЛрдиреЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░реЗрдВред рджреЛ рдХреЛрдгреЛрдВ рдХрд╛ рдХреНрд░рдо рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ред рдЖрдпрддрд╛рдХрд╛рд░ рдЧреЛрд▓ рдХреЛрдиреЛрдВ рдХреЗ рд╕рд╛рде рдЦреАрдВрдЪреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдХреЛрдиреЗ рдХреА рддреНрд░рд┐рдЬреНрдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрддрдорд╛рди рд░реЗрдЦрд╛ рдХреА рдЪреМрдбрд╝рд╛рдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЧреЛрд▓ рдХреЛрдиреЛрдВ рдХреЛ рдЖрдпрдд рдХреА рд╕реАрдорд╛рдУрдВ рд╕реЗ рдкрд░реЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЛрдг рдХреА рддреНрд░рд┐рдЬреНрдпрд╛ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд┐рдХреНрд╕рд▓ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реЛрддреА рд╣реИред рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдмрдврд╝рддреЗ рдХреЛрдиреЗ рдХреЗ рддреНрд░рд┐рдЬреНрдпрд╛ рдХреЗ рд╕рд╛рде рддреАрди рдмрд╛рд░ 420 ├Ч 20 рдЖрдпрдд рдЦреАрдВрдЪрддрд╛ рд╣реИред

рд╕реНрдХреЗрдЪ rectangles.ino
 #include <EEPROM.h> #include <SPI.h> #include <GD2.h> void setup() { Serial.begin(1000000); //   ,    1000000 . GD.begin(); //  ,   . } void loop() { GD.Clear(); //   (    - 0000000) GD.Begin(RECTS); //     GD.Vertex2ii(30, 30); //       GD.Vertex2ii(450, 50); //       GD.LineWidth(16 * 10); //         1/16 , .. 1/16 * 16 * 10 = 10  GD.Vertex2ii(30, 120); //       GD.Vertex2ii(450, 140); //       GD.LineWidth(16 * 20); //         1/16 , .. 1/16 * 16 * 20 = 20  GD.Vertex2ii(30, 220); //       GD.Vertex2ii(450, 230); //       GD.swap(); //         (   ) } 

рдкрд░рд┐рдгрд╛рдо:
рдЫрд╡рд┐

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

рдбреНрд░рд╛рдЗрдВрдЧ рд░рдВрдЧ рдХреЗ рдШреЗрд░реЗ рдХреЗ рд╕рд╛рде рд╕реНрдХреЗрдЪ
 #include <EEPROM.h> #include <SPI.h> #include <GD2.h> void setup() { Serial.begin(1000000); //   ,    1000000  GD.begin(0); //  ,   . } void loop() { GD.ClearColorRGB(0x103000); //    . GD.Clear(); //   (   ) GD.cmd_text( //  ,  GD.w / 2, //     2 GD.h / 2, //     2 31, //   OPT_CENTER, // ,          "Hello world"); //   GD.PointSize(16 * 30); //    ()    1/16 , .. 1/16 * 16 * 30 = 30  GD.Begin(POINTS); //     () GD.ColorRGB(0xff8000); //   orange GD.Vertex2ii(220, 100); //   ()   220,100 GD.ColorRGB(0x0080ff); //   teal GD.Vertex2ii(260, 170); //   ()   260,170 GD.swap(); //         (   ) } 

рдкрд░рд┐рдгрд╛рдо:



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

рдЯрдЪ рд╕реНрдХреНрд░реАрди рд╕реНрдХреЗрдЪ
 #include <EEPROM.h> #include <SPI.h> #include <GD2.h> void setup() { Serial.begin(1000000); //   ,    1000000  GD.begin(0); //  ,   . } void loop() { GD.ClearColorRGB(0x103000); //    . GD.Clear(); //   (   ) GD.cmd_text( //  ,  GD.w / 2, //     2 GD.h / 2, //     2 31, //   OPT_CENTER, // ,          "Hello world"); //   GD.PointSize(16 * 30); //    ()    1/16 , .. 1/16 * 16 * 30 = 30  GD.Begin(POINTS); //     () GD.ColorRGB(0xff8000); //   orange GD.Tag(100); //       () GD.Vertex2ii(220, 100); //   ()   220,100 GD.ColorRGB(0x0080ff); //   teal GD.Tag(101); //       () GD.Vertex2ii(260, 170); //   ()   260,170 GD.swap(); //         (   ) GD.get_inputs(); //     if(GD.inputs.tag > 0) //      Serial.println(GD.inputs.tag); //       тАЬтАЭ  } 

рдЕрдм, рдЬрдм рд╕рд┐рд╕реНрдЯрдо рдХрд┐рд╕реА рднреА рд╕рд░реНрдХрд▓ рдХреЛ рдЫреВрдиреЗ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рдЕрдкрдиреЗ рд╕реЗрдВрд╕рд░ рдХреЛрдб рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ 100 рдпрд╛ 101ред рдЬрдм рдЖрдк рд╕реАрд░рд┐рдпрд▓ рдкреЛрд░реНрдЯ рд╡рд┐рдВрдбреЛ рдореЗрдВ рд╕реНрдХреНрд░реАрди рдкрд░ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ (рд░рдВрдЧреАрди рд╕рд░реНрдХрд▓) рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рджрдмрд╛рдП рдЧрдП рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдЕрдиреБрд░реВрдк рдЯреИрдЧ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:



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

рдЦреЗрд▓ рдХрд╛ рдкрд╣рд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг:



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

рд╕реНрд▓реЙрдЯ рд╕реНрдХреЗрдЪ рд╕реНрд▓реЙрдЯgag.ino
 #include <EEPROM.h> #include <SPI.h> #include <GD2.h> #include "slotgag_assets.h" //      void setup() { Serial.begin(1000000); GD.begin(); LOAD_ASSETS(); //     } void loop() { GD.Clear(); //   ( ,     ) GD.ColorMask(1, 1, 1, 0); //        R, G, B,   GD.Begin(BITMAPS); //      GD.BitmapHandle(BACKGROUND_HANDLE); //   - GD.BitmapSize(NEAREST, REPEAT, REPEAT, 480, 272); //        GD.Vertex2ii(0, 0, BACKGROUND_HANDLE); //      0,0 GD.ColorMask(1, 1, 1, 1); GD.ColorRGB(0xa0a0a0); GD.Vertex2ii(240 - GAMEDUINO_WIDTH / 2, 136 - GAMEDUINO_HEIGHT / 2, GAMEDUINO_HANDLE); static int x = 0; GD.LineWidth(20 * 16); GD.BlendFunc(DST_ALPHA, ONE); GD.Begin(LINES); GD.Vertex2ii(x, 0); GD.Vertex2ii(x + 100, 272); x = (x + 20) % 480; //' }a GD.swap(); } 

рджреЗрдЦреЗрдВ:



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

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

рдирддреАрдЬрддрди, рдЦреЗрд▓ рдиреЗ рдЗрд╕ рдлреЙрд░реНрдо рдХрд╛ рдЕрдзрд┐рдЧреНрд░рд╣рдг рдХрд┐рдпрд╛:



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

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

рдореИрдВрдиреЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдзреНрд╡рдирд┐ рд╕рд┐рдВрдереЗрд╕рд╛рдЗрдЬрд╝рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рд╕рд┐рдВрдереЗрд╕рд╛рдЗрдЬрд╝рд░ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдХрдИ рдЫреЛрдЯреА "рдЯрдХреНрдХрд░" рдзреНрд╡рдирд┐рдпрд╛рдБ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдзреНрд╡рдирд┐ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдзреНрд╡рдирд┐ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде GD.play () рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЙрдкрд▓рдмреНрдз рдзреНрд╡рдирд┐рдпреЛрдВ рдХреА рдкреВрд░реА рд╕реВрдЪреА:

рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ
рд╕реНрд╡рд┐рдЪ
рдХрд╛рдКрдмреЗрд▓
рдкрд╛рдпрджрд╛рди
HIHAT
KICKDRUM
рдкреЙрдк
рдХрдбрд╝рдХ
chack

рдкрд░рд┐рдгрд╛рдо


рдкрд░рд┐рдгрд╛рдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдерд╛:

рд╕реНрдХреЗрдЪ Columns.ino
 #include <SPI.h> #include <GD2.h> #include <avr/eeprom.h> #include "slotgag_assets.h" #define TAG_BUTTON_LEFT 201 #define TAG_BUTTON_RIGHT 202 #define TAG_BUTTON_ROT 203 #define TAG_BUTTON_DROP 204 #define X_BUTTON_LEFT 50 #define Y_BUTTON_LEFT 222 #define X_BUTTON_RIGHT 430 #define Y_BUTTON_RIGHT 222 #define X_BUTTON_ROT 430 #define Y_BUTTON_ROT 50 #define X_BUTTON_DROP 50 #define Y_BUTTON_DROP 50 // Color definitions #define BLACK 0x000000 #define RED 0xFF0000 #define GREEN 0x00FF00 #define BLUE 0x0000FF #define YELLOW 0xFFFF00 #define MAGENTA 0xFF00FF #define CYAN 0x00FFFF #define WHITE 0xFFFFFF #define DISPLAY_MAX_X 480 #define DISPLAY_MAX_Y 272 #define MaxX 8 #define MaxY 17 #define SmeX 3 #define SmeY 3 #define razmer 18 #define NumCol 6 #define MaxLevel 8 #define NextLevel 80 #define DISP_LEFT ((DISPLAY_MAX_X - MaxX*razmer)/2 - 2) #define DISP_RIGHT ((DISPLAY_MAX_X + MaxX*razmer)/2 + 2) #define DISP_TOP ((DISPLAY_MAX_Y - (MaxY-4)*razmer)/2 - 2) #define DISP_BOT ((DISPLAY_MAX_Y + (MaxY-4)*razmer)/2 + 2) uint8_t MasSt[MaxX][MaxY], MasTmp[MaxX][MaxY], fignext[3]; uint8_t Level=1, dx, dy, tr, flfirst=1; uint32_t MasCol[]={WHITE, BLACK, RED, BLUE, GREEN, YELLOW, MAGENTA, CYAN}; unsigned long Counter, Score=0, TScore=0, Record=0, myrecord; uint16_t tempspeed = 1000; bool fl, Demo=true, Arbeiten=false, FlZ=false; int8_t x,y; int8_t mmm [4][2]={{-1,0},{0,-1},{1,0},{0,1}}; uint16_t MasSpeed[MaxLevel]={500,450,400,350,300,250,200,100}; uint8_t state_game = 0; unsigned long time_count; byte prevkey; uint32_t btn_color = 0xff0000; /****************************************************************************************************************/ void setup(void) { Serial.begin(1000000); Serial.println("Columns"); GD.begin(); LOAD_ASSETS(); GD.BitmapHandle(BACKGROUND_HANDLE); GD.BitmapSize(NEAREST, REPEAT, REPEAT, 480, 272); randomSeed(analogRead(5)); myrecord = eeprom_read_byte((unsigned char *)1); time_count = millis() + 1000; } static struct { byte t, note; } pacman[] = { { 0, 71 }, { 2, 83 }, { 4, 78 }, { 6, 75 }, { 8, 83 }, { 9, 78 }, { 12, 75 }, { 16, 72 }, { 18, 84 }, { 20, 79 }, { 22, 76 }, { 24, 84 }, { 25, 79 }, { 28, 76 }, { 32, 71 }, { 34, 83 }, { 36, 78 }, { 38, 75 }, { 40, 83 }, { 41, 78 }, { 44, 75 }, { 48, 75 }, { 49, 76 }, { 50, 77 }, { 52, 77 }, { 53, 78 }, { 54, 79 }, { 56, 79 }, { 57, 80 }, { 58, 81 }, { 60, 83 }, { 255, 255 } }; //================================================== void loop(void) { GD.get_inputs(); byte key = GD.inputs.tag; int8_t VAL = 0; if (prevkey == 0x00) { switch (key) { case TAG_BUTTON_LEFT: VAL = -1; break; case TAG_BUTTON_RIGHT: VAL = 1; break; case TAG_BUTTON_ROT: if (!FlZ) { GD.play(HIHAT); byte aa=MasSt[x][y]; MasSt[x][y]=MasSt[x][y+2]; MasSt[x][y+2]=MasSt[x][y+1]; MasSt[x][y+1]=aa; } break; case TAG_BUTTON_DROP: if (Arbeiten) { if (!FlZ) { tempspeed=50; GD.play(NOTCH); } } else { GD.play(CLICK); Demo=false; NewGame(); } break; } } prevkey = key; if (VAL!=0 && fig_shift(VAL) && !FlZ) { for (byte i=0;i<3;i++) { MasSt[x+VAL][y+i]=MasSt[x][y+i]; MasSt[x][y+i]=0; } x=x+VAL; } ProcGame(); ViewStacan(); GD.swap(); } //================================================== // redraw one square void ViewQuad(byte i,byte j,byte mycolor) { if (j<3) return; uint16_t wy=DISP_TOP + SmeY+(j-3)*razmer-j; uint16_t wx=DISP_LEFT + SmeX+i*razmer-i; if (mycolor!=0) { GD.LineWidth(16*1); GD.ColorRGB(WHITE); GD.Begin(LINE_STRIP); GD.Vertex2ii(wx,wy); GD.Vertex2ii(wx + razmer-1,wy); GD.Vertex2ii(wx + razmer-1,wy + razmer-1); GD.Vertex2ii(wx,wy + razmer-1); GD.Vertex2ii(wx,wy); GD.Begin(RECTS); GD.ColorRGB(MasCol[mycolor]); GD.Vertex2ii(wx+1, wy+1); GD.Vertex2ii(wx+1 + razmer-2 - 1, wy+1 + razmer-2 - 1); } else { } } //================================================== void ViewStacan(void) { char myStr2[5]; // Draw background fone GD.Clear(); GD.ColorMask(1, 1, 1, 0); GD.Begin(BITMAPS); GD.BitmapHandle(BACKGROUND_HANDLE); GD.BitmapSize(NEAREST, REPEAT, REPEAT, 480, 272); GD.Vertex2ii(0, 0, BACKGROUND_HANDLE); // Print text GD.ColorRGB(WHITE); GD.cmd_text(DISP_LEFT - 30, DISP_TOP + 3, 27, OPT_CENTER, "LEVEL"); GD.cmd_text(DISP_RIGHT + 30, DISP_TOP + 3, 27, OPT_CENTER, "NEXT"); GD.cmd_text(DISP_RIGHT + 30, DISP_TOP + 100, 27, OPT_CENTER, "SCORE"); GD.cmd_text(DISP_LEFT - 30, DISP_TOP + 100, 27, OPT_CENTER, "TOP"); // Print digit Score GD.ColorRGB(RED); sprintf(myStr2,"%05d",Score ); GD.cmd_text(DISP_RIGHT + 30, DISP_TOP + 130, 27, OPT_CENTER, myStr2); // Print digit Top sprintf(myStr2,"%05d",myrecord ); GD.cmd_text(DISP_LEFT - 30, DISP_TOP + 130, 27, OPT_CENTER, myStr2); // Print digit Level sprintf(myStr2,"%02d",Level ); GD.cmd_text(DISP_LEFT - 30, DISP_TOP + 40, 31, OPT_CENTER, myStr2); // Draw color squares for (byte j=3;j<MaxY;j++) for (byte i=0;i<MaxX;i++) ViewQuad(i,j,MasSt[i][j]); // Draw Next Figure for (byte i=0;i<3;i++) { GD.ColorRGB(WHITE); GD.Begin(LINE_STRIP); GD.LineWidth(16*1); GD.Vertex2ii(DISP_RIGHT + 15, DISP_TOP + 20 + razmer*ii); GD.Vertex2ii(DISP_RIGHT + 15 + razmer-1, DISP_TOP + 20 + razmer*ii); GD.Vertex2ii(DISP_RIGHT + 15 + razmer-1, DISP_TOP + 20 + razmer*ii + razmer-1); GD.Vertex2ii(DISP_RIGHT + 15, DISP_TOP + 20 + razmer*ii + razmer-1); GD.Vertex2ii(DISP_RIGHT + 15, DISP_TOP + 20 + razmer*ii); GD.Begin(RECTS); GD.ColorRGB(MasCol[fignext[i]]); GD.Vertex2ii(DISP_RIGHT+15+1, DISP_TOP+20+razmer*i-i+1); GD.Vertex2ii(DISP_RIGHT+15+1+razmer-2-1, DISP_TOP+20+razmer*i-i+1+razmer-2-1); } // Draw "stacan" GD.ColorRGB(WHITE); GD.Begin(LINE_STRIP); GD.LineWidth(16*1); GD.Vertex2ii(DISP_LEFT + 1, DISP_TOP); GD.Vertex2ii(DISP_LEFT + 1, DISP_BOT); GD.Vertex2ii(DISP_LEFT + 1 + razmer*MaxX+5-MaxX - 1, DISP_BOT); GD.Vertex2ii(DISP_LEFT + 1 + razmer*MaxX+5-MaxX - 1, DISP_TOP); // Draw 9 vertical lines for (byte i=0; i<9; i++) { GD.ColorRGB(WHITE); GD.Begin(LINE_STRIP); GD.LineWidth(16*1); GD.Vertex2ii(DISP_LEFT + 3 + razmer*ii, DISP_TOP); GD.Vertex2ii(DISP_LEFT + 3 + razmer*ii, DISP_BOT - 2); } // Draw 1 horizontal line GD.ColorRGB(WHITE); GD.Begin(LINE_STRIP); GD.Vertex2ii(DISP_LEFT + 3, DISP_BOT - 2); GD.Vertex2ii(DISP_LEFT + 3 + razmer*MaxX-MaxX - 1, DISP_BOT - 2); // Draw "Game Over" if (!Demo && !Arbeiten) { GD.Begin(RECTS); GD.ColorRGB(WHITE); GD.Vertex2ii((DISP_LEFT + DISP_RIGHT)/2 - 60, (DISP_TOP + DISP_BOT)/2 - 40); GD.Vertex2ii((DISP_LEFT + DISP_RIGHT)/2 + 60, (DISP_TOP + DISP_BOT)/2 + 40); GD.ColorRGB(BLACK); GD.Vertex2ii((DISP_LEFT + DISP_RIGHT)/2 - 58, (DISP_TOP + DISP_BOT)/2 - 38); GD.Vertex2ii((DISP_LEFT + DISP_RIGHT)/2 + 58, (DISP_TOP + DISP_BOT)/2 + 38); GD.ColorRGB(RED); GD.cmd_text((DISP_LEFT + DISP_RIGHT)/2, (DISP_TOP + DISP_BOT)/2 - 20, 30, OPT_CENTER, "GAME"); GD.cmd_text((DISP_LEFT + DISP_RIGHT)/2, (DISP_TOP + DISP_BOT)/2 + 20, 30, OPT_CENTER, "OVER"); } // Draw Buttons GD.Begin(POINTS); GD.PointSize(16*50); // Set size of buttons (50 pix) GD.ColorRGB(btn_color); // Set fone color of buttons GD.Tag(TAG_BUTTON_LEFT); // Set TAG for BUTTON_LEFT GD.Vertex2ii( X_BUTTON_LEFT, Y_BUTTON_LEFT); // Place BUTTON1 GD.Tag(TAG_BUTTON_RIGHT); // Set TAG for BUTTON_RIGHT GD.Vertex2ii(X_BUTTON_RIGHT, Y_BUTTON_RIGHT); // Place BUTTON2 GD.Tag(TAG_BUTTON_ROT); // Set TAG for BUTTON_ROT GD.Vertex2ii( X_BUTTON_ROT, Y_BUTTON_ROT); // Place BUTTON3 GD.Tag(TAG_BUTTON_DROP); // Set TAG for BUTTON_DROP GD.Vertex2ii(X_BUTTON_DROP, Y_BUTTON_DROP); // Place BUTTON4 // Draw figures in buttons circles GD.Tag(255); GD.ColorRGB(0xffff00); GD.LineWidth(16*2); GD.Begin(LINE_STRIP); GD.Vertex2ii(X_BUTTON_LEFT + 30, Y_BUTTON_LEFT - 20); GD.Vertex2ii(X_BUTTON_LEFT, Y_BUTTON_LEFT - 20); GD.Vertex2ii(X_BUTTON_LEFT, Y_BUTTON_LEFT - 40); GD.Vertex2ii(X_BUTTON_LEFT - 40, Y_BUTTON_LEFT); GD.Vertex2ii(X_BUTTON_LEFT, Y_BUTTON_LEFT + 40); GD.Vertex2ii(X_BUTTON_LEFT, Y_BUTTON_LEFT + 20); GD.Vertex2ii(X_BUTTON_LEFT + 30, Y_BUTTON_LEFT + 20); GD.Vertex2ii(X_BUTTON_LEFT + 30, Y_BUTTON_LEFT - 20); GD.Begin(LINE_STRIP); GD.Vertex2ii(X_BUTTON_RIGHT - 30, Y_BUTTON_RIGHT - 20); GD.Vertex2ii(X_BUTTON_RIGHT, Y_BUTTON_RIGHT - 20); GD.Vertex2ii(X_BUTTON_RIGHT, Y_BUTTON_RIGHT - 40); GD.Vertex2ii(X_BUTTON_RIGHT + 40, Y_BUTTON_RIGHT); GD.Vertex2ii(X_BUTTON_RIGHT, Y_BUTTON_RIGHT + 40); GD.Vertex2ii(X_BUTTON_RIGHT, Y_BUTTON_RIGHT + 20); GD.Vertex2ii(X_BUTTON_RIGHT - 30, Y_BUTTON_RIGHT + 20); GD.Vertex2ii(X_BUTTON_RIGHT - 30, Y_BUTTON_RIGHT - 20); GD.Begin(LINE_STRIP); GD.Vertex2ii(X_BUTTON_ROT - 40, Y_BUTTON_ROT); GD.Vertex2ii(X_BUTTON_ROT, Y_BUTTON_ROT - 40); GD.Vertex2ii(X_BUTTON_ROT + 40, Y_BUTTON_ROT); GD.Vertex2ii(X_BUTTON_ROT, Y_BUTTON_ROT + 40); GD.Vertex2ii(X_BUTTON_ROT - 40, Y_BUTTON_ROT); GD.Begin(LINE_STRIP); if (Arbeiten) { GD.Vertex2ii(X_BUTTON_DROP - 40, Y_BUTTON_DROP - 10); GD.Vertex2ii(X_BUTTON_DROP + 40, Y_BUTTON_DROP - 10); GD.Vertex2ii(X_BUTTON_DROP, Y_BUTTON_DROP + 30); GD.Vertex2ii(X_BUTTON_DROP - 40, Y_BUTTON_DROP - 10); } else { GD.Vertex2ii(X_BUTTON_DROP - 10, Y_BUTTON_DROP - 40); GD.Vertex2ii(X_BUTTON_DROP + 30, Y_BUTTON_DROP); GD.Vertex2ii(X_BUTTON_DROP - 10, Y_BUTTON_DROP + 40); GD.Vertex2ii(X_BUTTON_DROP - 10, Y_BUTTON_DROP - 40); } } //================================================== void ClearMas(byte MasStx[MaxX][MaxY]) { for (byte j=0;j<MaxY;j++) for (byte i=0;i<MaxX;i++) MasStx[i][j]=0; } //================================================== void Sosed(int i,int j,int dx,int dy, byte mode) { int nx=i+dx; int ny=j+dy; if (nx>=0 && ny>=0 && nx<MaxX && ny<MaxY && MasSt[nx][ny]==MasSt[i][j]) { if (mode==1) MasTmp[i][j]++; else if (mode==2 && (MasTmp[nx][ny]>1 || MasTmp[i][j]>2 )) { MasTmp[nx][ny]=3; MasTmp[i][j]=3; } else { if (mode==3 && MasTmp[nx][ny]==3) { if (MasTmp[i][j]!=3) { MasTmp[i][j]=3; fl=true; } } } } } //================================================== void Sos(int i,int j, byte mode) { for (byte k=0;k<4;k++) Sosed(i,j,mmm[k][0],mmm[k][1],mode); } //================================================== // create next figure void GetNext(void) { x=3; y=0; for (byte i=0;i<3;i++) { if (!Demo) MasSt[x][i]=fignext[i]; fignext[i]=random(NumCol)+2; } if (!Demo) { Counter++; if (Counter==NextLevel) { Counter=0; Level++; if (Level>MaxLevel) Level=MaxLevel; } tempspeed=MasSpeed[Level-1]; } } //================================================== // find onecolor elements bool FindFull(void) { byte i,j,k; bool res; res=false; for (byte k=2;k<8;k++) { // by every color ClearMas(MasTmp); for (j=3;j<MaxY;j++) for (i=0;i<MaxX;i++) if (MasSt[i][j]==k) Sos(i,j,1); for (j=3;j<MaxY;j++) for (i=0;i<MaxX;i++) if (MasTmp[i][j]>1) Sos(i,j,2); do { fl=false; for (j=3;j<MaxY;j++) for (i=0;i<MaxX;i++) if (MasTmp[i][j]>0) Sos(i,j,3); } while (fl); for (j=3;j<MaxY;j++) for (i=0;i<MaxX;i++) if (MasTmp[i][j]==3) { MasSt[i][j]=1; TScore++; } } return(res); } //================================================ // move figure down bool fig_drop(int dy) { if (dy>0 && !FlZ) { if (y+dy+2>MaxY-1 || MasSt[x+dx][y+dy+2]>0) { if (y<3) { gameover(); } else { return true; } } else { if (y+dy+dy+2>MaxY-1 || MasSt[x+dx][y+dy+dy+2]>0) { GD.play(COWBELL); } for (byte i=0;i<3;i++) MasSt[x][y+2-i+dy]=MasSt[x][y+2-i]; MasSt[x][y]=0; y=y+dy; } } return(false); } //================================================ // move figure left/right (shift) bool fig_shift(int dx) { if (x+dx<0 || x+dx>MaxX-1) { GD.play(COWBELL); return(false); } if (dx!=0) { if (MasSt[x+dx][y+dy+2]==0) { if (x+dx+dx<0 || x+dx+dx>MaxX-1) GD.play(COWBELL); else GD.play(CHACK); return(true); } else { GD.play(COWBELL); return(false); } } return(false); } //================================================== // State-machine void ProcGame(void) { byte i,j,k; bool res = false; if (time_count < millis()) { if (Arbeiten) time_count = millis() + tempspeed; else time_count = millis() + 1000; switch (state_game) { // Demo case 0: Score=0; GetNext(); for (byte j=3;j<MaxY;j++) for (byte i=0;i<MaxX;i++) MasSt[i][j]=random(6)+2; state_game = 1; TScore=0; break; case 1: FindFull(); if (TScore>0) { FlZ=true; time_count = millis() + 500; } state_game = 2; break; case 2: for (j=0;j<MaxY;j++) { for (i=0;i<MaxX;i++) { while (MasSt[i][MaxY-1-j]==1) { for (k=0;k<MaxY-2-j;k++) MasSt[i][MaxY-1-kj] = MasSt[i][MaxY-2-kj]; res=true; } } } if(res) { if (TScore>7) Score=Score+TScore+(TScore-8)*2; else Score=Score+TScore; state_game = 1; } else { state_game = 0; } break; // Arbeiten case 3: if (fig_drop(1)) { tempspeed=MasSpeed[Level-1]; TScore=0; FindFull(); if (TScore>0) { GD.play(KICKDRUM); FlZ=true; state_game = 4; } else { FlZ=false; GetNext(); } } break; case 4: for (j=0;j<MaxY;j++) { for (i=0;i<MaxX;i++) { while (MasSt[i][MaxY-1-j]==1) { for (k=0;k<MaxY-2-j;k++) MasSt[i][MaxY-1-kj] = MasSt[i][MaxY-2-kj]; res=true; } } } if(res) { if (TScore>7) Score=Score+TScore+(TScore-8)*2; else Score=Score+TScore; state_game = 5; FlZ=true; GD.play(CLACK); } else { state_game = 3; FlZ=false; time_count = millis() + 100; } break; case 5: state_game = 3; FlZ=false; break; default: break; } } } //================================================ // start new game void NewGame() { Score = 0; FlZ = false; ClearMas(MasSt); Arbeiten = true; GetNext(); Counter = 0; Level = 1; tempspeed = MasSpeed[0]; Record = myrecord; state_game = 3; } //================================================ // draw "GAME OVER" void gameover() { if (Arbeiten==true) { GD.play(SWITCH); Arbeiten=false; if (Score>myrecord) { myrecord=Score; eeprom_write_byte((unsigned char *) 1, myrecord); } } } 
slotgag_assets.h
 #define LOAD_ASSETS() GD.safeload("slotgag.gd2"); #define BACKGROUND_HANDLE 0 #define BACKGROUND_WIDTH 256 #define BACKGROUND_HEIGHT 256 #define BACKGROUND_CELLS 1 #define GAMEDUINO_HANDLE 1 #define GAMEDUINO_WIDTH 395 #define GAMEDUINO_HEIGHT 113 #define GAMEDUINO_CELLS 1 #define ASSETS_END 220342UL static const shape_t BACKGROUND_SHAPE = {0, 256, 256, 0}; static const shape_t GAMEDUINO_SHAPE = {1, 395, 113, 0}; 

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

рдмреЛрд░реНрдб рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдзреНрд╡рдирд┐ рдХреЗ рд╕рд╛рде рдПрдХ рд╡реАрдбрд┐рдпреЛ рдкреЛрд╕реНрдЯ рдХрд░рддрд╛ рд╣реВрдВ (рд╕рд╛рд╡рдзрд╛рдиреА! рдЬреЛрд░ рд╕реЗ рдЖрд╡рд╛рдЬ!)ред
рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

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


All Articles