顯示具有 01160520_陳瑋廷 標籤的文章。 顯示所有文章
顯示具有 01160520_陳瑋廷 標籤的文章。 顯示所有文章

2014年12月22日 星期一

期末作品

音樂播放器


構思
1.讀取音樂

--------功能--------------
1.顯示音樂清單
2.顯示音樂時間
3.快轉/倒轉按鈕
4.暫停/開始按鈕
5.音量大/小按鈕
6.上一首/下一首按鈕




第一次 介面
第二次 介面
硬體:
實際畫面:
實際顯示畫面:
實際操作:




2013 互動blogger
http://2013interaction.blogspot.tw/search?updated-max=2014-01-12T20:52:00-08:00&max-results=7&start=7&by-date=false

互動程式應用與設計 Arduino結合processing設計成果

https://www.youtube.com/watch?v=VXYqlfT8Iu4

互動程式應用與設計 Arduino結合processing範例
http://coopermaa2nd.blogspot.tw/2011/03/processing-arduino.html

-------------Arduino---------------------------

void setup(){

Serial.begin(9600);

pinMode(2,INPUT_PULLUP);
pinMode(3,INPUT_PULLUP);
}

void loop(){
int sensorplay = digitalRead(2);
int sensorvoiceup = digitalRead(3);
int sensorvoicedown = digitalRead(4);
int next = digitalRead(5);
int up = digitalRead(6);

if(sensorplay == LOW)
{//播放/暫停
digitalWrite(13,LOW);
Serial.write('A');
}
if(sensorvoiceup == LOW)
{//音量增加ccac
digitalWrite(13,LOW);
Serial.write('B');
}
if(sensorvoicedown == LOW)
{//音量減少
digitalWrite(13,LOW);
Serial.write('C');
}
if(next == LOW)
{// 下一首
digitalWrite(13,LOW);
Serial.write('D');
}
if(up == LOW)
{//  上一首
digitalWrite(13,LOW);
Serial.write('E');
}
delay(125);
}
-----------------Processing-----------------------
import ddf.minim.*;
PImage imgBG;
PImage img;
Minim minim;
AudioPlayer player[]=new AudioPlayer[9];
AudioSnippet soundNoise;
import processing.serial.*;
Serial myPort;
void setup(){
size(700,460);
img = loadImage("star.png");
imgBG=loadImage("index.png");
background(imgBG);
myPort=new Serial(this,"COM6",9600);
minim = new Minim(this);


player[0] = minim.loadFile("JJ2.mp3");
player[1] = minim.loadFile("JJ1.mp3");
player[2] = minim.loadFile("JJ3.mp3");
player[3] = minim.loadFile("JJ4.mp3");
player[4] = minim.loadFile("JJ5.mp3");
player[5] = minim.loadFile("JJ6.mp3");
player[6] = minim.loadFile("JJ7.mp3");
player[7] = minim.loadFile("JJ8.mp3");
player[8] = minim.loadFile("JJ9.mp3");

for(int i=0;i<9;i++)println(player[i].getControls());
}
int hear=0,voiceup=0,voicedown=0;
int v=0,i=0,next=0,up=0,y=120;
void draw()
{
background(imgBG);

if(myPort.available()>0)
{
int a=myPort.read();
if(a=='A') hear++;
if(a=='B') {voiceup=1; v+=1;}
if(a=='C') {voiceup=1; v-=1;}
if(a=='D') {next=1;if(i<8&&i>=0){i+=1;y+=38;}else i+=0;}
if(a=='E') {up=1;if(i<=8&&i>0){i-=1;y-=38;}else i+=0;}
}


//--------------wave---------------------
float x1, y1, x2, y2;
int w;
stroke(150,255,0);
  for (w = 0; w < player[i].bufferSize() - 1; w++) {
    x1 = w;
    y1 = 40 + player[i].left.get(w) * 50;
    x2 = w+1;
    y2 = 40 + player[i].left.get(w+1) * 50;
    line(x1, y1, x2, y2);
  }
//-----------------------------------------

if(hear%2==1)
{
player[i].play();image(img,185,y);
}
if(hear%2==0)
{
player[i].pause();
}

//---------voice-up---------------
if(voiceup==1 &&v>-10 &&v<10 )
{
println(v);
if(v<=10) player[i].setGain(v);
voiceup=0;
}
//----------NEXTmusic-------------
if(next==1 )
{
if(i>=0 &&i<9)player[i-1].pause();
println(i);image(img,185,y);
next=0;
}
//----------UPmusic-------------
if(up==1)
{

if(i>=0 &&i<9)player[i+1].pause();
println(i);image(img,185,y);
up=0;
}
}

void stop()
{
player[i].close();
minim.stop();
super.stop();
}



2014年12月15日 星期一

week14

使用旋鈕控制方塊方向 



processing:

import processing.serial.*;
Serial myPort;
void setup(){
    size(255+80,200);
    myPort=new Serial(this,"COM4",9600);
}
int posX=0;
void draw(){
    background(255);
    fill(#ff0000);rect(posX,0,80,200);
    if(myPort.available()>0){
        posX=myPort.read();
        println(posX);
  }
}

arduino:
void setup(){
  Serial.begin(9600);
}
void loop(){
  int value = analogRead(A0);//0-1023
  Serial.write(value/4);
  delay(20);
}

WEEK14

 使用旋鈕控制燈泡閃爍頻率



2014年12月1日 星期一

week12

【按按鈕-亮燈&出聲】
程式碼:
void setup(){
  pinMode(2,INPUT_PULLUP);
  pinMode(13,OUTPUT);
}
void loop(){
if(digitalRead(2)==HIGH){
digitalWrite(13,HIGH);
tone(8,440*2,300);
}
else{
digitalWrite(13,LOW);
noTone(8);
}
}

week12

【聲音】

Week12


【操作實際圖】
【亮燈】


2014年11月24日 星期一

week11霹靂燈



int led;

void setup() {              
  // initialize the digital pin as an output.
for(led=10;led<14;led++)
{
  pinMode(led, OUTPUT);  
 digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(100);               // wait for a second
  digitalWrite(led, LOW);   // turn the LED off by making the voltage LOW
if(led==13)
{
  for(led=13;led>=10;led--)
{
 digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(100);               // wait for a second
  digitalWrite(led, LOW);   // turn the LED off by making the voltage LOW
}
}
}
}

// the loop routine runs over and over again forever:
void loop() {
 }

業界雙師授課心得報告-愛迪斯胡啟彥先生

今天這堂課看到很多遊戲人物動作都是用real time即時互動的形式呈現,其中有一個我最特別有印象,就是電影阿凡達裡面的人物,就是讓真人穿上有感應球的衣服去做動作,使電腦裡的虛擬人物,和我們人做一樣的動作,並把她錄製起來,拍成一部拍程你真的科幻電影。
不只阿凡達,就連熊麻吉也是唷

3D主動立體投影,結合了藝術部分,其中也是以real time 即時互動的形式呈現,虛擬的影像結合,擬真並加強產生更窩效果

體感攝影機,先選擇想要的虛擬人物面貌,再經由機器掃描臉部的部位,讓虛擬人物以及真實人物表情同步以及位置一致,並錄製20種以上的延伸動作,讓虛擬人物人更真實,其系統功能可以用在虛擬面試上,當今天你要練習面試卻沒有專業人士替你一對一的練習時,可以藉由虛擬角色即時的與使用者做一個虛擬面試的動作。

醫療手術模擬,練習拿手術刀時施展的力道,此機次就是一個手術刀的握把,握著他可以模擬,在真實狀況中所遇到的形狀以及觸覺問題。

Poket的廣告,利用手機app掃描poket上的2D平面卡通,可以透過畫面看到卡通變成3D,這個技巧,也有人用在演唱會上,日本的明星和卡通都曾經使用過這個技術。


2014年10月24日 星期五

第六周

第六周 進度

























整合:
1.計時器
2.觸碰wall後gameover
3.火柴人跳躍
4.wall 隨機出現
缺點:
1.火柴人觸碰wall的數據 還抓不準
2.火柴人跳躍(要長按,並非按一下跳一次)
3.wall出現會重複
import ddf.minim.*;
import processing.serial.*;
PImage img, over;
float myImgX=100;
float myImgY=300;
float mySpeed=2;
PImage[] p=new PImage [2];
PImage wall[]=new PImage[3];
float wallX[]={0,0,0},wallY[]={0,0,0};
PFont font;
String time = "0";
int t;
int interval=0;
void setup()
{
  size(650,450);
  p[0]=loadImage("peo1.jpg");
  p[1]=loadImage("peo2.jpg");
  for(int i=0;i<3;i++)
    wall[i]=loadImage("wall"+(i+1)+".png");
  for(int i=0;i<3;i++)
  {
    wallX[i]=int(random(6))*130+600;
    wallY[0]=270;
    wallY[1]=310;
    wallY[2]=270;
  }
  font=createFont("Arial",30);
  background(255);
  fill(0);
  over=loadImage("gameover.png");
}
void draw()
{
  background(255,255,255);
  line(0,350,650,350);
  int i=int(random(1000));
  if(i>500)
  image(p[0],myImgX,myImgY,50,50);
  if(i<500)
  image(p[1],myImgX,myImgY,50,50);



  wallY[0]=270;
  wallY[1]=308;
  wallY[2]=256;
  for(int w=0;w<3;w++)
  image(wall[w],wallX[w],wallY[w]);
  for(int w=0;w<3;w++)
  {
    wallX[w]-=2;
    if (wallX[w]<0)
      {
        wallX[w]=int(random(6))*130+600;
      }  
    if(wallX[0]==100&&220<myImgY)
    {
    image(over, 0, 0, 650,450);
    stop();
    }
    if(wallX[1]==100&&240<myImgY)
    {
    image(over, 0, 0, 650,450);
    stop();
    }
    if(wallX[2]==100&&226<myImgY)
    {
    image(over, 0, 0, 650,450);
    stop();
    }
  }

  t=interval+int(millis()/1000);
  time=nf(t,3);
  if(t==0)
  {
    interval+=1;
  }
  text(time,600,50);
}

void keyPressed()
{
     jump();
}
void jump()
{
  myImgY-=mySpeed;
  mySpeed-=0.1;
  if (mySpeed<0 && myImgY>295 && myImgY<350 )
    {
      mySpeed=4;
    }
}



2014年10月20日 星期一

第六周課堂

第六周目前進度

PImage wall[]=new PImage[3];
float wallX[]={0,0,0},wallY[]={0,0,0};
PFont font;
String time = "0";
int t;
int interval=0;
void setup() {
  size(650,450);
for(int i=0;i<3;i++) wall[i]=loadImage("wall"+(i+1)+".png");
for(int i=0;i<3;i++){wallX[i]=int(random(6))*130+600;wallY[0]=270;wallY[1]=320;wallY[2]=288;}
font=createFont("Arial",30);
background(255);
fill(0);
}

void draw() {
 background(255);
  line(0, 350, 650, 350);
  for (int i=0;i<3;i++)
  image(wall[i],wallX[i],wallY[i]);
for(int i=0;i<3;i++){
 wallX[i]-=2;
 if (wallX[i]<0){wallX[i]=int(random(6))*130+600;wallY[0]=270;wallY[1]=320;wallY[2]=288;};
}
{
 
t=interval+int(millis()/1000);
time=nf(t,3);
if(t==0){
  interval+=1;}
  text(time,600,50);

}
}

2014年10月13日 星期一

期中作品

火柴人跑步遊戲

1-1. 鍵盤按鍵讓小人跳過障礙物
1-2. 記時器,看一場多久會死掉
1-3. 地圖軸一直往前拉
1-4. 判定有沒有撞到障礙物,撞到障礙物則遊戲結束







2014年9月29日 星期一

01160520_陳瑋廷_HW03


↖背景↖滑鼠游標圖片代替
1.google - wav download:http://billor.chsh.chc.edu.tw/sound/boom.htm
2.線上去背景:https://clippingmagic.com/
↖圖片和音樂都放在這資料夾裡
↖按下去(聲音:gum.wav 槍聲)↖背景音樂(marcus_kellis_theme.mp3)

★未做:宮格裡有球、機關槍掃射多拉A夢