Advertisement
musman2015

Untitled

Jul 26th, 2020
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 32.58 KB | None | 0 0
  1. import cv2
  2. import threading
  3. from time import sleep
  4. import time
  5.  
  6. import RPi.GPIO as GPIO
  7. GPIO.setmode(GPIO.BCM)
  8.  
  9. GPIO.setup(17, GPIO.OUT)
  10. GPIO.setup(27, GPIO.OUT)
  11.  
  12. import board
  13. import busio
  14. import digitalio
  15. from adafruit_mcp230xx.mcp23017 import MCP23017
  16. # Initialize the I2C bus:
  17. i2c = busio.I2C(board.SCL, board.SDA)
  18. mcp = MCP23017(i2c, address=0x23)
  19. mcp2 = MCP23017(i2c, address=0x27)
  20.  
  21. from adafruit_servokit import ServoKit
  22. kit = ServoKit(channels=16)
  23. global start
  24. start=-5
  25. global end
  26. global prevdata
  27. #define pins for relays
  28. pin0 = mcp.get_pin(0)
  29. pin1 = mcp.get_pin(1)
  30. pin2 = mcp.get_pin(2)
  31. pin3 = mcp.get_pin(3)
  32. pin4 = mcp.get_pin(4)
  33. pin5 = mcp.get_pin(5)
  34. pin6 = mcp.get_pin(6)
  35. pin7 = mcp.get_pin(7)
  36. pin8 = mcp.get_pin(8)
  37. pin9 = mcp.get_pin(9)
  38. pin10 = mcp.get_pin(10)
  39. pin11 = mcp.get_pin(11)
  40. pin12 = mcp.get_pin(12)
  41. pin13 = mcp.get_pin(13)
  42. pin14 = mcp.get_pin(14)
  43. pin15 = mcp.get_pin(15)
  44.  
  45.  
  46. STEP1 = mcp2.get_pin(0)
  47. DIR1 = mcp2.get_pin(1)
  48. EN1 = mcp2.get_pin(2)
  49.  
  50. STEP2 = mcp2.get_pin(3)
  51. DIR2 = mcp2.get_pin(4)
  52. EN2 = mcp2.get_pin(5)
  53.  
  54. STEP3 = mcp2.get_pin(6)
  55. DIR3 = mcp2.get_pin(7)
  56. EN3 = mcp2.get_pin(8)
  57.  
  58. STEP4 = mcp2.get_pin(9)
  59. DIR4 = mcp2.get_pin(10)
  60. EN4 = mcp2.get_pin(11)
  61.  
  62. STEP5 = mcp2.get_pin(12)
  63. DIR5 = mcp2.get_pin(13)
  64. EN5 = mcp2.get_pin(14)
  65.  
  66.  
  67.  
  68. pin0.direction = digitalio.Direction.OUTPUT
  69. pin1.direction = digitalio.Direction.OUTPUT
  70. pin2.direction = digitalio.Direction.OUTPUT
  71. pin3.direction = digitalio.Direction.OUTPUT
  72. pin4.direction = digitalio.Direction.OUTPUT
  73. pin5.direction = digitalio.Direction.OUTPUT
  74. pin6.direction = digitalio.Direction.OUTPUT
  75. pin7.direction = digitalio.Direction.OUTPUT
  76. pin8.direction = digitalio.Direction.OUTPUT
  77. pin9.direction = digitalio.Direction.OUTPUT
  78. pin10.direction = digitalio.Direction.OUTPUT
  79. pin11.direction = digitalio.Direction.OUTPUT
  80. pin12.direction = digitalio.Direction.OUTPUT
  81. pin13.direction = digitalio.Direction.OUTPUT
  82. pin14.direction = digitalio.Direction.OUTPUT
  83. pin15.direction = digitalio.Direction.OUTPUT
  84.  
  85. STEP1.switch_to_output(value=True)
  86. DIR1.switch_to_output(value=True)
  87. EN1.switch_to_output(value=True)
  88. STEP2.switch_to_output(value=True)
  89. DIR2.switch_to_output(value=True)
  90. EN2.switch_to_output(value=True)
  91. STEP3.switch_to_output(value=True)
  92. DIR3.switch_to_output(value=True)
  93. EN3.switch_to_output(value=True)
  94. STEP4.switch_to_output(value=True)
  95. DIR4.switch_to_output(value=True)
  96. EN4.switch_to_output(value=True)
  97. STEP5.switch_to_output(value=True)
  98. DIR5.switch_to_output(value=True)
  99. EN5.switch_to_output(value=True)
  100.  
  101. pin0.value = True
  102. pin1.value = True
  103. pin2.value = True
  104. pin3.value = True
  105. pin4.value = True
  106. pin5.value = True
  107. pin6.value = True
  108. pin7.value = True
  109. pin8.value = True
  110. pin9.value = True
  111. pin10.value = True
  112. pin11.value = True
  113. pin12.value = True
  114. pin13.value = True
  115. pin14.value = True
  116. pin15.value = True
  117.  
  118. kit.servo[0].actuation_range = 270
  119. kit.servo[1].actuation_range = 270
  120. kit.servo[2].actuation_range = 270
  121. kit.servo[3].actuation_range = 270
  122. kit.servo[4].actuation_range = 270
  123. kit.servo[5].actuation_range = 270
  124. kit.servo[6].actuation_range = 270
  125. kit.servo[7].actuation_range = 270
  126. kit.servo[8].actuation_range = 270
  127. kit.servo[9].actuation_range = 270
  128. kit.servo[10].actuation_range = 270
  129. kit.servo[11].actuation_range = 270
  130. kit.servo[12].actuation_range = 270
  131. kit.servo[13].actuation_range = 270
  132. kit.servo[14].actuation_range = 270
  133. kit.servo[15].actuation_range = 270
  134.  
  135. MAX_PWM=2650
  136. MIN_PWM=650
  137. kit.servo[0].set_pulse_width_range(MIN_PWM, MAX_PWM)
  138. kit.servo[1].set_pulse_width_range(MIN_PWM, MAX_PWM)
  139. kit.servo[2].set_pulse_width_range(MIN_PWM, MAX_PWM)
  140. kit.servo[3].set_pulse_width_range(MIN_PWM, MAX_PWM)
  141. kit.servo[4].set_pulse_width_range(MIN_PWM, MAX_PWM)
  142. kit.servo[5].set_pulse_width_range(MIN_PWM, MAX_PWM)
  143. kit.servo[6].set_pulse_width_range(MIN_PWM, MAX_PWM)
  144. kit.servo[7].set_pulse_width_range(MIN_PWM, MAX_PWM)
  145. kit.servo[8].set_pulse_width_range(MIN_PWM, MAX_PWM)
  146. kit.servo[9].set_pulse_width_range(MIN_PWM, MAX_PWM)
  147. kit.servo[10].set_pulse_width_range(MIN_PWM, MAX_PWM)
  148. kit.servo[11].set_pulse_width_range(MIN_PWM, MAX_PWM)
  149. kit.servo[12].set_pulse_width_range(MIN_PWM, MAX_PWM)
  150. kit.servo[13].set_pulse_width_range(MIN_PWM, MAX_PWM)
  151. kit.servo[14].set_pulse_width_range(MIN_PWM, MAX_PWM)
  152. kit.servo[15].set_pulse_width_range(MIN_PWM, MAX_PWM)
  153.  
  154. cap = cv2.VideoCapture(0)
  155. detector = cv2.QRCodeDetector()
  156.  
  157. # pins for stepper 1
  158. # coil_A_1_pin = 17
  159. # coil_A_2_pin = 27
  160. # coil_B_1_pin = 22
  161. # coil_B_2_pin = 10
  162. # GPIO.setup(coil_A_1_pin, GPIO.OUT)
  163. # GPIO.setup(coil_A_2_pin, GPIO.OUT)
  164. # GPIO.setup(coil_B_1_pin, GPIO.OUT)
  165. # GPIO.setup(coil_B_2_pin, GPIO.OUT)
  166.  
  167.  
  168.  
  169. class myThread (threading.Thread):
  170. def __init__(self, threadID, name, code):
  171. threading.Thread.__init__(self)
  172. self.threadID = threadID
  173. self.name = name
  174. self.code = code
  175. def run(self):
  176. print ("Starting " + self.name)
  177. if len(self.code) ==9:
  178. self.run_servo()
  179. elif len(self.code)==15:
  180. self.run_stepper()
  181. elif len(self.code)==10:
  182. self.run_relay()
  183. print ("Exiting " + self.name)
  184. def run_servo(self):
  185. print("Starting Servo: "+ str(self.code))
  186. print ("%s" % ( time.ctime(time.time())))
  187. self.servo_initial_delay = self.code[0:2]
  188. print("servo: Initial Delay", self.servo_initial_delay)
  189. self.servo_name = self.code[2:4]
  190. print ("Servo Name: ", self.servo_name)
  191. self.servo_multipler = self.code[4:6]
  192. print ("Servo Multiplier: ", self.servo_multipler)
  193. self.servo_angle = self.code[6:7]
  194. self.servo_angle = (ord(self.servo_angle)-96)*15
  195. print ("Servo Angle: ", self.servo_angle)
  196. self.servo_delay = int(self.code[7:9])
  197. if self.servo_name == "01":
  198. sleep(int(self.servo_initial_delay)) # sleep for initial delay seconds
  199. for i in range(int(self.servo_multipler)):
  200. kit.servo[0].angle = self.servo_angle # go to specified angle channel 0
  201. sleep(self.servo_delay)
  202. sleep(1.5)
  203. kit.servo[0].angle = 0 # go to 0 angle channel 0
  204. sleep(1.5)
  205. print("cycle:", i)
  206. elif self.servo_name == "02":
  207. sleep(int(self.servo_initial_delay)) # sleep for initial delay seconds
  208. for i in range(int(self.servo_multipler)):
  209. kit.servo[1].angle = self.servo_angle # go to specified angle channel 0
  210. sleep(self.servo_delay)
  211. sleep(1.5)
  212. kit.servo[1].angle = 0 # go to 0 angle channel 0
  213. sleep(1.5)
  214. elif self.servo_name == "03":
  215. sleep(int(self.servo_initial_delay)) # sleep for initial delay seconds
  216. for i in range(int(self.servo_multipler)):
  217. kit.servo[2].angle = self.servo_angle # go to specified angle channel 0
  218. sleep(self.servo_delay)
  219. sleep(1.5)
  220. kit.servo[2].angle = 0 # go to 0 angle channel 0
  221. sleep(1.5)
  222. elif self.servo_name == "04":
  223. sleep(int(self.servo_initial_delay)) # sleep for initial delay seconds
  224. for i in range(int(self.servo_multipler)):
  225. kit.servo[3].angle = self.servo_angle # go to specified angle channel 0
  226. sleep(self.servo_delay)
  227. sleep(1.5)
  228. kit.servo[3].angle = 0 # go to 0 angle channel 0
  229. sleep(1.5)
  230. elif self.servo_name == "05":
  231. sleep(int(self.servo_initial_delay)) # sleep for initial delay seconds
  232. for i in range(int(self.servo_multipler)):
  233. kit.servo[4].angle = self.servo_angle # go to specified angle channel 0
  234. sleep(self.servo_delay)
  235. sleep(1.5)
  236. kit.servo[4].angle = 0 # go to 0 angle channel 0
  237. sleep(1.5)
  238. elif self.servo_name == "06":
  239. sleep(int(self.servo_initial_delay)) # sleep for initial delay seconds
  240. for i in range(int(self.servo_multipler)):
  241. kit.servo[5].angle = self.servo_angle # go to specified angle channel 0
  242. sleep(self.servo_delay)
  243. sleep(1.5)
  244. kit.servo[5].angle = 0 # go to 0 angle channel 0
  245. sleep(1.5)
  246. elif self.servo_name == "07":
  247. sleep(int(self.servo_initial_delay)) # sleep for initial delay seconds
  248. for i in range(int(self.servo_multipler)):
  249. kit.servo[6].angle = self.servo_angle # go to specified angle channel 0
  250. sleep(self.servo_delay)
  251. sleep(1.5)
  252. kit.servo[6].angle = 0 # go to 0 angle channel 0
  253. sleep(1.5)
  254. elif self.servo_name == "08":
  255. sleep(int(self.servo_initial_delay)) # sleep for initial delay seconds
  256. for i in range(int(self.servo_multipler)):
  257. kit.servo[7].angle = self.servo_angle # go to specified angle channel 0
  258. sleep(self.servo_delay)
  259. sleep(1.5)
  260. kit.servo[7].angle = 0 # go to 0 angle channel 0
  261. sleep(1.5)
  262. elif self.servo_name == "09":
  263. sleep(int(self.servo_initial_delay)) # sleep for initial delay seconds
  264. for i in range(int(self.servo_multipler)):
  265. kit.servo[8].angle = self.servo_angle # go to specified angle channel 0
  266. sleep(self.servo_delay)
  267. sleep(1.5)
  268. kit.servo[8].angle = 0 # go to 0 angle channel 0
  269. sleep(1.5)
  270. elif self.servo_name == "10":
  271. sleep(int(self.servo_initial_delay)) # sleep for initial delay seconds
  272. for i in range(int(self.servo_multipler)):
  273. kit.servo[9].angle = self.servo_angle # go to specified angle channel 0
  274. sleep(self.servo_delay)
  275. sleep(1.5)
  276. kit.servo[9].angle = 0 # go to 0 angle channel 0
  277. sleep(1.5)
  278. elif self.servo_name == "11":
  279. sleep(int(self.servo_initial_delay)) # sleep for initial delay seconds
  280. for i in range(int(self.servo_multipler)):
  281. kit.servo[10].angle = self.servo_angle # go to specified angle channel 0
  282. sleep(self.servo_delay)
  283. sleep(1.5)
  284. kit.servo[10].angle = 0 # go to 0 angle channel 0
  285. sleep(1.5)
  286. elif self.servo_name == "12":
  287. sleep(int(self.servo_initial_delay)) # sleep for initial delay seconds
  288. for i in range(int(self.servo_multipler)):
  289. kit.servo[11].angle = self.servo_angle # go to specified angle channel 0
  290. sleep(self.servo_delay)
  291. sleep(1.5)
  292. kit.servo[11].angle = 0 # go to 0 angle channel 0
  293. sleep(1.5)
  294. elif self.servo_name == "13":
  295. sleep(int(self.servo_initial_delay)) # sleep for initial delay seconds
  296. for i in range(int(self.servo_multipler)):
  297. kit.servo[12].angle = self.servo_angle # go to specified angle channel 0
  298. sleep(self.servo_delay)
  299. sleep(1.5)
  300. kit.servo[12].angle = 0 # go to 0 angle channel
  301. sleep(1.5)
  302. elif self.servo_name == "14":
  303. sleep(int(self.servo_initial_delay)) # sleep for initial delay seconds
  304. for i in range(int(self.servo_multipler)):
  305. kit.servo[13].angle = self.servo_angle # go to specified angle channel 0
  306. sleep(self.servo_delay)
  307. sleep(1.5)
  308. kit.servo[13].angle = 0 # go to 0 angle channel 0
  309. sleep(1.5)
  310. elif self.servo_name == "15":
  311. sleep(int(self.servo_initial_delay)) # sleep for initial delay seconds
  312. for i in range(int(self.servo_multipler)):
  313. kit.servo[14].angle = self.servo_angle # go to specified angle channel 0
  314. sleep(self.servo_delay)
  315. sleep(1.5)
  316. kit.servo[14].angle = 0 # go to 0 angle channel 0
  317. sleep(1.5)
  318. elif self.servo_name == "16":
  319. sleep(int(self.servo_initial_delay)) # sleep for initial delay seconds
  320. for i in range(int(self.servo_multipler)):
  321. kit.servo[15].angle = self.servo_angle # go to specified angle channel 0
  322. sleep(self.servo_delay)
  323. sleep(1.5)
  324. kit.servo[15].angle = 0 # go to 0 angle channel 0
  325. sleep(1.5)
  326. def run_relay(self):
  327. print("Starting Relay: "+ str(self.code))
  328. print ("%s" % ( time.ctime(time.time())))
  329. self.relay_initial_delay = self.code[0:2]
  330. print("Relay: Initial Delay", self.relay_initial_delay)
  331. self.relay_name = self.code[2:4]
  332. print("Relay Name: ", self.relay_name)
  333. self.relay_seconds = self.code[4:6]
  334. print("Relay Seconnds: ", self.relay_seconds)
  335. self.relay_minutes = self.code[7:9]
  336. print("Relay Minutes: ", self.relay_minutes)
  337. self.relay_seconds = int(self.relay_seconds) + int(self.relay_minutes)*60
  338. if self.relay_name == "01":
  339. sleep(int(self.relay_initial_delay)) # sleep for initial delay
  340. pin0.value = False
  341. sleep(self.relay_seconds)
  342. pin0.value = True
  343. elif self.relay_name == "02":
  344. sleep(int(self.relay_initial_delay)) # sleep for initial delay
  345. pin1.value = False
  346. sleep(self.relay_seconds)
  347. pin1.value = True
  348. elif self.relay_name == "03":
  349. sleep(int(self.relay_initial_delay)) # sleep for initial delay
  350. pin2.value = False
  351. sleep(self.relay_seconds)
  352. pin2.value = True
  353. elif self.relay_name == "04":
  354. sleep(int(self.relay_initial_delay)) # sleep for initial delay
  355. pin3.value = False
  356. sleep(self.relay_seconds)
  357. pin3.value = True
  358. elif self.relay_name == "05":
  359. sleep(int(self.relay_initial_delay)) # sleep for initial delay
  360. pin4.value = False
  361. sleep(self.relay_seconds)
  362. pin4.value = True
  363. elif self.relay_name == "06":
  364. sleep(int(self.relay_initial_delay)) # sleep for initial delay
  365. pin5.value = False
  366. sleep(self.relay_seconds)
  367. pin5.value = True
  368. elif self.relay_name == "07":
  369. sleep(int(self.relay_initial_delay)) # sleep for initial delay
  370. pin6.value = False
  371. sleep(self.relay_seconds)
  372. pin6.value = True
  373. elif self.relay_name == "08":
  374. sleep(int(self.relay_initial_delay)) # sleep for initial delay
  375. pin7.value = False
  376. sleep(self.relay_seconds)
  377. pin7.value = True
  378. elif self.relay_name == "09":
  379. sleep(int(self.relay_initial_delay)) # sleep for initial delay
  380. pin8.value = False
  381. sleep(self.relay_seconds)
  382. pin8.value = True
  383. elif self.relay_name == "10":
  384. sleep(int(self.relay_initial_delay)) # sleep for initial delay
  385. pin9.value = False
  386. sleep(self.relay_seconds)
  387. pin9.value = True
  388. elif self.relay_name == "11":
  389. sleep(int(self.relay_initial_delay)) # sleep for initial delay
  390. pin10.value = False
  391. sleep(self.relay_seconds)
  392. pin10.value = True
  393. elif self.relay_name == "12":
  394. sleep(int(self.relay_initial_delay)) # sleep for initial delay
  395. pin11.value = False
  396. sleep(self.relay_seconds)
  397. pin11.value = True
  398. elif self.relay_name == "13":
  399. sleep(int(self.relay_initial_delay)) # sleep for initial delay
  400. pin12.value = False
  401. sleep(self.relay_seconds)
  402. pin12.value = True
  403. elif self.relay_name == "14":
  404. sleep(int(self.relay_initial_delay)) # sleep for initial delay
  405. pin13.value = False
  406. sleep(self.relay_seconds)
  407. pin13.value = True
  408. elif self.relay_name == "15":
  409. sleep(int(self.relay_initial_delay)) # sleep for initial delay
  410. pin14.value = False
  411. sleep(self.relay_seconds)
  412. pin14.value = True
  413. elif self.relay_name == "16":
  414. sleep(int(self.relay_initial_delay)) # sleep for initial delay
  415. pin15.value = False
  416. sleep(self.relay_seconds)
  417. pin15.value = True
  418. def run_stepper(self):
  419. print("Starting Stepper: "+ str(self.code))
  420. print ("%s" % ( time.ctime(time.time())))
  421. self.stepper_initial_delay = self.code[0:2]
  422. print("Stepper: Initial Delay", self.stepper_initial_delay)
  423. self.stepper_name = self.code[2:4]
  424. print("Stepper Name: ", self.stepper_name)
  425. self.stepper_rotation_clockwise = self.code[5:7]
  426. print("Stepper: Clockwise Rotation : ", self.stepper_rotation_clockwise)
  427. self.stepper_hold_seconds = self.code[8:10]
  428. print("Stepper: Hold seconds: ", self.stepper_hold_seconds)
  429. self.stepper_rotation_counter_clockwise = self.code[10:12]
  430. print("Stepper: Counter Clockwise Rotation: ", self.stepper_rotation_counter_clockwise)
  431. self.Stepper_repeat = self.code[14]
  432. print("Stepper: Repeat: ", self.Stepper_repeat)
  433. if self.stepper_name == "01": # Black(A+), Green(A-), Red(B+), Blue(B-)
  434. self.delay = 0.001
  435. self.steps = 200
  436. sleep(int(self.stepper_initial_delay)) # sleep for initial delay
  437. EN1.value = False
  438. for i in range(int(self.Stepper_repeat)+1):
  439. DIR1.value = True
  440. for j in range(self.steps*int(self.stepper_rotation_clockwise)): # Run the setps for clockwise
  441. # STEP1.value = True
  442. GPIO.output(17, 1)
  443. time.sleep(self.delay)
  444. # STEP1.value = False
  445. GPIO.output(17, 0)
  446. time.sleep(self.delay)
  447. sleep(int(self.stepper_hold_seconds)) # Hold before counter clockwise
  448. DIR1.value = False
  449. for j in range(self.steps*int(self.stepper_rotation_counter_clockwise)): # Reverse previous step sequence to reverse motor direction
  450. # STEP1.value = True
  451. GPIO.output(17, 1)
  452. time.sleep(self.delay)
  453. # STEP1.value = False
  454. GPIO.output(17, 0)
  455. time.sleep(self.delay)
  456. EN1.value = True
  457. elif self.stepper_name == "02":
  458. self.delay = 0.001
  459. self.steps = 200
  460. sleep(int(self.stepper_initial_delay)) # sleep for initial delay
  461. EN2.value = False
  462. for i in range(int(self.Stepper_repeat)+1):
  463. DIR2.value = True
  464. for j in range(self.steps*int(self.stepper_rotation_clockwise)): # Run the setps for clockwise
  465. # STEP2.value = True
  466. GPIO.output(27, 1)
  467. time.sleep(self.delay)
  468. # STEP2.value = False
  469. GPIO.output(27, 0)
  470. time.sleep(self.delay)
  471. sleep(int(self.stepper_hold_seconds)) # Hold before counter clockwise
  472. DIR2.value = False
  473. for j in range(self.steps*int(self.stepper_rotation_counter_clockwise)): # Reverse previous step sequence to reverse motor direction
  474. # STEP2.value = True
  475. GPIO.output(27, 1)
  476. time.sleep(self.delay)
  477. # STEP2.value = False
  478. GPIO.output(27, 0)
  479. time.sleep(self.delay)
  480. EN2.value = True
  481. elif self.stepper_name == "03":
  482. print("No pins defined")
  483.  
  484. '''
  485. def run_servo(code):
  486. print("Starting Servo: "+ str(code))
  487. print ("%s" % ( time.ctime(time.time())))
  488. servo_initial_delay = code[0:2]
  489. print("servo: Initial Delay", servo_initial_delay)
  490. servo_name = code[2:4]
  491. print ("Servo Name: ", servo_name)
  492. servo_multipler = code[4:6]
  493. print ("Servo Multiplier: ", servo_multipler)
  494. servo_angle = code[6:7]
  495. servo_angle = (ord(servo_angle)-96)*15
  496. print ("Servo Angle: ", servo_angle)
  497. servo_delay = int(code[7:9])
  498. if servo_name == "01":
  499. sleep(int(servo_initial_delay)) # sleep for initial delay seconds
  500. for i in range(int(servo_multipler)):
  501. kit.servo[0].angle = servo_angle # go to specified angle channel 0
  502. sleep(servo_delay)
  503. kit.servo[0].angle = 0 # go to 0 angle channel 0
  504. elif servo_name == "02":
  505. sleep(int(servo_initial_delay)) # sleep for initial delay seconds
  506. for i in range(int(servo_multipler)):
  507. kit.servo[1].angle = servo_angle # go to specified angle channel 0
  508. sleep(servo_delay)
  509. kit.servo[1].angle = 0 # go to 0 angle channel 0
  510. elif servo_name == "03":
  511. sleep(int(servo_initial_delay)) # sleep for initial delay seconds
  512. for i in range(int(servo_multipler)):
  513. kit.servo[2].angle = servo_angle # go to specified angle channel 0
  514. sleep(servo_delay)
  515. kit.servo[2].angle = 0 # go to 0 angle channel 0
  516. elif servo_name == "04":
  517. sleep(int(servo_initial_delay)) # sleep for initial delay seconds
  518. for i in range(int(servo_multipler)):
  519. kit.servo[3].angle = servo_angle # go to specified angle channel 0
  520. sleep(servo_delay)
  521. kit.servo[3].angle = 0 # go to 0 angle channel 0
  522. elif servo_name == "05":
  523. sleep(int(servo_initial_delay)) # sleep for initial delay seconds
  524. for i in range(int(servo_multipler)):
  525. kit.servo[4].angle = servo_angle # go to specified angle channel 0
  526. sleep(servo_delay)
  527. kit.servo[4].angle = 0 # go to 0 angle channel 0
  528. elif servo_name == "06":
  529. sleep(int(servo_initial_delay)) # sleep for initial delay seconds
  530. for i in range(int(servo_multipler)):
  531. kit.servo[5].angle = servo_angle # go to specified angle channel 0
  532. sleep(servo_delay)
  533. kit.servo[5].angle = 0 # go to 0 angle channel 0
  534. elif servo_name == "07":
  535. sleep(int(servo_initial_delay)) # sleep for initial delay seconds
  536. for i in range(int(servo_multipler)):
  537. kit.servo[6].angle = servo_angle # go to specified angle channel 0
  538. sleep(servo_delay)
  539. kit.servo[6].angle = 0 # go to 0 angle channel 0
  540. elif servo_name == "08":
  541. sleep(int(servo_initial_delay)) # sleep for initial delay seconds
  542. for i in range(int(servo_multipler)):
  543. kit.servo[7].angle = servo_angle # go to specified angle channel 0
  544. sleep(servo_delay)
  545. kit.servo[7].angle = 0 # go to 0 angle channel 0
  546. elif servo_name == "09":
  547. sleep(int(servo_initial_delay)) # sleep for initial delay seconds
  548. for i in range(int(servo_multipler)):
  549. kit.servo[8].angle = servo_angle # go to specified angle channel 0
  550. sleep(servo_delay)
  551. kit.servo[8].angle = 0 # go to 0 angle channel 0
  552. elif servo_name == "10":
  553. sleep(int(servo_initial_delay)) # sleep for initial delay seconds
  554. for i in range(int(servo_multipler)):
  555. kit.servo[9].angle = servo_angle # go to specified angle channel 0
  556. sleep(servo_delay)
  557. kit.servo[9].angle = 0 # go to 0 angle channel 0
  558. elif servo_name == "11":
  559. sleep(int(servo_initial_delay)) # sleep for initial delay seconds
  560. for i in range(int(servo_multipler)):
  561. kit.servo[10].angle = servo_angle # go to specified angle channel 0
  562. sleep(servo_delay)
  563. kit.servo[10].angle = 0 # go to 0 angle channel 0
  564. elif servo_name == "12":
  565. sleep(int(servo_initial_delay)) # sleep for initial delay seconds
  566. for i in range(int(servo_multipler)):
  567. kit.servo[11].angle = servo_angle # go to specified angle channel 0
  568. sleep(servo_delay)
  569. kit.servo[11].angle = 0 # go to 0 angle channel 0
  570. elif servo_name == "13":
  571. sleep(int(servo_initial_delay)) # sleep for initial delay seconds
  572. for i in range(int(servo_multipler)):
  573. kit.servo[12].angle = servo_angle # go to specified angle channel 0
  574. sleep(servo_delay)
  575. kit.servo[12].angle = 0 # go to 0 angle channel 0
  576. elif servo_name == "14":
  577. sleep(int(servo_initial_delay)) # sleep for initial delay seconds
  578. for i in range(int(servo_multipler)):
  579. kit.servo[13].angle = servo_angle # go to specified angle channel 0
  580. sleep(servo_delay)
  581. kit.servo[13].angle = 0 # go to 0 angle channel 0
  582. elif servo_name == "15":
  583. sleep(int(servo_initial_delay)) # sleep for initial delay seconds
  584. for i in range(int(servo_multipler)):
  585. kit.servo[14].angle = servo_angle # go to specified angle channel 0
  586. sleep(servo_delay)
  587. kit.servo[14].angle = 0 # go to 0 angle channel 0
  588. elif servo_name == "16":
  589. sleep(int(servo_initial_delay)) # sleep for initial delay seconds
  590. for i in range(int(servo_multipler)):
  591. kit.servo[15].angle = servo_angle # go to specified angle channel 0
  592. sleep(servo_delay)
  593. kit.servo[15].angle = 0 # go to 0 angle channel 0
  594. '''
  595.  
  596. def setStep(w1, w2, w3, w4): # Function for step sequence for Stepper Motor
  597. pass
  598. # GPIO.output(coil_A_1_pin, w1)
  599. # GPIO.output(coil_A_2_pin, w2)
  600. # GPIO.output(coil_B_1_pin, w3)
  601. # GPIO.output(coil_B_2_pin, w4)
  602. '''
  603. def run_stepper(code):
  604. print("Starting Stepper: "+ str(code))
  605. print ("%s" % ( time.ctime(time.time())))
  606. stepper_initial_delay = code[0:2]
  607. print("Stepper: Initial Delay", stepper_initial_delay)
  608. stepper_name = code[2:4]
  609. print("Stepper Name: ", stepper_name)
  610. stepper_rotation_clockwise = code[5:7]
  611. print("Stepper: Clockwise Rotation : ", stepper_rotation_clockwise)
  612. stepper_hold_seconds = code[8:10]
  613. print("Stepper: Hold seconds: ", stepper_hold_seconds)
  614. stepper_rotation_counter_clockwise = code[10:12]
  615. print("Stepper: Counter Clockwise Rotation: ", stepper_rotation_counter_clockwise)
  616. Stepper_repeat = code[14]
  617. print("Stepper: Repeat: ", Stepper_repeat)
  618. if stepper_name == "01": # Black(A+), Green(A-), Red(B+), Blue(B-)
  619. delay = 0.0055
  620. steps = 200
  621. sleep(int(stepper_initial_delay)) # sleep for initial delay
  622. for i in range(int(Stepper_repeat)):
  623. for j in range(0, steps): # Run the setps for clockwise
  624. setStep(1,0,1,0)
  625. time.sleep(delay)
  626. setStep(0,1,1,0)
  627. time.sleep(delay)
  628. setStep(0,1,0,1)
  629. time.sleep(delay)
  630. setStep(1,0,0,1)
  631. time.sleep(delay)
  632. sleep(stepper_hold_seconds) # Hold before counter clockwise
  633. for j in range(0, steps): # Reverse previous step sequence to reverse motor direction
  634. setStep(1,0,0,1)
  635. time.sleep(delay)
  636. setStep(0,1,0,1)
  637. time.sleep(delay)
  638. setStep(0,1,1,0)
  639. time.sleep(delay)
  640. setStep(1,0,1,0)
  641. time.sleep(delay)
  642. elif stepper_name == "02":
  643. print("No pins defined")
  644. elif stepper_name == "03":
  645. print("No pins defined")
  646. '''
  647. '''
  648. def run_relay(code):
  649. print("Starting Relay: "+ str(code))
  650. print ("%s" % ( time.ctime(time.time())))
  651. relay_initial_delay = code[0:2]
  652. print("Relay: Initial Delay", relay_initial_delay)
  653. relay_name = code[2:4]
  654. print("Relay Name: ", relay_name)
  655. relay_seconds = code[4:6]
  656. print("Relay Seconnds: ", relay_seconds)
  657. relay_minutes = code[7:9]
  658. print("Relay Minutes: ", relay_minutes)
  659. relay_seconds = int(relay_seconds) + int(relay_minutes)*60
  660. if relay_name == "01":
  661. sleep(int(relay_initial_delay)) # sleep for initial delay
  662. pin0.value = False
  663. sleep(relay_seconds)
  664. pin0.value = True
  665. elif relay_name == "02":
  666. sleep(int(relay_initial_delay)) # sleep for initial delay
  667. pin1.value = False
  668. sleep(relay_seconds)
  669. pin1.value = True
  670. elif relay_name == "03":
  671. sleep(int(relay_initial_delay)) # sleep for initial delay
  672. pin2.value = False
  673. sleep(relay_seconds)
  674. pin2.value = True
  675. elif relay_name == "04":
  676. sleep(int(relay_initial_delay)) # sleep for initial delay
  677. pin3.value = False
  678. sleep(relay_seconds)
  679. pin3.value = True
  680. elif relay_name == "05":
  681. sleep(int(relay_initial_delay)) # sleep for initial delay
  682. pin4.value = False
  683. sleep(relay_seconds)
  684. pin4.value = True
  685. elif relay_name == "06":
  686. sleep(int(relay_initial_delay)) # sleep for initial delay
  687. pin5.value = False
  688. sleep(relay_seconds)
  689. pin5.value = True
  690. elif relay_name == "07":
  691. sleep(int(relay_initial_delay)) # sleep for initial delay
  692. pin6.value = False
  693. sleep(relay_seconds)
  694. pin6.value = True
  695. elif relay_name == "08":
  696. sleep(int(relay_initial_delay)) # sleep for initial delay
  697. pin7.value = False
  698. sleep(relay_seconds)
  699. pin7.value = True
  700. elif relay_name == "09":
  701. sleep(int(relay_initial_delay)) # sleep for initial delay
  702. pin8.value = False
  703. sleep(relay_seconds)
  704. pin8.value = True
  705. elif relay_name == "10":
  706. sleep(int(relay_initial_delay)) # sleep for initial delay
  707. pin9.value = False
  708. sleep(relay_seconds)
  709. pin9.value = True
  710. elif relay_name == "11":
  711. sleep(int(relay_initial_delay)) # sleep for initial delay
  712. pin10.value = False
  713. sleep(relay_seconds)
  714. pin10.value = True
  715. elif relay_name == "12":
  716. sleep(int(relay_initial_delay)) # sleep for initial delay
  717. pin11.value = False
  718. sleep(relay_seconds)
  719. pin11.value = True
  720. elif relay_name == "13":
  721. sleep(int(relay_initial_delay)) # sleep for initial delay
  722. pin12.value = False
  723. sleep(relay_seconds)
  724. pin12.value = True
  725. elif relay_name == "14":
  726. sleep(int(relay_initial_delay)) # sleep for initial delay
  727. pin13.value = False
  728. sleep(relay_seconds)
  729. pin13.value = True
  730. elif relay_name == "15":
  731. sleep(int(relay_initial_delay)) # sleep for initial delay
  732. pin14.value = False
  733. sleep(relay_seconds)
  734. pin14.value = True
  735. elif relay_name == "16":
  736. sleep(int(relay_initial_delay)) # sleep for initial delay
  737. pin15.value = False
  738. sleep(relay_seconds)
  739. pin15.value = True
  740. '''
  741. def run_motor(data):
  742. print("data found: ", data)
  743. string = data.replace(" ", "")
  744. list = string.split(",")
  745. threads = []
  746. # Create new threads
  747. for i in range(len(list)):
  748. thread = myThread(i, "Thread-"+str(i), list[i])
  749. threads.append(thread)
  750. # Start new Threads
  751. for i in range(len(list)):
  752. threads[i].start()
  753. # join threads
  754. for t in threads:
  755. t.join()
  756. print ("Exiting Main Thread")
  757.  
  758. return
  759.  
  760. while True:
  761. _, img = cap.read()
  762. data, bbox, _ = detector.detectAndDecode(img)
  763.  
  764. if(bbox is not None):
  765. for i in range(len(bbox)):
  766. cv2.line(img, tuple(bbox[i][0]), tuple(bbox[(i+1) % len(bbox)][0]), color=(255,
  767. 0, 255), thickness=2)
  768. cv2.putText(img, data, (int(bbox[0][0][0]), int(bbox[0][0][1]) - 10), cv2.FONT_HERSHEY_SIMPLEX,
  769. 0.5, (0, 255, 0), 2)
  770. if data:
  771. print(data)
  772. end=time.time()
  773. if((end-start)>3 or prevdata!=data):
  774. run_motor(data)
  775. start = time.time()
  776. prevdata=data
  777. cv2.imshow("code detector", img)
  778. if(cv2.waitKey(1) == ord("q")):
  779. break
  780. cap.release()
  781. cv2.destroyAllWindows()
  782. GPIO.cleanup()
  783. '''
  784. data = "000102r00,000902r00,001602r00"
  785. sleep(1)
  786. print("data found: ", data)
  787. string = data.replace(" ", "")
  788. list = string.split(",")
  789. threads = []
  790. # Create new threads
  791. for i in range(len(list)):
  792. thread = myThread(i, "Thread-"+str(i), list[i])
  793. threads.append(thread)
  794. # Start new Threads
  795. for i in range(len(list)):
  796. threads[i].start()
  797. # join threads
  798. for t in threads:
  799. t.join()
  800. print ("Exiting Main Thread")
  801. '''
  802.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement