Arendino рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ Dendy рд╕реЗ PC рдореЗрдВ рдЬреЙрдпрд╕реНрдЯрд┐рдХ рдХреЛ рдЬреЛрдбрд╝рдирд╛

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

рдЕрдкрдиреЗ рджрд┐рд▓ рдФрд░ рдЖрддреНрдорд╛ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдбреЗрдВрдбреА рдЦреЗрд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдореИрдВ рд▓реИрдкрдЯреЙрдк рдкрд░ рдЦреЗрд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдХреАрдмреЛрд░реНрдб рдкрд░ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЕрдЪреНрдЫреЗ рдкреБрд░рд╛рдиреЗ рдЬреЙрдпрд╕реНрдЯрд┐рдХ рдкрд░ред

рдиреАрдЪреЗ рдореИрдВ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдореБрдЭреЗ рдХрд┐рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдФрд░ рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ред

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

рдПрдХ рд╕рдорд╕реНрдпрд╛ рдереА рдХрд┐ рдбрдВрдбреА рд╕реЗ рд▓реИрдкрдЯреЙрдк рдореЗрдВ рдЬреЙрдпрд╕реНрдЯрд┐рдХ рдХреЛ рдХреИрд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПред

рдереЛрдбрд╝рд╛ рдЧреБрдЧрд▓реА, рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдпрд╣ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдПрд▓рдкреАрдЯреА рдкреЛрд░реНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдХреЗ рдФрд░ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд▓реИрдкрдЯреЙрдк рд╣реИ, рдФрд░ рдпрд╣ рдореБрдЭреЗ рд╕реВрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рддрдм рдореБрдЭреЗ рдпрд╛рдж рдЖрдпрд╛ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ Arduino Uno рдмреЛрд░реНрдб рд╣реИ рдФрд░ рдореИрдВрдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рддрд░реАрдХреЗ рд╕реЗ рдЬрд╛рдКрдВрдЧрд╛ рдФрд░ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реВрдВрдЧрд╛ред

0. рдЬреЙрдпрд╕реНрдЯрд┐рдХ рдкрд░ рдкрд┐рдирдЖрдЙрдЯ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛


рдкрд╣рд▓реА рд╕рдорд╕реНрдпрд╛ рдпрд╣ рдирд┐рдХрд▓реА рдХрд┐ рдЬреЙрдпрд╕реНрдЯрд┐рдХ рдкрд░ рдХрдиреЗрдХреНрдЯрд░реНрд╕ рдЖрдВрддрд░рд┐рдХ рд╣реИрдВ, рдФрд░ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдкрд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдкрд┐рдирдЖрдЙрдЯ рд╡рд┐рд╡рд░рдг рдмрд╛рд╣рд░реА рдХрдиреЗрдХреНрдЯрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдереЗред


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


Arduino рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╕рдм рдХреБрдЫ рд╕реАрдзреЗ рдХрдиреЗрдХреНрдЯ рдХрд┐рдпрд╛, рд╢рдХреНрддрд┐ - 5 рд╡реА рд╢рдХреНрддрд┐, рдкреГрдереНрд╡реА - рдкреГрдереНрд╡реА, рдЕрдиреНрдп 3 рд╕рдВрдкрд░реНрдХ 2, 3 рдФрд░ 4 рдбрд┐рдЬрд┐рдЯрд▓ рдкрд┐рди рд╕реЗ рдЬреБрдбрд╝реЗред

1. рдЬреЙрдпрд╕реНрдЯрд┐рдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рд╡рд┐рд╡рд░рдг


рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдкрд╛рдирд╛ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рдерд╛ред рдХреБрдЫ рд╣реА рдордВрдЪреЛрдВ рдкрд░ рдХреБрдЫ рдкреЛрд╕реНрдЯред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдЗрд╕ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдиреЗ рдореЗрд░реА рдорджрдж рдХреА: code.google.com/p/avrtoys/wiki/joystick , рдЕрд░реНрдерд╛рддреН рдпрд╣ рдХреЛрдб: avrtoys.googlecode.com/svn/trunk/joystick/main.c ред рдФрд░ рдпрд╣рд╛рдВ рд░реЗрдбрд┐рдпреЛ рдореЗрдВ рдЗрд╕ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдореЗрдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдиреЛрдЯ рдХрд╛ рд▓рд┐рдВрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: ftp.radio.ru/pub/arhiv/1996/06-96/46-6-1996.gif ред рдЗрд╕ рд╕рдм рд╕реЗ, рдореИрдВрдиреЗ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рд╛ рдХрд┐ рдЖрдкрдХреЛ Latch рдХреЛ рдПрдХ рд╕рдВрдХреЗрдд рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ 8 рдмрд╛рд░ рдШрдбрд╝реА рдХреЛ рд╕рдВрдХреЗрдд рднреЗрдЬрдиреЗ рдХреА рдФрд░ рд╣рд░ рдмрд╛рд░ рдбреЗрдЯрд╛ рд╕реЗ рдореВрд▓реНрдп рдХреЛ рдкрдврд╝рдиреЗ рдХреА, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдкреНрд░рддреНрдпреЗрдХ рдШрдбрд╝реА рдореЗрдВ рдЕрдЧрд▓реЗ рдЬреЙрдпрд╕реНрдЯрд┐рдХ рдмрдЯрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрдЧреАред

2. рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рд╕реНрдерд╛рдкрдирд╛


рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рдм рдХреБрдЫ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рд╣реИ рдпрд╛ рдЖрдк Arduino IDE рд╕реЗ рд╕рдВрддреБрд╖реНрдЯ рд╣реИрдВ, рддреЛ рдЖрдк 3 рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдореБрдЭреЗ рдЖрдкрдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ Arduino IDE рдореБрдЭреЗ рдмрд╣реБрдд рдирд┐рд░рд╛рд╢ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЖрдкрдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдЖрдк рдЕрдкрдиреА рдкрд╕рдВрджреАрджрд╛ IDE рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ Arduino IDE рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдФрд░ рд╡рд╣рд╛рдБ рдлрд░реНрдорд╡реЗрдпрд░ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдФрд░ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдХреЛрдб рдкрд╛рдпрд╛ред рдереЛрдбрд╝рд╛ рд╕рдордп рд╡реНрдпрддреАрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдЙрди рд╕рднреА рдЖрджреЗрд╢реЛрдВ рдкрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рд╛ рдЬреЛ рд╡рд╣рд╛рдБ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ:
#!/bin/bash avr-gcc -c -g -Os -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000UL -I /usr/share/arduino/hardware/arduino/cores/arduino -I /usr/share/arduino/hardware/arduino/variants/standard $filename.cpp -o $filename.o avr-gcc -Os -Wl,--gc-sections -mmcu=atmega328p -o $filename.elf $filename.o libArduino.a -lm avr-objcopy -O ihex -R .eeprom $filename.elf $filename.elf.hex avrdude -V -p m328p -b 115200 -c arduino -P /dev/ttyACM0 -U flash:w:$filename.elf.hex 

рдЙрдкрд░реЛрдХреНрдд рдХрдорд╛рдВрдб рдореЗрдВ, рд▓рд┐рдВрдХ рдХрд░рддреЗ рд╕рдордп, рд▓рд╛рдЗрдмреНрд░реЗрд░реА libArduino.a рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рд╣реЗрдбрд░ рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рд╕рднреА * .c рдФрд░ * .cpp рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдХреЗ рдФрд░ рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдПрдХрддреНрд░ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╛ рдЖрдк рдмрд╕ Arduino IDE рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХрд┐рд╕реА рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд╝рд╛рдЗрд▓ /tmp/build*.tmp/core.a рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╕рдордХрдХреНрд╖ рд╣реЛрдЧрд╛ред
рдпреЗ рд╕рднреА рдЖрджреЗрд╢ Arduino Uno рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИрдВ, рдЕрдиреНрдп arduin рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЕрдм рдЗрди рдЖрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЖрдк рдЕрдкрдиреЗ рдЖрдИрдбреАрдИ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдФрд░ рдлрд░реНрдорд╡реЗрдпрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

3. рдлрд░реНрдорд╡реЗрдпрд░ рдХреЛрдб рд▓рд┐рдЦрдирд╛


рдпрд╣рд╛рдВ рдХреЗрд╡рд▓ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ рдХрд┐ 2, 3 рдФрд░ 4 рдореЗрдВ рд╕реЗ рдХреМрди рд╕рд╛ рдкрд┐рди рд▓рдЪ, рдШрдбрд╝реА рдФрд░ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдореИрдВрдиреЗ рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдФрд░ рддреНрд░реБрдЯрд┐ рд╕реЗ рддрдп рдХрд┐рдпрд╛ред рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ 4 рдбреЗрдЯрд╛ рд╣реИ, рдФрд░ Serial.println (digitalRead (4)) рдХрд░рддреЗ рд╣реИрдВ, рдЕрдЧрд░ рдмрдЯрди рджрдмрд╛рдиреЗ рдкрд░ рдХреЛрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдпрд╣ рд╡рд╣ рд╣реИред рд╢реЗрд╖ 2 рд╕рдВрдкрд░реНрдХ рддрдм рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдП рдЧрдП рдереЗ рдЬрдм рдлрд░реНрдорд╡реЗрдпрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рдЕрдЧрд░ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╕рд╣реА рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рдЧрдпрд╛, рдирд╣реАрдВ - рд╣рдо рд╕реНрдерд╛рдиреЛрдВ рдХреЛ рд╕реНрд╡реИрдк рдХрд░рддреЗ рд╣реИрдВред

рдХреЛрдб, рдлрд┐рд░ рд╕реЗ, avrtoys.googlecode.com/svn/trunk/joystick/main.c рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛:
рдлрд░реНрдорд╡реЗрдпрд░ рдХреЛрдб
 #include <Arduino.h> const int data = 2; const int latch = 3; const int clock = 4; const int TICK = 2; void init_joystick(int data, int latch, int clock) { pinMode(data, INPUT); pinMode(clock, OUTPUT); pinMode(latch, OUTPUT); digitalWrite(clock, HIGH); } int get_keys_state_joystick(int data, int latch, int clock) { digitalWrite(latch, HIGH); delayMicroseconds(TICK); digitalWrite(latch, LOW); int keys_state = 0; for (int i = 0; i < 8; ++i) { delayMicroseconds(TICK); digitalWrite(clock, LOW); keys_state <<= 1; keys_state += digitalRead(data); delayMicroseconds(TICK); digitalWrite(clock, HIGH); } return keys_state; } void setup() { init_joystick(data, latch, clock); Serial.begin(57600); } void loop() { Serial.write(get_keys_state_joystick(data, latch, clock)); } 


рдирддреАрдЬрддрди, рдореБрдЭреЗ 1 рдмрд╛рдЗрдЯ рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖ рдЬрд┐рд╕рдореЗрдВ рдЬреЙрдпрд╕реНрдЯрд┐рдХ рдХреЗ рд╕рднреА 8 рдмрдЯрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдереА, рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдмрд┐рдЯред рдореБрдЭреЗ рдирд┐рдореНрди рд╕реНрдерд╛рди рдорд┐рд▓рд╛: A, B, Select, Start, Up, Down, Left, Rightред рдЗрд╕рдХреЗ рдмрд╛рдж рдмрд╛рдЗрдЯ рдХреЛ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдпрд╣ рдореЗрд░реЗ "рдбреНрд░рд╛рдЗрд╡рд░" рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдФрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрд╣ рджреЗрдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рджреВрд╕рд░реА рдЬреЙрдпрд╕реНрдЯрд┐рдХ рдХрдиреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

4. "рдбреНрд░рд╛рдЗрд╡рд░" рд▓рд┐рдЦрдирд╛


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

рдПрдХрдорд╛рддреНрд░ рд╕рдорд╕реНрдпрд╛ рдЬреЛ рдпрд╣рд╛рдВ рдЙрддреНрдкрдиреНрди рд╣реБрдИ , рд╡рд╣ рдЬреЙрдпрд╕реНрдЯрд┐рдХ рд╕рдВрдкрд░реНрдХреЛрдВ рдХрд╛ рдЙрдЫрд╛рд▓ рд╣реИ ред рдореИрдВрдиреЗ рдмрдЯрди рдХреЗ рд░рд╛рдЬреНрдп рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рдж рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╕рдордп рдЕрдВрддрд░рд╛рд▓ рдХреА рд╢реБрд░реБрдЖрдд рдХрд░рддреЗ рд╣реБрдП рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛, рдЬрд┐рд╕рдХреЗ рджреМрд░рд╛рди рд░рд╛рдЬреНрдп рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИред рдкрд░реНрдпрд╛рдкреНрдд 0.05 рдПрд╕ред

рдХреАрд╕реНрдЯреНрд░реЛрдХреНрд╕ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХреНрд╕рдЯреА рдпреВрдЯрд┐рд▓рд┐рдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬреЛ рдХрд┐ рдПрдХреНрд╕реЛрдЯреЛрдореЗрд╢рди рдмрдВрдбрд▓ рдХреЗ рд╕рд╛рде рдЖрдпрд╛ рдерд╛ред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ, рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ: xte 'keydown Left' ред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдЖрджрдореА xte рджреЗрдЦреЗрдВред

рдбреНрд░рд╛рдЗрд╡рд░ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЙрд╕ рд░рд╛рдЬреНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрдм рдкреВрд░реЗ рдХреНрд░реЙрд╕ рдХреЛ рджрдмрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╕рдВрдЦреНрдпрд╛ 0xf0 рдЗрд╕ рд╕реНрдерд┐рддрд┐ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред

рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛрдб
 #!/usr/bin/python import serial import os import time def bool_to_updown(val): if val: return 'up' else: return 'down' exit_keys = 0xf0 delta_time = 0.05 keys = [['Right', False, 0.0], ['Left', False, 0.0], ['Down', False, 0.0], ['Up', False, 0.0], ['s', False, 0.0], # START ['a', False, 0.0], # SELECT ['x', False, 0.0], # B ['z', False, 0.0]] # A ser = serial.Serial('/dev/ttyACM0', 57600) keys_state = 0 while keys_state != exit_keys: keys_state = ord(ser.read()) for i in range(8): if not bool(keys_state & (1 << i)) != keys[i][1] and time.time() - keys[i][2] > delta_time: os.system("xte 'key{0} {1}'".format(bool_to_updown(keys[i][1]), keys[i][0])) keys[i][1] = not keys[i][1] keys[i][2] = time.time() for i in range(8): os.system("xte 'keyup {0}'".format(keys[i][0])) ser.close() print('Goodbye!') 



5. рд╣реБрд░реНрд░реЗ! рдЦреЗрд▓рдиреЗ рдХреЗ рд▓рд┐рдП!


рд╡рд╣ рд╕рдм рд╣реИ! рдпрд╣ рдХреЗрд╡рд▓ рдбрдВрдбреА рдПрдореБрд▓реЗрдЯрд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИ, рдореИрдВрдиреЗ FCEUX рдХреЛ рдЪреБрдирд╛ред
рд╣рдо рдЙрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдбреНрд░рд╛рдЗрд╡рд░ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИрдВ рдФрд░ рдмрдЪрдкрди рдХреЛ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ!

рдирд┐рд╖реНрдХрд░реНрд╖


рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ Arduino рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп, рд╕рдВрднрд╡рддрдГ рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡реА рддрд░реАрдХреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ Arduino Leonardo рд╣реИ, рддреЛ рдЖрдк рд╕реАрдзреЗ рдЕрдкрдиреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдХреАрдмреЛрд░реНрдб рдХрдорд╛рдВрдб рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХреАрдмреЛрд░реНрдб рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рднреА рд╕рдВрднрд╡ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ, Arduino рдХреЛ рдлрд┐рд░ рд╕реЗ рднрд░рдирд╛ рддрд╛рдХрд┐ рдпрд╣ рдЬреЙрдпрд╕реНрдЯрд┐рдХ / рдХреАрдмреЛрд░реНрдб / рдорд╛рдЙрд╕ рдХреА рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗ рдФрд░ рд╕реАрдзреЗ рдХрдорд╛рдВрдб рднреА рднреЗрдЬреЗрдВред рдпрд╣рд╛рдБ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╣реИ: http://mitchtech.net/arduino-usb-hid-keyboard/ ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореЗрд░рд╛ рддрд░реАрдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдореЗрд░реЗ рдЕрдиреБрдХреВрд▓ рд╣реИ рдФрд░ рдореИрдВ рдкрд░рд┐рдгрд╛рдо рд╕реЗ рд╕рдВрддреБрд╖реНрдЯ рд╣реВрдВред

рдпрд╣ рдкрд╕рдВрдж рд╣реИ рдпрд╛ рдирд╣реАрдВ, Arduino рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рд╛рди рдордВрдЪ рд╣реИред
рдЕрдм рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдЕрд▓рдЧ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдпрд╣ рд╕рдм рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред

рдЦреИрд░, рдЕрдВрддрд┐рдо рд╡реАрдбрд┐рдпреЛ:

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


All Articles