2017年1月15日 星期日

Week 19 期末展示

遊戲名稱:  ExitEscape

遊戲規則:
此為一款解謎逃脫遊戲,遊戲中要將指定的物件放置到系統設置的區塊,方能開啟門,進入下一關,第2關開始出現的跳板及特殊顏色的牆面,則是根據顏色做分類的,當錯誤的顏色的球通過牆面時,球便會消失,跳板也亦然如此,錯誤的跳板無法讓球進行跳躍,每種球只有2個,沒了辨是遊戲結束,第3關規則也一樣,多的便是第2種球的加入,其他規則都一樣。

操作規則: 使用手臂上的按鈕進行物件的抓取,將物件放到指定區域,手臂裝有藍芽模組並進行程式的撰寫,因此可以方便使用者的操作。

遇到問題: 本身Unity再進行場景轉換時,光線會跑掉。

操作手臂:

操作影片:
總結:由於於課程結束後已歸還arduino設備,故拍攝影片時使用的是Unity的介面加上電腦操作,所以相較於當日時,較為不順暢。












                



/Noshiro/ Re 期末作業~~~~~



 期末的成果作品
03160570陳奕中







實在是一個很簡單的裝置
板子的插孔十分容易的掉線
還有就是訊號的抓取和跳躍十分的雜
果然還是要在改良一下哈哈~~~

WEEK12 按鈕製作

按鈕實作方法1



程式碼:

void setup(){
  pinMode(13,OUTPUT);
  pinMode(2,INPUT);
 }
void loop(){
  int result= digitalRead(2);
  if(result==HIGH) digitalWrite(13,HIGH);
  else digitalWrite(13,LOW);
}







按鈕實作方法2(簡化版)




程式碼: 

void setup(){
  pinMode(13,OUTPUT);
  pinMode(2,INPUT_PULLUP);
 }
void loop(){
  int result= digitalRead(2);
  if(result==HIGH) digitalWrite(13,LOW);
  else digitalWrite(13,HIGH);
}













光敏電阻



程式碼:

int sensorPin = A0;    // select the input pin for the potentiometer
int ledPin = 13;      // select the pin for the LED
int sensorValue = 0;  // variable to store the value coming from the sensor

void setup() {
  // declare the ledPin as an OUTPUT:
  pinMode(ledPin, OUTPUT);
}

void loop() {
  // read the value from the sensor:
  sensorValue = analogRead(sensorPin);
  // turn the ledPin on
  digitalWrite(ledPin, HIGH);
  // stop the program for <sensorValue> milliseconds:
  delay(sensorValue/4);
  // turn the ledPin off:
  digitalWrite(ledPin, LOW);
  // stop the program for for <sensorValue> milliseconds:
  delay(sensorValue/4);
}

WEEK14 期末作業題目選定


https://www.youtube.com/watch?v=PRcwg4hH_Ak\
https://www.youtube.com/watch?v=Pd3v3lAVnOQ

WEEK13 可動車輛

1.上禮拜的按鈕
2.

3.車子
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);
}

WEEK19 顏士傑期末作業DEMO小熊足球台

03161254顏士傑
03160703 藍玉雯


https://www.youtube.com/watch?v=lgSCvmL1F7A&feature=share



足球場:
void setup(){
 size(600, 450);
 background(#FCFFFD);
}
void draw(){
 fill(#0C892E);
 stroke(0, 0, 0);
 rect(50,60, 510,340);
 stroke(255);
 line(310,20,310,400);
 line(500,150,500,300);
 line(530,200,530,250);
 line(120,150,120,300);
 line(84,200,84,250);
 line(600,300,500,300);
 line(600,200,530,200);
 line(600,150,500,150);
 line(600,250,530,250);
 line(120,300,50,300);
 line(84,200,50,200);
 line(120,150,50,150);
 line(84,250,50,250);
}

2017年1月13日 星期五

Week13 林育廷

一、使用arduino範例的Digital中的DigitalInputPullup



參考範例



實作->按下會發亮



沒按時為1



按下時為0



二、套用到車子程式碼



測試回傳值是否正確



程式碼:

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

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