рдирдорд╕реНрдХрд╛рд░, Habrauser! рдореЗрд░реЗ рдХрд╛рдо рдореЗрдВ рдПрдХ рд╕реНрдерд┐рддрд┐ рдереА рдХрд┐ рдЖрдИрдУрдПрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рдбрд┐рдЬрд╛рдЗрди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛, рдЬреЛ рдмреНрд▓реВрдЯреВрде рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдИрдкреИрдб рдХреЛ рдбреЗрдЯрд╛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░реЗрдЧрд╛ред рдпрджрд┐ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпрд╣ рдПрдХ рдРрд╕рд╛ рдЙрдкрдХрд░рдг рд╣реИ рдЬрд┐рд╕реЗ рд╕рд┐рдЧрд░реЗрдЯ рдХреЗ рдПрдХ рдирд┐рдпрдорд┐рдд рдкреИрдХ рдореЗрдВ рдЫрд┐рдкрд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдбреЗрдЯрд╛ рдХреЛ рдЖрдИрдкреАрдПрдб рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕ рдкрд░ рдХрд┐рдирд╛рд░реЗ рдирд┐рд╣рд┐рдд рд╣реИрдВред рдореИрдВрдиреЗ рдмреНрд▓реВрдЯреВрде рдбрд┐рд╡рд╛рдЗрд╕ рдФрд░ рдЖрдИрдкреИрдб рдХреА рдмрд╛рддрдЪреАрдд рдХреЗ рд▓рд┐рдП рдРрдкреНрдкрд▓ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЧреЗрдордХреАрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛ рдЬреЛ рдХрд┐ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рдерд╛) рдпрд╛ рдРрдкреНрдкрд▓ рдПрдордПрдлрдЖрдИ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд▓реНрдк рдХреА рдкреЗрд╢рдХрд╢ рдХреА рдЧрдИ (рдЬрд┐рд╕рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкреНрд░рддрд┐рдмрдВрдз рд╣реИрдВ рдФрд░ рдЖрдкрдиреЗ рдЗрд╕реЗ рджрд░реНрдЬ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ)ред рд╡реЗ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдиреЗ рд▓рдЧреЗ, рдФрд░ рдлрд┐рд░ рдПрдХ рдЖрджрдореА рдореЗрд░реА рдУрд░ рдмрдврд╝рд╛, рдЬреЛ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХреНрд╕ рдХрд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рджреЛрд╕реНрдд рдерд╛ред
рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рд╡рд┐рдХрд╛рд╕ рдХреА рдпреЛрдЬрдирд╛ рдЕрд░реНрдбреБрдЗрдиреЛ рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ рдереА, рд▓реЗрдХрд┐рди рдПрдХ рдЬрд╛рдирдХрд╛рд░ рдиреЗ рдЙрдЪреНрдЪ рд╡рд┐рддреНрддреАрдп рд▓рд╛рдЧрддреЛрдВ (рд▓рдЧрднрдЧ 1000 рдЯреБрдХрдбрд╝реЛрдВ рдХреА рдмрд╣реБрдд рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА) рдХреЗ рдХрд╛рд░рдг рдЗрд╕ рдЙрджреНрдпрдо рд╕реЗ рд╡рд┐рдореБрдЦ рд╣реЛ рдЧрдпрд╛ред рдФрд░ рд╣рдордиреЗ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдкрд╛рдпрд╛ - рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рд╕реНрд╡рдпрдВ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдЪреВрдВрдХрд┐ рдореИрдВ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХреНрд╕ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рдмрддрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдХрд┐рди рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
- MMA7260QT рд╕реНрдерд┐рддрд┐ рд╕реЗрдВрд╕рд░
- ATmega16U4-AU рдирд┐рдпрдВрддреНрд░рдХ
- рдмреНрд▓реВрдЯреВрде рдмреНрд▓реВрдЧрд┐рдЧрд╛
рдирддреАрдЬрддрди, рд╣рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдПрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдорд┐рд▓рд╛:

рдиреАрдЪреЗ рдХрд╛ рджреГрд╢реНрдп:

рдбрд┐рд╡рд╛рдЗрд╕ рдиреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдкрдиреА рд╕реНрдерд┐рддрд┐ рдмрддрд╛рдИ, рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рд╡рд╛рд▓ рдпрд╣ рдЖрдпрд╛ рдХрд┐: рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ iPad рдореЗрдВ рдХреИрд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП?
рд╕рдорд╛рдзрд╛рди рдмрд╣реБрдд рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд░реВрдк рд╕реЗ рдЖрдпрд╛ - рдПрд╕рдПрд╕рдкреА рдореЗрдВ рдРрд╕реА рдПрдХ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд╣реИ - "рдмрд╕ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ", рдЬрдм рдХреЛрдб рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рд╣реЛрддрд╛ рд╣реИ,
рд▓реЗрдХрд┐рди рд╕рдВрдХреЗрдд рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рднрд╛рдЧреАрджрд╛рд░реА рдХреЗ рдмрд┐рдирд╛ред рдФрд░ рд╣рдордиреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдПрдХ рдирд┐рдпрдорд┐рдд рдмреНрд▓реВрдЯреВрде рдХреАрдмреЛрд░реНрдб рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд┐рдпрд╛ред рд╣рдордиреЗ рдЗрд╕ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛, рдФрд░ рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╣реБрдЖ (рдореИрдВ рд╡реАрдбрд┐рдпреЛ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рд▓рд┐рдП рдорд╛рдлреА рдорд╛рдБрдЧрддрд╛ рд╣реВрдБ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рд╛рд░ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдЧрд╛):
рдбрд┐рд╡рд╛рдЗрд╕ рд╕реНрдерд╛рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 10 рдмрд╛рд░ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкрддреНрд░ рдкрд╣реБрдВрдЪрд╛рддрд╛ рд╣реИ, рдФрд░ рд╕реНрдерд┐рддрд┐ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рд╛рде рдпрд╣ 0 рд╕реЗ 9 рддрдХ рдПрдХ рдЕрдВрдХ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдмреИрдЯрд░реА рдЪрд╛рд░реНрдЬ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред
рдареАрдХ рд╣реИ, iPad рдкрд░, рдХреАрдмреЛрд░реНрдб рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рдерд╛ред рдореИрдВрдиреЗ рдПрдХ рдЫрд┐рдкрд╛ рд╣реБрдЖ UITextField рдмрдирд╛рдпрд╛, рдФрд░ рдмрд╕ рдЗрд╕рдореЗрдВ "рджрдмрд╛рдП рдЧрдП" рдХреБрдВрдЬреА рдХреЛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд┐рдпрд╛ред рдпрд╣рд╛рдБ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдкрд░ рдПрдХ рдЫреЛрдЯрд╛ рдХреЛрдб рд╣реИ:
@interface ViewController : UIViewController <UITextFieldDelegate> { IBOutlet UITextField *textField; } @property (nonatomic, strong) IBOutlet UILabel *currTestLabel; @property (nonatomic, strong) IBOutlet UILabel *packPositionLabel; @property (nonatomic, strong) IBOutlet UILabel *batteryPercentageLabel; @end
@implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; [textField becomeFirstResponder]; } - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { if ([string isEqualToString:@"Z"] || [string isEqualToString:@"z"] || [string isEqualToString:@""] || [string isEqualToString:@""]) { _packPositionLabel.text = @""; } if ([string isEqualToString:@"9"]) { _batteryPercentageLabel.text = @"100%"; } return NO; } @end
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛ рджреЗрдЧрд╛ред рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рд╕рд░реНрдХрд┐рдЯ, рдбрд┐рд╡рд╛рдЗрд╕ рдлрд░реНрдорд╡реЗрдпрд░, рдпрд╛ рдпрд╣ рдЕрдВрддрддрдГ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рд╡рд┐рд╡рд░рдг рдЪрд╛рд╣рд┐рдП, рддреЛ рдореБрдЭреЗ рдЗрд╕реЗ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреА!