我正在为我的Arduino Mega 2560主板开发GUI。我需要一个带4个值的固定步进旋钮。我使用了控制P5库,但旋钮范围是连续的。
建议我如何使用代码获取固定步进旋钮。每当我用旋钮在旋钮上的刻度线附近按下旋钮时,它应该变为该值 BTW我不知道java编程刚刚开始学习。
答案 0 :(得分:1)
尝试setting the number of tickmarks到3
这是经过调整的示例>贡献的图书馆>
/ ** * ControlP5旋钮 * * *找到可用于旋钮控制器的公共方法列表 *在此草图的底部。 * *作者:Andreas Schlegel,2012年 * www.sojamo.de/libraries/controlp5 * * /
import controlP5.*;
ControlP5 cp5;
int myColorBackground = color(0,0,0);
int knobValue = 100;
Knob myKnobA;
Knob myKnobB;
void setup() {
size(700,400);
smooth();
noStroke();
cp5 = new ControlP5(this);
myKnobA = cp5.addKnob("knob")
.setRange(0,255)
.setValue(50)
.setPosition(100,70)
.setRadius(50)
.setDragDirection(Knob.VERTICAL)
;
myKnobB = cp5.addKnob("knobValue")
.setRange(0,255)
.setValue(220)
.setPosition(100,210)
.setRadius(50)
.setNumberOfTickMarks(3)
.setTickMarkLength(4)
.snapToTickMarks(true)
.setColorForeground(color(255))
.setColorBackground(color(0, 160, 100))
.setColorActive(color(255,255,0))
.setDragDirection(Knob.HORIZONTAL)
;
}
void draw() {
background(myColorBackground);
fill(knobValue);
rect(0,height/2,width,height/2);
fill(0,100);
rect(80,40,140,320);
}
void knob(int theValue) {
myColorBackground = color(theValue);
println("a knob event. setting background to "+theValue);
}
void keyPressed() {
switch(key) {
case('1'):myKnobA.setValue(180);break;
case('2'):myKnobB.setConstrained(false).hideTickMarks().snapToTickMarks(false);break;
case('3'):myKnobA.shuffle();myKnobB.shuffle();break;
}
}