Arduino Uno рдмреЛрд░реНрдб, рднрд╛рдЧ 2 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд╕рд╛рде рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдЦреЗрд▓ рд╡рд┐рдХрд╛рд╕

рдкрд░рд┐рдЪрдп


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

рдЪрд░рдг 1 "рд╡рд┐рдХрд╛рд╕ рдХрд╛рд░реНрдп"


-рд╢рд╣ рдореЗрдВ 2 рдбрд┐рдЧреНрд░реА рдХреА рдЖрдЬрд╛рджреА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
-SHG рдореЗрдВ рдЕрдВрддрд┐рдо рд╡рд┐рд╢реЗрд╖ рдмреАрдо рдорд╛рд░рдиреЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд▓реНрджреА рд╕реЗ рдЕрдВрдХ рд╕реНрдХреЛрд░ рдХрд░рдиреЗ рдФрд░ рд╕рд┐рд▓реЛрд╕ рдХреА рдЧрддрд┐ рдХреЛ рдзреАрдорд╛ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред
рдирдП рдирд┐рдпрдо рд▓рд╛рдЧреВ рдХрд░реЗрдВ - рдЦреЗрд▓ 1000 рдЕрдВрдХ рддрдХ рдЦреЗрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЯрдХрд░рд╛рд╡ рдХреЗ рдПрдХ рд╕рд░рд▓ рдкрд░рд┐рд╣рд╛рд░ рдХреЗ рд▓рд┐рдП, 1 рдЕрдВрдХ рд╕реЗ рд╕рдореНрдорд╛рдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд░ 50 * 10 ^ -3 s рдХреЗ рд▓рд┐рдП рдмреЙрд▓ +1 рдкреЙрдЗрдВрдЯ рдкрд░ рдмреАрдо рд░рд┐рдЯреЗрдВрд╢рди рдХреЗ рд▓рд┐рдП (50 рдорд┐рдирдЯ рдХреА рджреЗрд░реА Arduino рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рд╕реЗрдЯ рд╣реИ)

рдЪрд░рдг 2 "рдПрдХ рдПрдирд╛рд▓реЙрдЧ рд╕реНрдЯрд┐рдХ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╡рд┐рд╡рд░рдг"


рд╕реНрдЯрд┐рдХ рдореЗрдВ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП 5 рдкрд┐рди рд╣реЛрддреЗ рд╣реИрдВ: VCC рдкрд┐рди + 5V рдкрд╛рд╡рд░, GND - рдХреЛ Arduino Uno рдмреЛрд░реНрдб, X - рд╕реЗ рдПрдирд╛рд▓реЙрдЧ рдЗрдирдкреБрдЯ A0, Y - A1, D - рд╕реЗ рдбрд┐рдЬрд┐рдЯрд▓ рдЗрдирдкреБрдЯ D2 рддрдХ рдЧреНрд░рд╛рдЙрдВрдб рд╕реЗ рдЬреЛрдбрд╝рддрд╛ рд╣реИред

рдЪрд░рдг 3 "рдПрдХ рд╕реАрд░рд┐рдпрд▓ рдХрдиреЗрдХреНрд╢рди рдкрд░ рдХрдИ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛"


рд╕реНрдЯрд┐рдХ рдкреЛрдЬрд┐рд╢рди рдкрд░ рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рд╕рд╛рде рдЯреНрд░рд╛рдВрд╕рдорд┐рдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЙрдирдХреА рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдмрд┐рдирд╛ рдХрд┐рд╕реА рджреЗрд░реА рдХреЗ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рд╣реЛ рд╕рдХреЗред рдПрдирд╛рд▓реЙрдЧ рд╕реНрдЯрд┐рдХ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, 7 рдмрд┐рдЯреНрд╕ XXXYYB рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВ - рдПрдХреНрд╕ рд╕рдордиреНрд╡рдп рдХреЗ рд▓рд┐рдП 3, рд╡рд╛рдИ рд╕рдордиреНрд╡рдп рдХреЗ рд▓рд┐рдП 3 рдЕрдзрд┐рдХ, рд╕реНрдЯрд┐рдХ рдкрд░ рдмрдЯрди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 1 рдмрд┐рдЯред рдореИрдВ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рдХреЛ рд╕рдВрд▓рдЧреНрди рдХрд░рддрд╛ рд╣реВрдВ:
Arduino Uno Board рдХреЗ рд▓рд┐рдП рдХреЛрдб
#include <stdio.h>
int xPin = A0, yPin = A1, buttonPin = 2;
int xPosition = 0, yPosition = 0, buttonState = 0;
char strbuf[20]; //
void setup() {
  // initialize serial communications at 9600 bps:
  Serial.begin(9600); 
  pinMode(xPin, INPUT);
  pinMode(yPin, INPUT);
  //activate pull-up resistor on the push-button pin
  pinMode(buttonPin, INPUT_PULLUP);   }
void loop() {
  xPosition = map(analogRead(xPin),0,1023,0,639);
  yPosition = map(analogRead(yPin),0,1023,0,639);
  buttonState = digitalRead(buttonPin);
  sprintf(strbuf,"%03d%03d%1d",xPosition,yPosition,buttonState);
  Serial.println(strbuf); 
  delay(50); }// add some delay between reads

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

рдпрд╣ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕реНрдЯрд┐рдХ рд╕реНрдЯреЗрдЯ рд╡реЗрдХреНрдЯрд░ рд╣реИред рд╡реИрд╕реЗ, рдХрднреА-рдХрднреА рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ "рдкрд░реНрдЪреА" - 2 3 рдмрд┐рдЯреНрд╕ рдХреЗ рдкрддрд▓реЗ рд╡реИрдХреНрдЯрд░ред рдЕрддреНрдпрдВрдд рдЕрдкреНрд░рд┐рдп рдШрдЯрдирд╛ред рдЙрдирдХреЗ рдХрд╛рд░рдг, рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЦреЗрд▓ рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдореЗрд░реЗ рдЫрдбрд╝реА рдмреЛрд░реНрдб рдкрд░ рджреЛрд╖ рдХреЗ рдХрд╛рд░рдг рд╣реИ, рд╢рд╛рдпрдж рдирд╣реАрдВред рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВрдиреЗ рдЖрд░реНрдЯреБрдбреВ рд╕реНрддрд░ рдкрд░ рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреАред рдЗрд╕рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЦреЗрд▓ рдХреЛрдб рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╢рд░реНрдд рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рддреА рд╣реИ (рдЪрд░рдг 4 рджреЗрдЦреЗрдВ)ред рдЗрд╕рдХрд╛ рдХрд╛рдо рд╕реАрд░рд┐рдпрд▓ рдХрдиреЗрдХреНрд╢рди рдкрд░ рдкреНрд░рд╕рд╛рд░рд┐рдд рдбреЗрдЯрд╛ рдХреА рдЕрдЦрдВрдбрддрд╛ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реИред

рдЪрд░рдг 4 "рдЦреЗрд▓ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ"


рдореИрдВ рдХреЛрдб рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЯрд┐рдкреНрдкрдгреА рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдмрд┐рдЧрд╛рдбрд╝рдиреЗ рдХреЗ рддрд╣рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред рдмрд╕ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ рдЪрд░ рдХреА рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рджреЗрддрд╛ рд╣реВрдВ:
рдПрд╕рдПрдЪ рдХрд╛ рддреНрд░рд┐рдЬреНрдпрд╛рдСрдлрд╣реЗрд░реЛ-рддреНрд░рд┐рдЬреНрдпрд╛;
radiusOfEnemy - рд╕рд╛рдЗрд▓реЛ рдХрд╛ рддреНрд░рд┐рдЬреНрдпрд╛;
radiusOfBullet - рдмреБрд▓реЗрдЯ рддреНрд░рд┐рдЬреНрдпрд╛; рдЙрддреНрдкрд╛рджрд┐рдд рдПрд╕рдПрдЪрдЬреА;
рдХрд╛рдЙрдВрдЯрд░ - рдмрд┐рдВрджреБ рдХрд╛рдЙрдВрдЯрд░;
speedOfEnemy - рд╕рд╛рдЗрд▓реЛ рдХреА рдЧрд┐рд░рддреА рдЧрддрд┐ рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рдЖрдиреБрдкрд╛рддрд┐рдХ рдЧреБрдгрд╛рдВрдХ;
DeltaPositionOfHeroX - рдПрдХреНрд╕ рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде рдПрд╕рдПрдЪ рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╡реЗрддрди рд╡реГрджреНрдзрд┐, рдЫрдбрд╝реА рд╕реЗ рдкреНрд░рд╛рдкреНрдд;
positionOfHeroX1 - рдПрдХреНрд╕ рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде рдПрд╕рдПрдЪ рдХреЗ рдЖрдВрджреЛрд▓рди рдХрд╛ рдЕрдВрддрд┐рдо рд╕рдордиреНрд╡рдп (рд░реАрдб рдШрдбрд╝реА рдХреЗ рдЕрдВрдд рдореЗрдВ);
positionOfHeroX0 - рдПрдХреНрд╕ рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рдордиреНрд╡рдп (рдорд╛рдк рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ);
DeltapositionOfHeroY, positionOfHeroY1, positionOfHeroY0 - Y рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде рд╕рдорд╛рди;
strbuf рд╡рд╣ рд░реЗрдЦрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ Arduino Uno рд╕реЗ рдкреНрд░рд╕рд╛рд░рд┐рдд рдПрдирд╛рд▓реЙрдЧ рд╕реНрдЯрд┐рдХ рдХреЗ рд╕реНрдЯреЗрдЯрд╕ рд╕рдВрдХреЗрдд рдкрдврд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВред
рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЦреЗрд▓ рдХреЛрдб
import processing.serial.*;//I/O library
Serial port;
PShape bot;
PFont font;
PImage img;
int radiusOfHero=100, radiusOfEnemy, radiusOfBullet=5, Counter=0, Fire;
float speedOfEnemy=1, DeltaPositionOfHeroX, positionOfHeroX1, positionOfHeroX0=640.0,
DeltapositionOfHeroY, positionOfHeroY1, positionOfHeroY0=640.0,
positionOfEnemyY = 0.0 ,positionOfEnemyX=0.0, positionOfBulletX=0.0,positionOfBulletY=0.0;
String strbuf="3223220";
void setup()
{
  size(640, 640);
  port = new Serial(this, "COM4", 9600);
  port.bufferUntil('\n');
  bot = loadShape("2.svg");
  font = loadFont("AgencyFB-Bold-200.vlw");
  img = loadImage("img.png");  // Load the image into the program  
  textFont(font,200);
}
void draw() {
    background(0);
    image(img, 0, 0);
    fill(255);
    text(Counter, 400,170);
//==========definiton of hero==========
fill(0, 200, 102);
positionOfHeroX1=positionOfHeroX0+(0.05*(DeltaPositionOfHeroX-width/2));
if (positionOfHeroX1<0){positionOfHeroX1=0.0;}
if (positionOfHeroX1>width){positionOfHeroX1=width;}
positionOfHeroY1=positionOfHeroY0+(0.05*(DeltapositionOfHeroY-height/2));
if (positionOfHeroY1<0){positionOfHeroY1=0.0;}
if (positionOfHeroY1>height){positionOfHeroY1=height;}
ellipse(positionOfHeroX1, positionOfHeroY1, radiusOfHero, radiusOfHero);
positionOfHeroX0=positionOfHeroX1;
positionOfHeroY0=positionOfHeroY1;
fill(244);
       positionOfBulletY= positionOfHeroY1-radiusOfHero/2;
      if (Fire==0){
            for(int i = 0; i < (positionOfHeroY1); i++){
                      positionOfBulletX = positionOfHeroX1; 
                      positionOfBulletY= positionOfBulletY-height/100;
                      ellipse(positionOfBulletX, positionOfBulletY, radiusOfBullet, radiusOfBullet);           }
                       }
//===============definition of enemy===============
fill(255,0,0);
radiusOfEnemy=round(random(60));{
   for(int i = 0; i < height; i++) 
     positionOfEnemyY=positionOfEnemyY+0.02*speedOfEnemy;
     ellipse(positionOfEnemyX, positionOfEnemyY, radiusOfEnemy*2, radiusOfEnemy*2); }
        if (positionOfEnemyY>height) {
        positionOfEnemyY=0.0;
        positionOfEnemyX = round(random(width)); 
        Counter++;}
//==========definition of counter==========        
        if (Counter>1000){
        text("YOU WON!", 50,height/2);
}
//==========clash==========
if (abs(positionOfHeroX1-positionOfEnemyX) < (radiusOfHero+radiusOfEnemy)/2 & 
   (abs(positionOfHeroY1-positionOfEnemyY) < (radiusOfHero+radiusOfEnemy)/2)){
background(255,0,0);
shape(bot, positionOfHeroX1-radiusOfHero/2,positionOfHeroY1-radiusOfHero, 100, 100);  
Counter=-1;
fill(255);
textFont(font,150);
text("TURN AWAY!", 0,height/2);}
//==========Checking of target hit==========
    if (((abs(positionOfBulletX-positionOfEnemyX) < (radiusOfBullet+radiusOfEnemy)/2))& (Fire==0))
      {speedOfEnemy=0.05;// decreasing of enemy speed
      Counter++;}
    else speedOfEnemy=0.2;}
   
void serialEvent (Serial port) {
  if(port.available()>0){
   strbuf=port.readStringUntil('\n'); 
if (strbuf.length()<7) {//condition to prevent artefacts
strbuf="3223220";
  }
DeltaPositionOfHeroX=float(strbuf.substring(0, 3)); 
DeltapositionOfHeroY=float(strbuf.substring(3, 6)); 
Fire=int(strbuf.substring(6, 7));
}
}

рдЪрд░рдг 5 "рдкреНрд░рджрд░реНрд╢рди"



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


All Articles