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); // }
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
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()
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()
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)
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/217891/
All Articles