Motor und Lidar Steuerung
This commit is contained in:
59
PoinCloudWeb.Scanner/StepperSteuerung/StepperSteuerung.ino
Normal file
59
PoinCloudWeb.Scanner/StepperSteuerung/StepperSteuerung.ino
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
#include <AFMotor.h>
|
||||||
|
|
||||||
|
double degreeY = 0;
|
||||||
|
String rxData = ""; //Empfangen
|
||||||
|
|
||||||
|
// Connect a stepper motor with 200 steps per revolution (1.8 degree)
|
||||||
|
// to motor port #1 (M1 and M2)
|
||||||
|
AF_Stepper motor(200, 1);
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
|
||||||
|
motor.setSpeed(60); // 60 rpm
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
// send data only when you receive data:
|
||||||
|
if (Serial.available() > 0) {
|
||||||
|
// read the incoming byte:
|
||||||
|
rxData = Serial.readString();
|
||||||
|
String command = rxData.substring(rxData.indexOf('<')+1,rxData.indexOf('>'));
|
||||||
|
if (command == "set"){
|
||||||
|
String temp = rxData.substring(rxData.indexOf("><")+2,rxData.indexOf('>',rxData.indexOf("><")+2));
|
||||||
|
Serial.println(moveMotor(temp.toDouble()));
|
||||||
|
}
|
||||||
|
else if(command == "get")
|
||||||
|
Serial.println("<get><" + (String)degreeY + ">");
|
||||||
|
else if(command == "reset"){
|
||||||
|
Serial.println(moveMotor(0));
|
||||||
|
}
|
||||||
|
else if(command == "zero"){
|
||||||
|
degreeY = 0;
|
||||||
|
Serial.println("<set><zero>");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
Serial.println("<error><command>");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
String moveMotor(double y){
|
||||||
|
if(y < degreeY){
|
||||||
|
motor.step((int)calculateStepps(degreeY - y), BACKWARD, INTERLEAVE); //"interleave" means that it alternates between single and double to get twice the resolution (but of course its half the speed)
|
||||||
|
motor.release(); // Strom sparen und Überhitzung des Controllers vorbeugen!
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
motor.step((int)calculateStepps(y - degreeY), FORWARD, INTERLEAVE);
|
||||||
|
motor.release();
|
||||||
|
}
|
||||||
|
degreeY = y;
|
||||||
|
return "<move><" + (String)y + ">";
|
||||||
|
}
|
||||||
|
|
||||||
|
double calculateStepps(double y){
|
||||||
|
double temp = 0;
|
||||||
|
if(y < degreeY)
|
||||||
|
temp = degreeY - y;
|
||||||
|
else
|
||||||
|
temp = y - degreeY;
|
||||||
|
return (y / 1.8) * 2; // *2 wegen interleave stepps / Falls Untersetzung, multiplikator anpassen!
|
||||||
|
}
|
||||||
360
PoinCloudWeb.Scanner/datafile.txt
Normal file
360
PoinCloudWeb.Scanner/datafile.txt
Normal file
@@ -0,0 +1,360 @@
|
|||||||
|
a:0 d:230
|
||||||
|
a:1 d:469
|
||||||
|
a:2 d:466
|
||||||
|
a:3 d:431
|
||||||
|
a:4 d:319
|
||||||
|
a:5 d:192
|
||||||
|
a:6 d:362
|
||||||
|
a:7 d:473
|
||||||
|
a:8 d:474
|
||||||
|
a:9 d:480
|
||||||
|
a:10 d:475
|
||||||
|
a:11 d:476
|
||||||
|
a:12 d:482
|
||||||
|
a:13 d:480
|
||||||
|
a:14 d:482
|
||||||
|
a:15 d:484
|
||||||
|
a:16 d:446
|
||||||
|
a:17 d:489
|
||||||
|
a:18 d:491
|
||||||
|
a:19 d:495
|
||||||
|
a:20 d:182
|
||||||
|
a:21 d:156
|
||||||
|
a:22 d:0
|
||||||
|
a:23 d:0
|
||||||
|
a:24 d:0
|
||||||
|
a:25 d:256
|
||||||
|
a:26 d:514
|
||||||
|
a:27 d:516
|
||||||
|
a:28 d:522
|
||||||
|
a:29 d:527
|
||||||
|
a:30 d:535
|
||||||
|
a:31 d:536
|
||||||
|
a:32 d:546
|
||||||
|
a:33 d:550
|
||||||
|
a:34 d:561
|
||||||
|
a:35 d:570
|
||||||
|
a:36 d:580
|
||||||
|
a:37 d:587
|
||||||
|
a:38 d:591
|
||||||
|
a:39 d:607
|
||||||
|
a:40 d:631
|
||||||
|
a:41 d:641
|
||||||
|
a:42 d:642
|
||||||
|
a:43 d:663
|
||||||
|
a:44 d:677
|
||||||
|
a:45 d:689
|
||||||
|
a:46 d:691
|
||||||
|
a:47 d:721
|
||||||
|
a:48 d:735
|
||||||
|
a:49 d:753
|
||||||
|
a:50 d:739
|
||||||
|
a:51 d:782
|
||||||
|
a:52 d:800
|
||||||
|
a:53 d:792
|
||||||
|
a:54 d:840
|
||||||
|
a:55 d:390
|
||||||
|
a:56 d:0
|
||||||
|
a:57 d:533
|
||||||
|
a:58 d:64
|
||||||
|
a:59 d:165
|
||||||
|
a:60 d:314
|
||||||
|
a:61 d:121
|
||||||
|
a:62 d:0
|
||||||
|
a:63 d:315
|
||||||
|
a:64 d:0
|
||||||
|
a:65 d:118
|
||||||
|
a:66 d:0
|
||||||
|
a:67 d:107
|
||||||
|
a:68 d:43
|
||||||
|
a:69 d:41
|
||||||
|
a:70 d:127
|
||||||
|
a:71 d:128
|
||||||
|
a:72 d:55
|
||||||
|
a:73 d:111
|
||||||
|
a:74 d:94
|
||||||
|
a:75 d:125
|
||||||
|
a:76 d:139
|
||||||
|
a:77 d:141
|
||||||
|
a:78 d:144
|
||||||
|
a:79 d:43
|
||||||
|
a:80 d:0
|
||||||
|
a:81 d:0
|
||||||
|
a:82 d:0
|
||||||
|
a:83 d:0
|
||||||
|
a:84 d:0
|
||||||
|
a:85 d:0
|
||||||
|
a:86 d:60
|
||||||
|
a:87 d:225
|
||||||
|
a:88 d:103
|
||||||
|
a:89 d:47
|
||||||
|
a:90 d:237
|
||||||
|
a:91 d:277
|
||||||
|
a:92 d:597
|
||||||
|
a:93 d:556
|
||||||
|
a:94 d:686
|
||||||
|
a:95 d:648
|
||||||
|
a:96 d:674
|
||||||
|
a:97 d:672
|
||||||
|
a:98 d:597
|
||||||
|
a:99 d:665
|
||||||
|
a:100 d:135
|
||||||
|
a:101 d:625
|
||||||
|
a:102 d:1079
|
||||||
|
a:103 d:1089
|
||||||
|
a:104 d:1117
|
||||||
|
a:105 d:1108
|
||||||
|
a:106 d:1111
|
||||||
|
a:107 d:1010
|
||||||
|
a:108 d:1095
|
||||||
|
a:109 d:1091
|
||||||
|
a:110 d:1020
|
||||||
|
a:111 d:506
|
||||||
|
a:112 d:726
|
||||||
|
a:113 d:1464
|
||||||
|
a:114 d:1464
|
||||||
|
a:115 d:1519
|
||||||
|
a:116 d:1482
|
||||||
|
a:117 d:1501
|
||||||
|
a:118 d:1350
|
||||||
|
a:119 d:1606
|
||||||
|
a:120 d:1615
|
||||||
|
a:121 d:1634
|
||||||
|
a:122 d:1654
|
||||||
|
a:123 d:1665
|
||||||
|
a:124 d:1692
|
||||||
|
a:125 d:1720
|
||||||
|
a:126 d:1735
|
||||||
|
a:127 d:1761
|
||||||
|
a:128 d:1788
|
||||||
|
a:129 d:1828
|
||||||
|
a:130 d:1737
|
||||||
|
a:131 d:1783
|
||||||
|
a:132 d:1405
|
||||||
|
a:133 d:1134
|
||||||
|
a:134 d:1054
|
||||||
|
a:135 d:666
|
||||||
|
a:136 d:304
|
||||||
|
a:137 d:451
|
||||||
|
a:138 d:455
|
||||||
|
a:139 d:461
|
||||||
|
a:140 d:470
|
||||||
|
a:141 d:475
|
||||||
|
a:142 d:482
|
||||||
|
a:143 d:358
|
||||||
|
a:144 d:411
|
||||||
|
a:145 d:418
|
||||||
|
a:146 d:372
|
||||||
|
a:147 d:222
|
||||||
|
a:148 d:401
|
||||||
|
a:149 d:401
|
||||||
|
a:150 d:403
|
||||||
|
a:151 d:406
|
||||||
|
a:152 d:409
|
||||||
|
a:153 d:411
|
||||||
|
a:154 d:375
|
||||||
|
a:155 d:335
|
||||||
|
a:156 d:376
|
||||||
|
a:157 d:201
|
||||||
|
a:158 d:267
|
||||||
|
a:159 d:419
|
||||||
|
a:160 d:429
|
||||||
|
a:161 d:567
|
||||||
|
a:162 d:558
|
||||||
|
a:163 d:552
|
||||||
|
a:164 d:458
|
||||||
|
a:165 d:494
|
||||||
|
a:166 d:450
|
||||||
|
a:167 d:465
|
||||||
|
a:168 d:476
|
||||||
|
a:169 d:383
|
||||||
|
a:170 d:297
|
||||||
|
a:171 d:396
|
||||||
|
a:172 d:395
|
||||||
|
a:173 d:393
|
||||||
|
a:174 d:391
|
||||||
|
a:175 d:388
|
||||||
|
a:176 d:387
|
||||||
|
a:177 d:387
|
||||||
|
a:178 d:386
|
||||||
|
a:179 d:386
|
||||||
|
a:180 d:386
|
||||||
|
a:181 d:387
|
||||||
|
a:182 d:387
|
||||||
|
a:183 d:388
|
||||||
|
a:184 d:388
|
||||||
|
a:185 d:389
|
||||||
|
a:186 d:391
|
||||||
|
a:187 d:393
|
||||||
|
a:188 d:394
|
||||||
|
a:189 d:397
|
||||||
|
a:190 d:399
|
||||||
|
a:191 d:403
|
||||||
|
a:192 d:407
|
||||||
|
a:193 d:410
|
||||||
|
a:194 d:415
|
||||||
|
a:195 d:419
|
||||||
|
a:196 d:424
|
||||||
|
a:197 d:429
|
||||||
|
a:198 d:434
|
||||||
|
a:199 d:442
|
||||||
|
a:200 d:452
|
||||||
|
a:201 d:233
|
||||||
|
a:202 d:0
|
||||||
|
a:203 d:0
|
||||||
|
a:204 d:0
|
||||||
|
a:205 d:0
|
||||||
|
a:206 d:2064
|
||||||
|
a:207 d:2177
|
||||||
|
a:208 d:2581
|
||||||
|
a:209 d:2490
|
||||||
|
a:210 d:2401
|
||||||
|
a:211 d:2327
|
||||||
|
a:212 d:2265
|
||||||
|
a:213 d:2203
|
||||||
|
a:214 d:2142
|
||||||
|
a:215 d:2082
|
||||||
|
a:216 d:2033
|
||||||
|
a:217 d:1991
|
||||||
|
a:218 d:1951
|
||||||
|
a:219 d:1933
|
||||||
|
a:220 d:1949
|
||||||
|
a:221 d:1978
|
||||||
|
a:222 d:2011
|
||||||
|
a:223 d:2054
|
||||||
|
a:224 d:975
|
||||||
|
a:225 d:185
|
||||||
|
a:226 d:2188
|
||||||
|
a:227 d:2226
|
||||||
|
a:228 d:2267
|
||||||
|
a:229 d:2244
|
||||||
|
a:230 d:2214
|
||||||
|
a:231 d:2186
|
||||||
|
a:232 d:2161
|
||||||
|
a:233 d:1965
|
||||||
|
a:234 d:765
|
||||||
|
a:235 d:2098
|
||||||
|
a:236 d:732
|
||||||
|
a:237 d:322
|
||||||
|
a:238 d:355
|
||||||
|
a:239 d:0
|
||||||
|
a:240 d:0
|
||||||
|
a:241 d:79
|
||||||
|
a:242 d:330
|
||||||
|
a:243 d:440
|
||||||
|
a:244 d:437
|
||||||
|
a:245 d:435
|
||||||
|
a:246 d:436
|
||||||
|
a:247 d:436
|
||||||
|
a:248 d:435
|
||||||
|
a:249 d:432
|
||||||
|
a:250 d:195
|
||||||
|
a:251 d:35
|
||||||
|
a:252 d:346
|
||||||
|
a:253 d:422
|
||||||
|
a:254 d:420
|
||||||
|
a:255 d:418
|
||||||
|
a:256 d:352
|
||||||
|
a:257 d:416
|
||||||
|
a:258 d:414
|
||||||
|
a:259 d:338
|
||||||
|
a:260 d:301
|
||||||
|
a:261 d:297
|
||||||
|
a:262 d:408
|
||||||
|
a:263 d:379
|
||||||
|
a:264 d:372
|
||||||
|
a:265 d:405
|
||||||
|
a:266 d:405
|
||||||
|
a:267 d:404
|
||||||
|
a:268 d:404
|
||||||
|
a:269 d:404
|
||||||
|
a:270 d:404
|
||||||
|
a:271 d:404
|
||||||
|
a:272 d:404
|
||||||
|
a:273 d:404
|
||||||
|
a:274 d:405
|
||||||
|
a:275 d:326
|
||||||
|
a:276 d:212
|
||||||
|
a:277 d:263
|
||||||
|
a:278 d:262
|
||||||
|
a:279 d:243
|
||||||
|
a:280 d:241
|
||||||
|
a:281 d:239
|
||||||
|
a:282 d:222
|
||||||
|
a:283 d:224
|
||||||
|
a:284 d:127
|
||||||
|
a:285 d:278
|
||||||
|
a:286 d:242
|
||||||
|
a:287 d:162
|
||||||
|
a:288 d:232
|
||||||
|
a:289 d:195
|
||||||
|
a:290 d:224
|
||||||
|
a:291 d:249
|
||||||
|
a:292 d:256
|
||||||
|
a:293 d:31
|
||||||
|
a:294 d:56
|
||||||
|
a:295 d:43
|
||||||
|
a:296 d:0
|
||||||
|
a:297 d:0
|
||||||
|
a:298 d:0
|
||||||
|
a:299 d:0
|
||||||
|
a:300 d:0
|
||||||
|
a:301 d:0
|
||||||
|
a:302 d:0
|
||||||
|
a:303 d:0
|
||||||
|
a:304 d:0
|
||||||
|
a:305 d:0
|
||||||
|
a:306 d:0
|
||||||
|
a:307 d:0
|
||||||
|
a:308 d:0
|
||||||
|
a:309 d:0
|
||||||
|
a:310 d:0
|
||||||
|
a:311 d:0
|
||||||
|
a:312 d:0
|
||||||
|
a:313 d:0
|
||||||
|
a:314 d:0
|
||||||
|
a:315 d:0
|
||||||
|
a:316 d:0
|
||||||
|
a:317 d:50
|
||||||
|
a:318 d:137
|
||||||
|
a:319 d:130
|
||||||
|
a:320 d:176
|
||||||
|
a:321 d:476
|
||||||
|
a:322 d:476
|
||||||
|
a:323 d:540
|
||||||
|
a:324 d:487
|
||||||
|
a:325 d:427
|
||||||
|
a:326 d:422
|
||||||
|
a:327 d:363
|
||||||
|
a:328 d:432
|
||||||
|
a:329 d:506
|
||||||
|
a:330 d:524
|
||||||
|
a:331 d:208
|
||||||
|
a:332 d:371
|
||||||
|
a:333 d:464
|
||||||
|
a:334 d:456
|
||||||
|
a:335 d:222
|
||||||
|
a:336 d:390
|
||||||
|
a:337 d:498
|
||||||
|
a:338 d:384
|
||||||
|
a:339 d:450
|
||||||
|
a:340 d:491
|
||||||
|
a:341 d:495
|
||||||
|
a:342 d:488
|
||||||
|
a:343 d:483
|
||||||
|
a:344 d:207
|
||||||
|
a:345 d:341
|
||||||
|
a:346 d:478
|
||||||
|
a:347 d:474
|
||||||
|
a:348 d:471
|
||||||
|
a:349 d:469
|
||||||
|
a:350 d:472
|
||||||
|
a:351 d:467
|
||||||
|
a:352 d:466
|
||||||
|
a:353 d:466
|
||||||
|
a:354 d:471
|
||||||
|
a:355 d:465
|
||||||
|
a:356 d:465
|
||||||
|
a:357 d:471
|
||||||
|
a:358 d:288
|
||||||
|
a:359 d:135
|
||||||
21
PoinCloudWeb.Scanner/lida.py
Normal file
21
PoinCloudWeb.Scanner/lida.py
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
import PyLidar3
|
||||||
|
import time # Time module
|
||||||
|
#Serial port to which lidar connected, Get it from device manager windows
|
||||||
|
#In linux type in terminal -- ls /dev/tty*
|
||||||
|
#port = input("Enter port name which lidar is connected:") #windows
|
||||||
|
#port = "/dev/ttyUSB0" #linux
|
||||||
|
f = open("PoinCloudWeb.Scanner\datafile.txt","wt")
|
||||||
|
Obj = PyLidar3.YdLidarX4(port='COM6',chunk_size=10000) #PyLidar3.your_version_of_lidar(port,chunk_size)
|
||||||
|
if(Obj.Connect()):
|
||||||
|
print(Obj.GetDeviceInfo())
|
||||||
|
gen = Obj.StartScanning()
|
||||||
|
t = time.time() # start time
|
||||||
|
data = next(gen)
|
||||||
|
#print(data)
|
||||||
|
for x,y in data.items():
|
||||||
|
f.write("a:" + str(x) + " d:" + str(y) + "\n")
|
||||||
|
f.close()
|
||||||
|
Obj.StopScanning()
|
||||||
|
Obj.Disconnect()
|
||||||
|
else:
|
||||||
|
print("Error connecting to device")
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
# Importing Libraries
|
||||||
|
import serial
|
||||||
|
import time
|
||||||
|
|
||||||
|
arduino = serial.Serial(port='COM5', baudrate=9600)
|
||||||
|
|
||||||
|
print("Start ...")
|
||||||
|
time.sleep(2)
|
||||||
|
print("Ready:")
|
||||||
|
|
||||||
|
def write_read(x):
|
||||||
|
arduino.write(bytes(x, 'utf-8'))
|
||||||
|
data = arduino.readline()
|
||||||
|
return filterY(str(data))
|
||||||
|
|
||||||
|
def setY(y):
|
||||||
|
print(write_read("<set><"+str(y)+">"))
|
||||||
|
|
||||||
|
def getY():
|
||||||
|
print(write_read("<get>"))
|
||||||
|
|
||||||
|
def resetY():
|
||||||
|
print(write_read("<reset>"))
|
||||||
|
|
||||||
|
def zerotY():
|
||||||
|
print(write_read("<zero>"))
|
||||||
|
|
||||||
|
def filterY(data):
|
||||||
|
temp = data[data.find("<"):data.find(">")]
|
||||||
|
return temp + data[data.find("><"):data.find(">", data.find("><")+2)+1]
|
||||||
|
|
||||||
|
def startScan(mode):
|
||||||
|
print("Scan gestartet")
|
||||||
|
|
||||||
|
def stopScan():
|
||||||
|
print("Scan gestoppt")
|
||||||
|
|
||||||
|
def getScanStatus():
|
||||||
|
return "%"
|
||||||
|
|
||||||
|
while True:
|
||||||
|
for x in range(11):
|
||||||
|
setY(x*36)
|
||||||
Reference in New Issue
Block a user