2016年12月26日 星期一

Week13 大原大次郎的龜有公園前派出所日常

執勤任務1:
案造前幾個禮拜的程序安裝驅動程式
→File>Example>Digital>DigitalInputPullup
→File>Example>Communication>ReadASCIIString


DigitalInputPullup程式碼
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
Processing程式碼
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);
}



沒有留言:

張貼留言