顯示具有 00161036魏正 標籤的文章。 顯示所有文章
顯示具有 00161036魏正 標籤的文章。 顯示所有文章

2014年1月12日 星期日

Week19 00161036魏正期末作品

互動技術期末作品
作品名稱:LED Cube 8x8x8
作品介紹:
此作品欲達成裸視3D的效果,並使觀眾能從任何角度欣賞動畫,創作過程使用512顆燈泡並依照8x8x8的架構進行焊接,底板晶片使用Arduino UNO來燒錄動畫程式,未來展望欲將體感裝置和此作品藉由PC溝通產生出新的體感操作模式,讓觀眾和展演者能不拘泥於任何方位demo都無觀賞死角,謝謝大家。

2013年12月15日 星期日

Week14魏正

期末企劃
上課時看到老師播的LED Cube的影片,發現此作品可以達成裸視3D且任何角度都可以觀賞動畫,學生也想要訂製材料,手工做一個LED Cube出來,且此作品的未來展望是搭配上體感Sensor然後跟LED Cube互動,這樣的結合可以使觀眾和操縱者不侷限在同一方位也可以欣賞到展示。

LED Cube

Week13魏正

Project05
#include <Servo.h>
Servo myServo;

int const potPin = A0;
int potVal;
int angle;

void setup(){
  myServo.attach(9);
  Serial.begin(9600);
}
void loop(){
  potVal = analogRead(potPin);
  Serial.print("potVal");
  Serial.print(potVal);

  angle = map(potVal, 0, 1023, 0, 179);
  Serial.print(", angle: ");
  Serial.println(angle);

  myServo.write(angle);
  delay(15);
}

Project06
int sensorValue;
int sensorLow = 1023;
int sensorHigh = 0;

const int ledPin = 13;

void setup(){
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, HIGH);

  while(millis()<5000){
    sensorValue = analogRead(A0);
    if(sensorValue > sensorHigh){
      sensorHigh = sensorValue;
    }
    if(sensorValue < sensorLow){
      sensorLow = sensorValue;
    }
  }
  digitalWrite(ledPin,  LOW);
}
void loop(){
  sensorValue = analogRead(A0);
  int pitch = map(sensorValue, sensorLow, sensorHigh, 50, 4000);
  tone(8, pitch, 20);

  delay(10);
}

Project07
int notes[] = {262, 294, 330, 349};

void setup(){
  Serial.begin(9600);
}

void loop(){
  int keyVal = analogRead(A0);
  Serial.println(keyVal);

  if(keyVal == 1023){
    tone(8, notes[0]);
  }
  else if(keyVal >= 990 && keyVal <= 1010){
    tone(8, notes[1]);
  }
  else if(keyVal >= 505 && keyVal <= 515){
    tone(8, notes[2]);
  }
  else if(keyVal >= 5 && keyVal <= 10){
    tone(8, notes[3]);
  }
  else{
    noTone(8);
  }
}

Week12魏正

Project 02
int switchState = 0;
void setup()
{
  pinMode(3,OUTPUT);
  pinMode(4,OUTPUT);
  pinMode(5,OUTPUT);
  pinMode(2,INPUT);
}
void loop()
{
  switchState = digitalRead(2);
  if(switchState == LOW)
  {
    digitalWrite(3,HIGH);
    digitalWrite(4,LOW);
    digitalWrite(5,LOW);
  }
  else
  {
    digitalWrite(3,LOW);
    digitalWrite(4,LOW);
    digitalWrite(5,HIGH);
 
    delay(250);
 
    digitalWrite(4,HIGH);
    digitalWrite(5,LOW);
 
    delay(250);
  }
}

Project 03
const int sensorPin = A0;
const float baselineTemp = 20.0;

void setup(){
  Serial.begin(9600);
  for(int pinNumber = 2; pinNumber<5; pinNumber++){
    pinMode(pinNumber,OUTPUT);
    digitalWrite(pinNumber, LOW);
  }
}

void loop(){
  int sensorVal = analogRead(sensorPin);
  Serial.print("Sensor Value:");
  Serial.print(sensorVal);
  float voltage = (sensorVal/1024.0)*5.0;
  Serial.print(", Volts:");
  Serial.print(voltage);
  Serial.print(", degrees C:");
  float temperature = (voltage - .5)*100;
  Serial.println(temperature);

  if(temperature < baselineTemp){
    digitalWrite(2, LOW);
    digitalWrite(3, LOW);
    digitalWrite(4, LOW);
  }
  else if(temperature >= baselineTemp+2 && temperature < baselineTemp+4){
    digitalWrite(2, HIGH);
    digitalWrite(3, HIGH);
    digitalWrite(4, LOW);  
  }
 else if(temperature >= baselineTemp+6){
    digitalWrite(2, HIGH);
    digitalWrite(3, HIGH);
    digitalWrite(4, HIGH);
 }
 delay(1);
}

Project 04
const int greenLEDPin = 9;
const int redLEDPin = 10;
const int blueLEDPin = 11;

const int redSensorPin = A0;
const int greenSensorPin = A1;
const int blueSensorPin = A2;

int redValue = 0;
int greenValue = 0;
int blueValue = 0;

int redSensorValue = 0;
int greenSensorValue = 0;
int blueSensorValue = 0;

void setup(){
  Serial.begin(9600);

  pinMode(greenLEDPin,OUTPUT);
  pinMode(redLEDPin,OUTPUT);
  pinMode(blueLEDPin,OUTPUT);
}

void loop(){
  redSensorValue = analogRead(redSensorPin);
  delay(5);
  greenSensorValue = analogRead(greenSensorPin);
  delay(5);
  blueSensorValue = analogRead(blueSensorPin);

  Serial.print("Raw Sensor Values \t Red");
  Serial.print(redSensorValue);
  Serial.print("\t Green:");
  Serial.print(greenSensorValue);
  Serial.print("\t Blue:");
  Serial.print(blueSensorValue);

  redValue = redSensorValue/4;
  greenValue = greenSensorValue/4;
  blueValue = blueSensorValue/4;

  Serial.print("Mapped Sensor Values \t Red:");
  Serial.print(redValue);
  Serial.print("\t Green:");
  Serial.print(greenValue);
  Serial.print("\t Blue:");
  Serial.print(blueValue);

  analogWrite(redLEDPin, redValue);
  analogWrite(greenLEDPin, greenValue);
  analogWrite(blueLEDPin, blueValue);
}

Week11魏正

改寫File-Examples-Basic-Blink
1.
int led = 13;
void setup() {              
  pinMode(led, OUTPUT);  
}
void loop() {
  digitalWrite(led, HIGH);
  delay(1000);
  digitalWrite(led, LOW);
  delay(1000);
}

2.
int led = 13;
void setup() {              
  pinMode(led, OUTPUT);  
}
void loop() {
  digitalWrite(led, HIGH);
  digitalWrite(10, HIGH);
  delay(500);
  digitalWrite(led, LOW);
  digitalWrite(10, LOW);
  delay(500);
  for(int i=0;i<3;i++)
  {
    digitalWrite(led, HIGH);
    delay(200);
    digitalWrite(10, HIGH);
    delay(200);
    digitalWrite(led, LOW);
    delay(200);
    digitalWrite(10, LOW);
    delay(200);
  }
}

2013年11月10日 星期日

Week10魏正 期中作品展示

作品名稱:手勢辨識天體觀測

期中展示影片連結:
https://www.youtube.com/watch?v=A3QUuePRPdI&feature=youtu.be

Week08魏正

期中展示:
作品名稱:手勢辨識天體觀測
本作品為突破觸控與平面的互動操作模式,
藉由Xtion PRO的感測搭配PrimeSense的手部抓取辨識功能,
讓使用者可以直覺的使用手部拖曳、旋轉與抓取縮放展示畫面,
Demo影像中將此軟體應用於google earth與stellarium,
給使用者如科幻片中探索地標與星空的操作情境。



作品名稱:XtionPaint
使用Xtion的手部辨識搭配Processing所撰寫的體感繪圖板,
讓使用者可以藉由類似提筆、落筆的肢體動作進行繪畫。
作品名稱:XtionJazz
使用Xtion的手部辨識搭配Processing所撰寫的幻想爵士鼓,
讓使用者可以藉由手部捶打鼓面來進行打擊樂。

2013年10月20日 星期日

Week07 魏正

1.請列出今天課程要完成的進度
1.1尋找Google Earth的相關API
1.2思索開發環境
1.3尋找可以判斷手勢的方法
1.4將程式碼雛形完成

2.期中作品預計進度
2.1能夠將手勢辨識的程式碼實踐出來
2.2將程式碼結合Google Earth
2.3能夠拍出展示影片
2.4現場Demo

3.為什麼要做?
為突破觸控與平面的互動操作模式,
藉由Xtion PRO的感測搭配PrimeSense的手部抓取辨識功能,
讓使用者可以直覺的使用手部拖曳、旋轉與抓取縮放展示畫面,
並可在畫面中藉由抓取提筆的動作來繪製手部軌跡,
Demo中將把此軟體應用於google earth與stellarium,
給使用者如科幻片中探索地標與星空的操作情境。

2013年9月22日 星期日

Week03魏正

1. 今天目標: 畫出一個五子棋
1.1. 使用 Tool- Color Selector, 挑出你要的顏色, 可用 R,G,B 來描述,也可用 #0B33FF 之類的數字來設定顏色
1.2. 要畫外框,可以用 rect()來畫, 要修改填充的顏色可以用fill(), 要讓畫的內部不要填充, 可以查看 Help-Reference 後,在 fill()樓上樓下相關的地方找到你要的功能 (ex. noFill() )
1.3. 使用 stroke() 來調畫線stroke的顏色, 在 Help-Reference 裡面可以找 stroke 相關的功能,像是比較粗的 stroke 可以用 strokeWeight() 來設定權重粗細
1.4. 想要畫裡面的細黑線,可以用 line() 來畫,配上不同的 strokeWeight() 粗細


2.1. 請去找一下 Processing 寫出來的作品 
2.2. 用 Youtube 分享,按Blogger 把 HTML的 <iframe...> 貼在你的作業中
2.3. 下載 Processing 
3. 寫出你的第一個Processing 程式碼: Hello World 變 Hello Kitty

4. 請找一張圖,用小畫家(mspaint)輔佐你,畫出你的 Processing 圖, 並都貼出來。

5. 請寫下你的心得 (1)你學了什麼東西(2)有什麼東西不懂(3)還想學什麼

(1)Processing2的基本語法與函示庫查詢
(2)還在研讀中
(3)絢麗特效-水波or煙火

貼你覺得有意思的影片, 使用youtube 的分享, Blogger 分享, 兩邊都改成 HTML, 貼上 HTML

2013年9月15日 星期日

Week02魏正

1.學生使用processing-2.0.1

2.for迴圈嘗試

3. http://processing.org/reference/
   可查看官方內建函示
   課堂作品1:

4.fill() 可填滿顏色, stroke()是外框顏色
   課堂作品2:

5. 加入滑鼠互動技術,使用 mouseX 及 mouseY 的值,來進行運算

6. 亂數函示 random(0~上限數字) 來設定初始的亂數值
    課堂作品3:

課堂心得:此門課程讓學生受益良多,簡短的程式碼卻可以達到豐富的效果,但速度有點快,學生有點來不及嘗試<(_ _)>

2013年9月8日 星期日

Week01 魏正

課程準備
   去年BLOG:2012interaction.blogspot.tw
1 加入課程FB社團:2013interaction(o)
2 編寫Google文件,填寫修課資料(姓名,email,手機)(o)
3 加入且設定Blog(0)
編交作業方式: tag: 000葉正聖老師, Week01, 00160011葉大明
逗號隔開, 學號姓名間不要有空格

1. 看一下去年學長姐們做的成果 (划船、吃角子老虎、數位手套、直昇機控制搖桿), 聖誔老公公下樓梯
2. 試著執行 Processing

size(600,600);
background(255, 0, 0);
rect(100,100, 200,200);

老師示範AngryBirds:
http://www.cmlab.csie.ntu.edu.tw/~jsyeh/processing/angryBirdsBrick/

size(600,600);
background(255, 0, 0);
rect(100,100, 200,200);
PImage imgBird=loadImage("http://www.cmlab.csie.ntu.edu.tw/~jsyeh/processing/angryBirdsBrick/bird.png");
PImage imgPig =loadImage("http://www.cmlab.csie.ntu.edu.tw/~jsyeh/processing/angryBirdsBrick/pig.gif");
image(imgBird, 0,0);
image(imgPig, 200,200,  100,100);

第三節課的範例
PImage imgBird, imgPig;

void setup() {
  size(600, 600);
  imgBird=loadImage("http://www.cmlab.csie.ntu.edu.tw/~jsyeh/processing/angryBirdsBrick/bird.png");
  imgPig =loadImage("http://www.cmlab.csie.ntu.edu.tw/~jsyeh/processing/angryBirdsBrick/pig.gif");
  imageMode(CENTER);
}

void draw() {
  background(255, 0, 0);
  image(imgBird, mouseX, mouseY);
  image(imgPig, 200, 200, 100, 100);
}
https://class.coursera.org/digitalmedia-001/lecture/index