如何在GUI中使用处理添加固定步进旋钮?

时间:2018-05-04 11:55:27

标签: arduino processing

我正在为我的Arduino Mega 2560主板开发GUI。我需要一个带4个值的固定步进旋钮。我使用了控制P5库,但旋钮范围是连续的。

建议我如何使用代码获取固定步进旋钮。每当我用旋钮在旋钮上的刻度线附近按下旋钮时,它应该变为该值 BTW我不知道java编程刚刚开始学习。

1 个答案:

答案 0 :(得分:1)

尝试setting the number of tickmarks到3

这是经过调整的示例>贡献的图书馆> 控制器> ControlP5knob 示例:

/ ** * 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;
  }

}