2016年12月26日 星期一

WEEK_13 海野土佐衛門有關於停車像停船

安裝驅動程式Arduino
Tools>Board>選擇使用的面板 
Tools>Serial Port>選擇使用的COM4
──────────────────────────────────────────────────────────────────────
void setup(){
  //start serial connection
  Serial.begin(9600);
  //configure pin2 as an input and enable the internal pull-up resistor
  pinMode(2, INPUT_PULLUP);
  pinMode(3, INPUT_PULLUP);
  pinMode(13, OUTPUT); 

}

void loop(){
  //read the pushbutton value into a variable
  int sensorVal = digitalRead(2);
  int sensorVal3 = digitalRead(3);

  if (sensorVal == LOW)Serial.print('0');
  if (sensorVal3 == LOW)Serial.print('1');
}
我們的按鍵測試
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
──────────────────────────────────────────────────────────────────────
再使用Processing
我們要連結File→Example→Libraries→Serial→SimpleRead

程式碼
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
import processing.serial.*;
Serial myPort;
int val; 
void setup() {
  size(640, 480, P3D);
  myPort = new Serial(this, "COM4", 9600);
  rectMode(CENTER);
}
float carX=640/2, carY=320/2;
float carDir=PI, carWheel=0;
void drawCar() {
  pushMatrix();
  translate(carX, carY);
  rotateZ(carDir);
  rect(0, 0, 187, 89);
  drawWheel(127/2, 89/2, 1);
  drawWheel(127/2, -89/2, 1);
  drawWheel(-127/2, 89/2, 0);
  drawWheel(-127/2, -89/2, 0);
  if (keyPressed && keyCode==UP) {
    carX+= cos(carDir+carWheel); 
    carY+=sin(carDir+carWheel);
    carDir+=carWheel/50;
  } else if (keyPressed && keyCode==DOWN) {
    carX-= cos(carDir+carWheel); 
    carY-=sin(carDir+carWheel);
    carDir-=carWheel/50;
  } else if (keyPressed && keyCode==RIGHT) {
    carWheel+=0.01;
    if (carWheel > 0.3) carWheel=0.3;
  } else if (keyPressed && keyCode==LEFT) {
    carWheel-=0.01;
    if (carWheel < -0.3) carWheel=-0.3;
  }
  popMatrix();
}
void drawWheel(float x, float y, int front) {
  pushMatrix();
  translate(x, y);
  if (front==1) rotateZ(carWheel);
  rect(0, 0, 40, 20);
  popMatrix();
}
void draw() {
  while (myPort.available ()>0) {
    val=myPort.read();
    if (val==48) {
      carX+=cos(carDir+carWheel);
      carY-=sin(carDir+carWheel);
      carDir-=carWheel/50;
    } else if (val==49) {
      carX-=cos(carDir+carWheel);
      carY-=sin(carDir+carWheel);
      carDir-=carWheel/50;
    }
  }
  println(val);
  background(100);
  drawCar();
  rect(0+187/2, 0+89/2, 187, 89);
  rect(450+187/2, 0+89/2, 187, 89);
}
線路板
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

──────────────────────────────────────────────────────────────────────
之後就可以在線路板上設定的按鍵做使用~~

沒有留言:

張貼留言