ArduinoでDCモータを制御する

まだうまく動いていませんが。

Processing

//シリアルライブラリの取り込み
import processing.serial.*;
Serial port;
import controlP5.*;
ControlP5 controlP5;

//X座標の変数
int x=0;

void setup(){
  size(255,100);
  //シリアルポートの設定
  port=new Serial(this,"/dev/tty.usbserial-A60049U2",9600);
  controlP5 = new ControlP5(this);
  //range is from 0 to 511
  controlP5.addSlider("Motor",0,511,128,10,10,200,30);
}

void draw(){
  background(100);
}

void serialEvent(Serial p){
  //データ数が0個より多いとき
  if(port.available()>0){
    //X座標を送信
    port.write(x);
    //Arduinoからの合図用データを
    //読み込んでバッファを空にする
    port.read();
  }
}

public void Motor(int theValue){
  x = theValue;   
}

void keyPressed(){
  //sキーを押したら
  if(key=='s'){
    //通信開始用データ送信
    port.write(0);
  }
}

Arduino

int val = 255;//initialize

void setup(){
  pinMode(1,OUTPUT); //信号用ピン
  pinMode(2,OUTPUT); //信号用ピン
  Serial.begin(9600);
}

void loop(){
  //アナログ入力:0番ピンの値を2で割る
  //int val=analogRead(0)/2; //0~511の値にする
  if(Serial.available()>0){
    val = Serial.read();
    Serial.write(65);  //for a signal
  
  
  //静止/正転/逆転の状態に分けてプログラムする
  if(val>=255 && val<=256){ //静止:255~256
    //LOW,LOWでデジタル出力
    digitalWrite(1,LOW);
    digitalWrite(2,LOW);
  }else if(val>256){        //正転:257~511
    //HIGH,LOWでデジタル出力
    digitalWrite(1,HIGH);
    digitalWrite(2,LOW);
    //valが大きいほど出力値も大きくなる
    analogWrite(3,val-256); //出力値:1~255
  }else{                    //逆転:0~254
    //LOW,HIGHでデジタル出力
    digitalWrite(1,LOW);
    digitalWrite(2,HIGH);
    //valが小さいほど出力値は大きくなる
    analogWrite(3,255-val); //出力値:1~255
  }    
 }
}