2016年11月28日 星期一

Week 13 魏珩




1.不按按鈕的時候顯示"1"












2.按下按鈕會顯示"0"













3.













4.












Processing程式碼:

import processing.serial.*;
Serial myPort;  // Create object from Serial class
int val;      // Data received from the serial port

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) {  // If data is available,
    val = myPort.read();         // read it and store it in val


///
 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);

}


Arduino 程式碼:(兩個按鈕)

void setup(){

  Serial.begin(9600);

  pinMode(2, INPUT_PULLUP);
  pinMode(3, INPUT_PULLUP);
  pinMode(13, OUTPUT);

}

void loop(){

  int sensorVal = digitalRead(2);
  int sensorVal3 = digitalRead(3);

  if(sensorVal==LOW) Serial.print('0');
   if(sensorVal3==LOW) Serial.print('1');
 


  if (sensorVal == HIGH) {
    digitalWrite(13, LOW);
  }
  else {
    digitalWrite(13, HIGH);
  }
}


成果:
兩顆按鈕控制左右






沒有留言:

張貼留言