рдЕрдгреНрдбрд╛рдХрд╛рд░ рдЯреНрд░реЗрдирд░ рдФрд░ pygame рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ

рдирдорд╕реНрдХрд╛рд░ рджреЛрд╕реНрддреЛрдВ! рдпрд╣ рдПрдХ рдмрд╛рд░ рдРрд╕рд╛ рд╣реБрдЖ рдХрд┐ рдПрдХ рдЪреЛрдЯ рд╕реЗ рдЙрдмрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдЦреБрдж рдХреЛ рдРрд╕рд╛ рдЙрдкрдХрд░рдг рдЦрд░реАрджрд╛ред

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


рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдФрд░ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЛ рдХреИрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ


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

рдкреИрдбрд▓ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рдВрдкрд░реНрдХ A0 , рд╡рд┐рднрд┐рдиреНрди рдЖрдХрд╛рд░реЛрдВ рдХрд╛ рд╕рдВрдХреЗрдд рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ред
рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рджреМрд░рд╛рди, рдХрдВрдкреНрдпреВрдЯрд░ рдХреЛ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рд╕реЗ рд╕рд┐рдЧреНрдирд▓ рд╕рдкреНрд▓рд╛рдИ рдХрд░рдиреЗ рдХреЗ рдХрдИ рд╡рд┐рдХрд▓реНрдк рдЖрдЬрдорд╛рдП рдЧрдП, рдФрд░ рдЖрдЦрд┐рд░рдХрд╛рд░ рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдкрд░ рд╕рдордЭреМрддрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛:
рдкреНрд░рддреАрдХ "0" рд▓рдЧрд╛рддрд╛рд░ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЛ рдЦрд┐рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░, рдЬрдм рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдкрд░ рдПрдХ рдХрджрдо рдЙрдард╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ "1" рдЦрд┐рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдЧрд▓рд╛ рдЪрд░рдг рдлрд┐рд░ рд╕реЗ "0" рдФрд░ рдЗрддрдиреЗ рдкрд░ рдПрдХ рд╕рд░реНрдХрд▓ рдореЗрдВ рд╣реИред
рдореИрдВ рд╕реНрдХреЗрдЪ рд▓рд╛рддрд╛ рд╣реВрдВ
int pin = A0; int ledPin = 13; int minSignal = 600; bool stateUp = false; bool lastState = false; bool oneStep = false; void setup() { pinMode(pin, INPUT); pinMode(ledPin, OUTPUT); Serial.begin(9600); } void loop() { int signal = analogRead(pin); if (signal > minSignal){ stateUp = true; } else{ stateUp = false; } if (lastState != stateUp && lastState == false){ oneStep = not oneStep; } else { } lastState = stateUp; Serial.println(oneStep); digitalWrite(ledPin, oneStep); // } 



рдЦреЗрд▓


рдЦреЗрд▓ рдирд╣реАрдВ рддреЛ pygame рдкрд░ рдФрд░ рдХреНрдпрд╛ рд▓рд┐рдЦреЗрдВ?

рд╡рд┐рдЪрд╛рд░

рдПрдХ рдЕрдгреНрдбрд╛рдХрд╛рд░ рдЯреНрд░реЗрдирд░ рд╕реНрдХреАрдЗрдВрдЧ рдХреА рдирдХрд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕реНрдХреАрдпрд░ рдХреА рджреМрдбрд╝ рд╣реЛрдЧреАред рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдкрд░ рдЙрдард╛рдпрд╛ рдЧрдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдХрджрдо рдЦреЗрд▓ рдореЗрдВ рдПрдХ рдЪрд░рд┐рддреНрд░ рдмрдирд╛рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдЪрд░рд┐рддреНрд░ рдХреА рд╕рд╣рдЬ рдЧрддрд┐ / рддреНрд╡рд░рдг рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЕрдВрдд рдореЗрдВ, рдореИрдВрдиреЗ рд╕рдЯреАрдХрддрд╛ рдХреЛ рд╡рд░реАрдпрддрд╛ рджреЗрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред

рдмрд╕реНрддрд┐рдпреЛрдВ

рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдпрд╣ рдкрд╛рдпрд╛ рдЧрдпрд╛ рдХрд┐ "рдЗрд╖реНрдЯрддрдо" рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ, рдПрдХ рдкреВрд░реНрдг рдХреНрд░рд╛рдВрддрд┐ 4 рдореАрдЯрд░ рд╣реИред рдпрд╣ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдХрд┐рддрдиреЗ рд▓реЛрдЧ рдЧреБрдЬрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЗрдВрджреНрд░реАрдп рдбрд┐рд╕реНрдХ рдХрд┐рддрдирд╛ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рддреА рд╣реИред рдмрд╕ рдЗрд╕ рдореВрд▓реНрдп рдХреЛ рдПрдХ рд╕реНрд╡рдпрдВрд╕рд┐рджреНрдз рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрдВред
рд╡рд░реНрдЪреБрдЕрд▓ рдЯреНрд░реИрдХ рдкрд░, 1 рдореАрдЯрд░ 1 рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрддрд╛ рд╣реИред рдпрд╛рдиреА рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдореЗрдВ рд╣рдо рдЪрд░рд┐рддреНрд░ 4 рдкрд┐рдХреНрд╕реЗрд▓ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рддреЗ рд╣реИрдВред
рдЧрддрд┐ рд╣рд░ рдХрджрдо рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдЧреАред
v = s / t
s = 4 рдореАред
t рдПрдХ рдХрджрдо рдХрд╛ рд╕рдордп рд╣реИред
* рдПрдХ рдХрджрдо - рдкреВрд░реНрдг рдкреЗрдбрд▓ рд░реЛрдЯреЗрд╢рдиред

рдЬреЛрд╢

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

рдЖрдЬ рдХрд╛ рдЪрд░рд┐рддреНрд░ рдКрдкрд░ рд╣реИ, рдХрд▓ рдПрдХ рдиреАрдЪреЗ рд╣реИред рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП - рдЕрдВрддрд┐рдо рджреМрдбрд╝ рдХрд╛ рдЪрд░рд┐рддреНрд░ рд▓реЗрдХрд┐рди рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдкрд╣рд▓рд╛ рд╡рд┐рдХрд▓реНрдк рдХреВрд▓рд░ рд▓рдЧрддрд╛ рд╣реИред

рддрдХрдиреАрдХреА рд╡рд┐рд╡рд░рдг



рдбреЗрдЯрд╛рдмреЗрд╕

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

рдХреЛрдб рдЙрджрд╛рд╣рд░рдг
 lass DataManager: def __init__(self): self.time = time self.currentTimeForLastRace = datetime.now() self.currentTime = self.time.time() self.speed = 0 self.db = MySQLdb.connect(host="localhost", user="root", passwd="root", db="skirunner", charset='utf8') self.cursor = self.db.cursor() self.isGetLastRaceSpeeds = False self.dataLastRace = [] self.lastRaceMinDate = datetime.now() self.value = 0 self.lastValue = 0 self.impulse = 0 self.isRaceStart = False self.currentRaceId = -1 self.currentDistanceId = -1 self.currentProfileId = -1 def getImpulse(self, value): self.impulse = 0 if self.time.time() - self.currentTime > RESET_SPEED_TIME: self.speed = 0 self.value = value if self.value != self.lastValue: time = self.time.time() - self.currentTime self.impulse = POWER_IMPULSE self.isRaceStart = True self.speed = STEP / time #    self.currentTime = self.time.time() self.lastValue = self.value return self.impulse def getLastRaceDistanceAtCurrentTime(self, raceId,currentTime): lastRaceDistance = 0 dateFormat = "%Y-%m-%d %H:%M:%S.%f" if not self.isGetLastRaceSpeeds: sql = """SELECT min(date) FROM runLog WHERE race_id = %s""" % raceId self.cursor.execute(sql) data = self.cursor.fetchall() for rec in data: self.lastRaceMinDate = datetime.strptime(rec[0],dateFormat) sql = """SELECT distance,date FROM runLog WHERE race_id = %s ORDER BY date DESC""" % raceId self.cursor.execute(sql) self.dataLastRace = self.cursor.fetchall() self.isGetLastRaceSpeeds = True if self.isRaceStart: time = datetime.now() - datetime.fromtimestamp(currentTime) for rec in self.dataLastRace: distance, date = rec if time <= (datetime.strptime(date,dateFormat) - self.lastRaceMinDate): lastRaceDistance = distance return lastRaceDistance 



рдЧреНрд░рд╛рдлрд┐рдХреНрд╕

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдКрдкрд░ рджрд┐рдП рдЧрдП рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдЖрджрд┐рдо рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛред рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП, pygame рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЙрд╕ рдХрд╛рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рд▓рд┐рдЦрд╛ рдерд╛ред

рдЖрдХрд╛рд░


PyQt рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд░реВрдкреЛрдВ рдХреЗ рд▓рд┐рдПред
рдХреЛрдб рдЙрджрд╛рд╣рд░рдг
 class FormProfile(QMainWindow): def __init__(self): super(QMainWindow, self).__init__() uic.loadUi('%s/ui/frm_profile.ui' % DIR, self) self.cb_profile_load() self.te_newProfile.hide() self.bt_addProfile.hide() self.bt_cancel.hide() self.lb_add.hide() self.move(QDesktopWidget().availableGeometry().center() - self.frameGeometry().center()) self.connect(self.bt_ok, SIGNAL("clicked()"), self.bt_ok_clicked) self.connect(self.bt_new, SIGNAL("clicked()"), self.bt_new_clicked) self.connect(self.bt_addProfile,SIGNAL("clicked()"), self.bt_addProfile_clicked) self.connect(self.bt_cancel, SIGNAL("clicked()"), self.bt_cancel_clicked) self.connect(self.bt_graph, SIGNAL("clicked()"), self.bt_graph_clicked) def bt_ok_clicked(self): self.profileId = self.cb_profile.itemData(self.cb_profile.currentIndex()).toString() self.formDistance = FormDistance(self.profileId) self.formDistance.show() self.hide() 


рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЦрд┐рдбрд╝рдХреА рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд╕рдВрдж рдЖрдИред рдПрдордПрд╕ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИред
рдХреНрдпреВрдЯреА 4 рдХреНрд░рд┐рдПрдЯрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдмрдирд╛рдП рдЧрдП рдлреЙрд░реНрдоред
рдЙрдиреНрд╣реЗрдВ рдХреЛрдб рдореЗрдВ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ред
 uic.loadUi('%s/ui/frm_profile.ui' % DIR, self) 

рдПрд╕реЛрд╕рд┐рдПрдЯреЗрдб рдЗрд╡реЗрдВрдЯреНрд╕ рдФрд░ рддрд░реАрдХреЗ
  self.connect(self.bt_ok, SIGNAL("clicked()"), self.bt_ok_clicked) self.connect(self.bt_new, SIGNAL("clicked()"), self.bt_new_clicked) self.connect(self.bt_addProfile,SIGNAL("clicked()"), self.bt_addProfile_clicked) self.connect(self.bt_cancel, SIGNAL("clicked()"), self.bt_cancel_clicked) self.connect(self.bt_graph, SIGNAL("clicked()"), self.bt_graph_clicked) 

рдФрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛
  self.formProfile = FormProfile() self.formProfile.show() 


рдЧреНрд░рд╛рдлрд┐рдХреНрд╕


рд░реЗрдЦрд╛рдВрдХрди рдХреЗ рд▓рд┐рдП, matplotlib рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрд╣рд╛рдБ рдПрдХ рдирдореВрдирд╛ рдХреЛрдб рднреА рд╣реИ
 import matplotlib.pyplot as plt def bt_averageSpeed_clicked(self): ... plt.plot_date(dates, values,'b') plt.plot_date(dates, values,'bo') averageSpeed = len(values) > 0 and (lambda: sum(values) / len(values)) or (lambda: 0) plt.xlabel(u"- = %.2f /  %.2f /" % (float(averageSpeed()),float(averageSpeed()) / 1000 * 3600)) plt.ylabel(u"  (/)") plt.title(u"   %s" % dm.getProfileNameById(self.profileId)) plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%d/%m/%y')) plt.gcf().autofmt_xdate() plt.grid(True) plt.show() 

рдореИрдВ рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рд╕рд┐рд░рд┐рд▓рд┐рдХ рд╡рд░реНрдгрдорд╛рд▓рд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рд╣рд╛рдпрдХ рдлреЛрдВрдЯ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
 from matplotlib import rc font = {'family': 'Droid Sans', 'weight': 'normal', 'size': 14} rc('font', **font) 



Arduino рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рдкрдврд╝рдирд╛

рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рд╕реАрд░рд┐рдпрд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдПрдХ рдЕрд▓рдЧ рдереНрд░реЗрдб рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИред
 def getDataFromSimulator(): global valueFromSimulator, isRunnig ser = serial.Serial('/dev/ttyACM0', 9600) while isRunnig: value = ser.readline() try: valueFromSimulator = int(value) except: pass 

рдХрд┐рд╕реА рдЕрдиреНрдп рдереНрд░реЗрдб рдореЗрдВ рдЪрд░ рдорд╛рди рдлрд╝рд░реНрдорд╕реБрдореБрд▓реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рджреМрдбрд╝рддреЗ рд╣реБрдП рджреЛ рдзрд╛рдЧреЗред
 t1 = threading.Thread(target=main,args = (self.profileId,self.distanceId)) t2 = threading.Thread(target=getDataFromSimulator) t2.start() t1.start() 

рдЦрд░рд╛рдм рд╡реАрдбрд┐рдпреЛ рдкреНрд░рджрд░реНрд╢рди


рдЬреИрд╕рд╛ рдЖрджреЗрд╢ рджрд┐рдпрд╛ред


рдореБрдЭреЗ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ, рдЖрд▓реЛрдЪрдирд╛рдУрдВ рдФрд░ рд╕реБрдЭрд╛рд╡реЛрдВ рдкрд░ рдЦреБрд╢реА рд╣реЛрдЧреАред
рдпрд╣рд╛рдБ рд╕рднреА рд╕реНрд░реЛрдд

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


All Articles