2016年11月28日 星期一

Week 13 陳禹安

1.按下按鈕會變0

程式碼:

void setup()
{
  Serial.begin(9600);
  pinMode(2, INPUT_PULLUP);
  pinMode(13, OUTPUT);
}
void loop()
{
  int sensorVal = digitalRead(2);
  Serial.println(sensorVal);
  if (sensorVal == HIGH) {
    digitalWrite(13, LOW);
  }
  else 
{
    digitalWrite(13, HIGH);
  }
}

影片:


2.兩個按鈕,一個按鈕讓車子前進,一個按鈕讓車子後退

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

Processing 程式碼:

import processing.serial.*;
Serial myPort;
int val;

void setup() {
  size(640, 480, P3D);
  myPort = new Serial(this, "COM3", 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);
}

影片:


沒有留言:

張貼留言