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

рдпрджрд┐ рдЖрдк рд╡реЗрдХреНрдЯрд░ рдбрд┐рд╕реНрдкреНрд▓реЗ рдмрдирд╛рдиреЗ рдпрд╛ рд╕реНрдХреНрд░реАрди рдкрд░ рдЖрд╕реНрдЯрд╕реАрд▓рд╕реНрдХрдк рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдмрд┐рд▓реНрд▓реА рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рдХрд░реЗрдВред
рд╕рдорд╛рдирд╛рдВрддрд░ DAC R-2R

рдЖрда-рдмрд┐рдЯ рдбреАрдПрд╕реА рдмрдирд╛рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐ рдЪреИрдирд▓ рдХреЗрд╡рд▓ 16 рдкреНрд░рддрд┐рд░реЛрдзреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдПрдХ рдкреНрд░рддрд┐рд╢рдд рд╕рд╣рд┐рд╖реНрдгреБрддрд╛ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд░реЛрдзреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди 5% рднреА рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдЖрдкрдХреЛ рдкреНрд░рддрд┐рд░реЛрдз рдЖрд░ рдХреЗ рд╕рд╛рде 7 рдкреНрд░рддрд┐рд░реЛрдзреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдкреНрд░рддрд┐рд░реЛрдз 2 рдХреЗ рд╕рд╛рде 9 * рдЖрд░ред
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, 0.5 рдФрд░ 1 k╬й рдкреНрд░рддрд┐рд░реЛрдзреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдХрдирд╡рд░реНрдЯрд░ рдХреЗ рдпреЛрдЬрдирд╛рдмрджреНрдз рдЖрд░реЗрдЦ:

рдЪреВрдВрдХрд┐ рд╣рдо рдЖрд╕реНрдЯрд╕реАрд▓рд╕реНрдХрдк рдХреЗ рджреЛ рдЪреИрдирд▓реЛрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд╣рдореЗрдВ рджреЛ рдбреАрдПрд╕реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдпрджрд┐ рдЖрдк рдЗрддрдиреЗ рднрд╛рдЧреЛрдВ рдореЗрдВ рдорд┐рд▓рд╛рдк рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк SIP рдкреИрдХреЗрдЬ рдореЗрдВ рд░реЗрд╕рд┐рд╕реНрдЯреЗрдВрдЯ рдЕрд╕реЗрдВрдмрд▓рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ 16 рдкрд┐рди DIP рдкреИрдХреЗрдЬ рдореЗрдВ MC1408 / 1508 (DAC рдХреЛ рдЧреБрдгрд╛ рдХрд░рдирд╛) рдЬреИрд╕реЗ рдХреБрдЫ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣ рдкреНрд░реЛрдЬреЗрдХреНрдЯ ATMEGA32U4 рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рдмреЛрд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЖрдк рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рджреЛ 8-рдкрд┐рди рдкреЛрд░реНрдЯ рд╣реИрдВ рддрд╛рдХрд┐ рдЖрдк рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдкрд┐рди рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрджрд▓ рд╕рдХреЗрдВред
рдореИрдВ рдкреЛрд░реНрдЯреНрд╕ рдкреЛрд░реНрдЯ рдФрд░ рдкреЛрд░реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред
рдЖрд╕реНрдЯрд╕реАрд▓рд╕реНрдХрдк рд╕реЗрдЯрдЕрдк

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

DAC рдХреЛ рд╕реАрдзреЗ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рдкреЛрд░реНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдХреЗ, рдкреЛрд░реНрдЯ рдХреЛ рдорд╛рди рд▓рд┐рдЦрдХрд░ рдПрдирд╛рд▓реЙрдЧ рд╡реЛрд▓реНрдЯреЗрдЬ рдХреЛ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 2-рд╡реЛрд▓реНрдЯ рд╕рд┐рдЧреНрдирд▓ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдорд╛рди 256 * 2.0V / 5.0V == 102 рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
DDRB = 0xFF; PORTB = 102;
рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рд╣рдо рд╡реЛрд▓реНрдЯреЗрдЬ рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореВрд▓реНрдп рдореЗрдВ рд░реБрдЪрд┐ рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВ, рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЖрдЙрдЯрдкреБрдЯ рд╡реЛрд▓реНрдЯреЗрдЬ 0x00 рдкрд░ 0 рд╡реЛрд▓реНрдЯ рд╕реЗ 0xFF рдкрд░ 5 рд╡реЛрд▓реНрдЯ рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИред
рдЖрд╕реНрдЯрд╕реАрд▓рд╕реНрдХрдк рдХреЛ 0-5 рд╡реЛрд▓реНрдЯ рдХреА рд╢реНрд░реЗрдгреА рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЕрдХреНрд╖ рдкрд░ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдкрд╣рд▓реА рдЪреАрдЬ рдЬреЛ рдЖрдкрдХреЛ рдХреЛрд╢рд┐рд╢ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рд╡рд╣ рдХреНрд╖реИрддрд┐рдЬ рдФрд░ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рд░реЗрдЦрд╛рдПрдВ рдЦреАрдВрдЪрддреА рд╣реИ, рдпрд╣ рдЫреЛрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдПрдХ рдЪрд░ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд░рд╣рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдХреНрд╖реИрддрд┐рдЬ рд░реЗрдЦрд╛ рдЦреАрдВрдЪрддреЗ рд╕рдордп, Y рдХрд╛ рдорд╛рди рд╕реНрдерд┐рд░ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рд╣реЛрддрд╛ рд╣реИред
void line_vert( uint8_t x0, uint8_t y0, uint8_t w ) { PORTB = x0; PORTD = y0; for (uint8_t i = 0 ; i < w ; i++) PORTD++; } void line_horiz( uint8_t x0, uint8_t y0, uint8_t h ) { PORTB = x0; PORTD = y0; for (uint8_t i = 0 ; i < h ; i++) PORTB++; }
рдПрдХ рд╡рд░реНрдЧ рдбреНрд░рд╛рдЗрдВрдЧ рдХреЗ рд▓рд┐рдП рдХреЛрдб, рдкрд┐рдЫрд▓реЗ рдЖрдВрдХрдбрд╝реЗ рдХреА рддрд░рд╣ред
line_vert(64, 64, 128); line_vert(196, 64, 128); line_horiz(64, 64, 128); line_horiz(64, 196, 128);
рдЭреБрдХреА рд╣реБрдИ рд░реЗрдЦрд╛рдПрдБ

рдпрд╣ рдЫрд╡рд┐ рд╡реЗрдХреНрдЯрд░ рдбрд┐рд╕реНрдкреНрд▓реЗ рдХреА рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЛ рджрд┐рдЦрд╛рддреА рд╣реИ: рдПрдХ рдкрдВрдХреНрддрд┐ рдХреА рд╢реБрд░реБрдЖрдд рдФрд░ рдЕрдВрдд рдореЗрдВ рдЙрдЬреНрдЬреНрд╡рд▓ рдбреЙрдЯреНрд╕ред рдпрд╣ рдкреНрд░рднрд╛рд╡ рдЗрд╕рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рдмрд┐рдВрджреБ рдХреЗ luminescence рдХреА рддреАрд╡реНрд░рддрд╛ рдЙрд╕ рдмрд┐рдВрджреБ рдкрд░ рдмреАрдо рджреНрд╡рд╛рд░рд╛ рдмрд┐рддрд╛рдП рдЧрдП рд╕рдордп рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ, рдФрд░ рдЪреВрдВрдХрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдПрдХ рдирдИ рд▓рд╛рдЗрди рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдордп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдмреАрдо рдХреЛ рдПрдХ рд╕реНрдерд╛рди рдкрд░ рдереЛрдбрд╝реА рджреЗрд░ рд░рд╣рдиреЗ рдореЗрдВ рджреЗрд░реА рд╣реЛрддреА рд╣реИред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк 16-рдмрд┐рдЯ рдЕрдВрдХрдЧрдгрд┐рддреАрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдПрдирдУрдкреА рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рд╣рдореЗрд╢рд╛ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╣реЛред
рдпрд╣рд╛рдБ рдореБрдЭреЗ рд╕реНрдХреНрд░реАрди рдХреЗ рдмрд░реНрдирдЖрдЙрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд╣рдирд╛ рд╣реЛрдЧрд╛ред
рдпрджрд┐ рдорд╛рди рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдирд╣реАрдВ рдмрджрд▓рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕ рдЬрдЧрд╣ рдореЗрдВ рдлрд╛рд╕реНрдлреЛрд░рд╕ рдлреАрдХрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдПрдХ рдЕрд▓рдЧ рд░рдВрдЧ рдмрди рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рд▓рдЧрд╛рддрд╛рд░ рдПрдХ рд╣реА рдЫрд╡рд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╕реНрдХреНрд░реАрди рднреА рдХреНрд╖рддрд┐рдЧреНрд░рд╕реНрдд рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреА рдлрд░реНрдорд╡реЗрдпрд░ рдХреЗ рджреМрд░рд╛рди, рдкреЛрд░реНрдЯ рдЖрдорддреМрд░ рдкрд░ рдЬреЗрдб-рдореЛрдб рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╢реВрдиреНрдп рдХреЛ рдЖрд╕реНрдЯрд╕реАрд▓рд╕реНрдХрдк рдХреЗ рдЗрдирдкреБрдЯ рд╕реЗ рдЦрд┐рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╕реНрдХреНрд░реАрди рдХреЗ рдХреЛрдиреЗ рдореЗрдВ рдПрдХ рдЙрдЬреНрдЬреНрд╡рд▓ рд╕реНрдерд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рд╣реЛрддрд╛ рд╣реИред
рдЪрдордХрддреА рдХреЗ рджреМрд░рд╛рди, рдЪрдордХ рдХреЛ рдХрдо рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИредрддрд┐рд░рдЫреА рдпрд╛ рдХреНрд╖реИрддрд┐рдЬ рд░реЗрдЦрд╛рдПрдБ рдЦреАрдВрдЪрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддрд┐рд░рдЫреА рд░реЗрдЦрд╛рдПрдБ рдЦреАрдВрдЪрдирд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛрддрд╛ рд╣реИред
рдЖрджрд░реНрд╢ рд╡рд┐рдХрд▓реНрдк рд╕рд┐рдЧреНрдирд▓ рдХреЛ рд╕реБрдЪрд╛рд░реВ рд░реВрдк рд╕реЗ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдирд╛рд▓реЙрдЧ рд╕рд░реНрдХрд┐рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣
SC200 рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╣рдо рд▓рд╛рдЗрди рдореЗрдВ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреНрд░реЗрд╕реЗрдирд╣реИрдо рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЫрд╡рд┐ рдореЗрдВ рдЪрд░рдгреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рд╕рд╛рджрдЧреА рд╕реЗ рдЗрд╕рдХреА рднрд░рдкрд╛рдИ рд╣реЛрддреА рд╣реИред
void line( uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1 ) { int dx, dy, sx, sy; if (x0 < x1) { dx = x1 - x0; sx = 1; } else { dx = x0 - x1; sx = -1; } if (y0 < y1) { dy = y1 - y0; sy = 1; } else { dy = y0 - y1; sy = -1; } int err = dx - dy; while (1) { PORTB = x0; PORTD = y0; if (x0 == x1 && y0 == y1) break; int e2 = 2 * err; if (e2 > -dy) { err = err - dy; x0 += sx; } if (e2 < dx) { err = err + dx; y0 += sy; } } }
рдлреЛрдВрдЯ

рдЬрдм рд╣рдордиреЗ рд╕реАрдЦрд╛ рдХрд┐ рдХреИрд╕реЗ рд░реЗрдЦрд╛рдПрдБ рдЦреАрдВрдЪрдиреА рд╣реИрдВ, рддреЛ рдХреБрдЫ рднреА рд╣рдореЗрдВ рдкреНрд░рддреАрдХреЛрдВ рдХреЛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдирд╣реАрдВ рд░реЛрдХрддрд╛ рд╣реИред
рдПрдХ рдлрд╝реЙрдиреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ
рд╣рд░реНрд╖реЗ рдлрд╝реЙрдиреНрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред
рдЗрд╕рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдг рдореЗрдВ 32 рд╕реЗ рдХрдо рдЕрдВрдХ рд╣реЛрддреЗ рд╣реИрдВред рдЕрдВрдХ рдХреЗ рд╕рднреА рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкреНрд░рддреАрдХ рдХреЗ рдирд┐рдЪрд▓реЗ рдмрд╛рдПрдВ рдХреЛрдиреЗ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╕реНрдерд┐рдд рд╣реИрдВ рдФрд░ рдПрдХ рдореВрд▓реНрдп (-1, 1) рдорд┐рд▓рдиреЗ рддрдХ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЕрдЧрд▓реЗ рдмрд┐рдВрджреБ рдкрд░ рдХреВрджрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рдореЛрдЪреНрдЪ (0, 0) рдХреЗ рдорд╛рди рдХреЗ рд╕рд╛рде рдПрдХ рдмрд┐рдВрджреБ рдкрд░ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред
рдирдВрдмрд░ 1 рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдгред
typedef struct { int8_t x, y; } path_t; static const PROGMEM path_t digits[][32] = { [1] = { { 6,17}, { 8,18}, {11,21}, {11, 0}, }, };
рдХрднреА-рдХрднреА рдЫрд╡рд┐ рдореЗрдВ рдЖрдк рджреЛ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдмреАрдЪ рдХреА рд░реЗрдЦрд╛рдУрдВ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдбреАрдПрд╕реА рдкрд░ рд╡реЛрд▓реНрдЯреЗрдЬ рддреБрд░рдВрдд рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИред рдЗрд╕ рдЖрд╢рдп рдХреЛ рд╕рд╣реА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдЖрд╕реНрдЯрд╕реАрд▓рд╕реНрдХрдк рдХреЗ рдЪрдордХ рдЪреИрдирд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдореЗрд░реЗ рдЖрд╕реНрдЯрд╕реАрд▓рд╕реНрдХрдк рдореЗрдВ рдРрд╕рд╛ рдХреЛрдИ рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рд╣реИред
рдмрд┐рдЯрдореИрдк рдЫрд╡рд┐рдпрд╛рдВ

рдСрд╕рд┐рд▓реЛрд╕реНрдХреЛрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдмрд┐рдЯрдореИрдк рдЪрд┐рддреНрд░ рднреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
ImageMagick рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЫрд╡рд┐ рдХреЛ рдПрдХреНрд╕ рдмрд┐рдЯрдореИрдк рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХреНрд╕ рдмрд┐рдЯрдореИрдк рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд╛рда рдкреНрд░рд╛рд░реВрдк рд╣реИ, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реАрдзреЗ рд╕реНрд░реЛрдд рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
convert -resize 256x256 input.jpg image/image.xbm
рдирддреАрдЬрддрди, рдПрдХ рдореЛрдиреЛрдХреНрд░реЛрдореИрдЯрд┐рдХ рдЫрд╡рд┐ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ, рдЬреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдореЛрд░реА рдХреЗ 8 рдХрд┐рд▓реЛрдмрд╛рдЗрдЯ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓реЗрддреА рд╣реИред
рд╡реАрдбрд┐рдпреЛ
рдпрджрд┐ рд╡реАрдбрд┐рдпреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕реЗ
www.flickr.com/photos/osr/7925036218/in/set-72157631344809602 рдкрд░ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ
рднрд╡рд┐рд╖реНрдп рдХреА рдпреЛрдЬрдирд╛

рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдореИрдВ PDP-1 рдХреЗ рд╕рд╛рде рдЕрджреНрднреБрдд CRT рдЖрд╕реНрдЯрд╕реАрд▓рд╕реНрдХрдк рдФрд░ рдкреЛрд░реНрдЯ рд╕реНрдкреЗрд╕рд╡рд╛рд░ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВред