“步进电机控制”的版本间的差异
(→程序) |
(→调试) |
||
第53行: | 第53行: | ||
Microduino: | Microduino: | ||
− | // | + | //读取串口数据,判断改变速度或者改变步数 |
void loop() { | void loop() { | ||
− | + | if(Serial.available()) | |
− | + | { | |
− | + | int size = Serial.available();//get serial data size | |
− | + | for(int i=0;i<size;i++){ | |
− | + | if(i==0) {//get command | |
− | + | command=(char)Serial.read(); | |
− | |||
− | |||
− | |||
− | |||
− | |||
} | } | ||
− | else { | + | else if(i>1) {//get number |
− | + | number += (char)Serial.read(); | |
} | } | ||
} | } | ||
+ | if(command=='s') {//'s' means to set speed | ||
+ | stepper.setSpeed(number.toInt()); | ||
+ | stepper.runSpeed(); | ||
+ | } | ||
+ | else if(command=='p') {//'p' means to stpper | ||
+ | stepper.moveTo(number.toInt()); | ||
+ | stepper.run(); | ||
+ | } | ||
+ | } | ||
} | } | ||
第76行: | 第80行: | ||
Processing: | Processing: | ||
− | // | + | 在setup()中,以下代码用来加载调整速度和调整步数的控件 |
− | + | ||
− | + | //加载controlP5 | |
− | + | cp5 = new ControlP5(this); | |
− | + | ||
− | + | //加载滑动条用来调整速度 | |
− | + | // add a vertical slider | |
− | + | cp5.addSlider("slider") | |
− | + | .setPosition(0, 580) | |
− | + | .setSize(600, 20) | |
− | + | .setRange(0, 600) | |
− | + | .setValue(25) | |
− | + | ; | |
− | + | //加载调整步数控件 | |
− | + | cp5.addSlider("sliderTicks") | |
− | + | .setPosition(0,500) | |
− | + | .setWidth(600) | |
+ | .setHeight(40) | ||
+ | .setRange(-270,270) // values can range from big to small as well | ||
+ | .setValue(0) | ||
+ | .setNumberOfTickMarks(7) | ||
+ | .setSliderMode(Slider.FLEXIBLE) | ||
+ | ; | ||
+ | |||
+ | //在draw()中绘制圆环进度用来显示速度值 | ||
+ | float angle=map(speed, 0, 600, 0, 360); | ||
+ | arc(width/2, height/2, 300, 300, turn, radians(angle)+turn); | ||
+ | |||
+ | //速度控制事件处理 | ||
+ | void slider(float speedValue) { | ||
+ | speed=speedValue; | ||
+ | port.write("s:"+(int)speedValue); | ||
} | } | ||
− | // | + | //步数控制事件处理 |
− | + | void sliderTicks(float stppedValue) { | |
− | void | + | port.write("p:"+(int)stppedValue); |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
} | } | ||
2014年6月12日 (四) 03:47的版本
目的本教程将教大家如何用processing来控制步进电机,向左转向右转。 设备
原理图程序调试硬件搭建部分与进阶教程第三十八课步进电机驱动类似: http://www.microduino.cc/wiki/index.php?title=%E7%AC%AC%E4%B8%89%E5%8D%81%E5%85%AB%E8%AF%BE--Microduino_%E6%AD%A5%E8%BF%9B%E7%94%B5%E6%9C%BA%E9%A9%B1%E5%8A%A8/zh
步骤三:解释一下代码: 本例需要两端的代码,Processing端和Microduino端 Microduino: //读取串口数据,判断改变速度或者改变步数 void loop() { if(Serial.available()) { int size = Serial.available();//get serial data size for(int i=0;i<size;i++){ if(i==0) {//get command command=(char)Serial.read(); } else if(i>1) {//get number number += (char)Serial.read(); } } if(command=='s') {//'s' means to set speed stepper.setSpeed(number.toInt()); stepper.runSpeed(); } else if(command=='p') {//'p' means to stpper stepper.moveTo(number.toInt()); stepper.run(); } } }
在setup()中,以下代码用来加载调整速度和调整步数的控件 //加载controlP5 cp5 = new ControlP5(this); //加载滑动条用来调整速度 // add a vertical slider cp5.addSlider("slider") .setPosition(0, 580) .setSize(600, 20) .setRange(0, 600) .setValue(25) ; //加载调整步数控件 cp5.addSlider("sliderTicks") .setPosition(0,500) .setWidth(600) .setHeight(40) .setRange(-270,270) // values can range from big to small as well .setValue(0) .setNumberOfTickMarks(7) .setSliderMode(Slider.FLEXIBLE) ; //在draw()中绘制圆环进度用来显示速度值 float angle=map(speed, 0, 600, 0, 360); arc(width/2, height/2, 300, 300, turn, radians(angle)+turn); //速度控制事件处理 void slider(float speedValue) { speed=speedValue; port.write("s:"+(int)speedValue); } //步数控制事件处理 void sliderTicks(float stppedValue) { port.write("p:"+(int)stppedValue); } 步骤四:下载代码并编译通过。 步骤五:运行后,鼠标分别放到向左走的人和向右走的人,看看步进电机有啥反应。 结果鼠标放到向左走的人: 鼠标放到向右走的人: 步进电机会朝着相应的方向转动
视频 |