HS U NC PO TU1 RT 05 FO LIO
未來市民計畫
Citizens of Tomorrow
Waag 的總監Frank Kresin提到:「智慧城市是什麼呢?」 很多政府或國家注重科技的運用,但其實應該要轉換觀點,智慧城市應該聚焦在 建立「智慧市民」。此工作坊使參與者一同討論如何善用新科技與網路技術,引 導民眾關心周遭都市議題並轉化可被實踐的行動。 工作坊先以發散式思考議題,一人想三個城市議題,經過票選後聚焦濃縮成四個 小組去討論「交通運輸」、「資訊不對等」、「綠色資源共享」、「閒置空間再 利用」四項。最終成果發表如何改善現狀,以及以數據為基礎的發展可能性。
tidrlansport a t i o n egreenispancdustry e reuse unequalinformation
混合實境工作坊 Kinematics & Infogram
本工作坊目的在結合工業用機械手臂、動畫軟體、以及擴增實境等科技,將動態 幾何形體、實體物件、虛擬影像與視覺化素材,進行混搭實驗與創作。工作坊中 學生將學習與設計作為資訊載體的幾何面體,攤平、製造後,接在機械手臂上。 其次,在Maya中創造一系列幾何物件與資訊的動畫,匯入VR/AR頭戴顯示器, 作為幾何物體的故事內容。最後,將動畫路徑透過GH和TACO匯入機械手臂中。 成果將是一段演出,結合了實體物件的動力舞蹈與虛擬內容的豐富敘事。
system of VR with robotic arm
KUKA with GH connector by 3DP model by maya VR effect
grasshopper for route
MODEL1
MODEL2
MODEL3
混合實境工作坊 Kinematics & Infogram
工作坊中使用MAYA這套軟體去創造各式幾何體,以多面體的面來當做讓VR眼鏡 可以觸發動畫的條件,在這實驗摸索中,要去找尋實體的狀態複雜而幾何面又不 會太破碎導致動話無法啟動,最後的量體在套用到路徑的設定後,會自行轉到當 做觸發條件的面來讓軟體讀取,而經過眼鏡可以看到只有在虛擬世界中的數位模 型,而錄影的狀態可同時把動畫和真實的量體背景互相重疊,完成故事的路徑。
資訊顯影計畫
-Cyberphysical InformaticsNCTU.2016.fall.robotic project
資訊顯影計畫
Cyberphysical Informatics
本作品為一連串實驗性集合創作的結果,始於一個好奇,當今全球重要社會與 永續議題均牽涉到資訊透明度問題,以及政府與企業中資訊隱匿與扭曲的現象。 以一個實驗性呈現媒介接續,運用機械手臂在空間中精準運動的特性,結合光線 、投影、虛擬實境等媒介,完成一件結合機械手臂與虛擬資訊的抽象敘事實驗, 同時也是一個多層次隱性資訊的揭露旅程。
Explosion diagram arduino mega A1part
Circuit board A2part B1part connector
*four parts by 3Dprinting B2part
one tube
Power plug 595 chips
M6
Transistor
KUKA
Column M6
resistance
base in any tools
tube center
plug cover bakelite Circuit board
for arduino M6
*the center of tools to carry tubes & components
unit
M6
light tool
本作品以一個實驗性呈現媒介接續,運用機械手臂在空間中精準運動的特性, 結合光線、投影、虛擬實境等媒介,完成一件結合機械手臂與虛擬資訊的抽象 敘事實驗,同時也是一個多層次隱性資訊的揭露旅程。 在各種資訊系統整合上我們分層以下三種程序來達到整體表現的串聯,如何讓 手臂在空間中精準的動作以及附載資訊的工具頭如何製作,arduino板中的資訊 程式又是如何運作,這些系統的整合跟運用的技術在下圖中去闡述。
資訊顯影計畫
Cyberphysical Informatics
1
手臂路徑動作編排 robotic arm moving design grasshopper / taco component
transmission by net movement & visual objects
程式編排 coding&design void loop() {
//holders for infromation you're going to pass to shifting function byte data; byte dataArray[10]; void setup() { //set pins to output because they are addressed in the main loop pinMode(latchPin, OUTPUT); Serial.begin(9600); //Binary notation as comment dataArray[0] = 0xFF; //0b11111111 dataArray[1] = 0xFE; //0b11111110 dataArray[2] = 0xFC; //0b11111100 dataArray[3] = 0xF8; //0b11111000 dataArray[4] = 0xF0; //0b11110000 dataArray[5] = 0xE0; //0b11100000 dataArray[6] = 0xC0; //0b11000000 dataArray[7] = 0x80; //0b10000000 dataArray[8] = 0x00; //0b00000000 dataArray[9] = 0xE0; //0b11100000
}
}
for (int j = 0; j < 10; j++) { //load the light sequence you want from array data = dataArray[ j]; //ground latchPin and hold low for as long as you are transmitting digitalWrite(latchPin, 0); //move 'em out shiftOut(dataPin, clockPin, data); //return the latch pin high to signal chip that it //no longer needs to listen for information digitalWrite(latchPin, 1); delay(300); }
//for each bit in the byte myDataOut //NOTICE THAT WE ARE COUNTING DOWN in our for loop //This means that %00000001 or "1" will go through such //that it will be pin Q0 that lights. for (i=7; i>=0; i--) { digitalWrite(myClockPin, 0); //if the value passed to myDataOut and a bitmask result // true then... so if we are at i=6 and our value is // %11010100 it would the code compares it to %01000000 // and proceeds to set pinState to 1. if ( myDataOut & (1<<i) ) { pinState= 1; } else { pinState= 0; }
// the heart of the program void shiftOut(int myDataPin, int myClockPin, byte myDataOut) { // This shifts 8 bits out MSB first, //on the rising edge of the clock, //clock idles low
//function that blinks all the LEDs //gets passed the number of blinks and the pause time blinkAll_2Bytes(2,500);
//internal function setup int i=0; int pinState; pinMode(myClockPin, OUTPUT); pinMode(myDataPin, OUTPUT);
}
//Sets the pin to HIGH or LOW depending on pinState digitalWrite(myDataPin, pinState); //register shifts bits on upstroke of clock pin digitalWrite(myClockPin, 1); //zero the data pin after shift to prevent bleed through digitalWrite(myDataPin, 0);
//stop shifting digitalWrite(myClockPin, 0); } } //blinks the whole register based on the number of times you want to //blink "n" and the pause between them "d" //starts with a moment of darkness to make sure the first blink //has its full visual effect. void blinkAll_2Bytes(int n, int d) { digitalWrite(latchPin, 0); shiftOut(dataPin, clockPin, 0); shiftOut(dataPin, clockPin, 0); digitalWrite(latchPin, 1); delay(200); for (int x = 0; x < n; x++) { digitalWrite(latchPin, 0); shiftOut(dataPin, clockPin, 255); shiftOut(dataPin, clockPin, 255); digitalWrite(latchPin, 1); delay(d); digitalWrite(latchPin, 0); shiftOut(dataPin, clockPin, 0); shiftOut(dataPin, clockPin, 0); digitalWrite(latchPin, 1); delay(d); } }
//clear everything out just in case to //prepare shift register for bit shifting digitalWrite(myDataPin, 0); digitalWrite(myClockPin, 0);
22 24 26 28 30
MEGA gnd vin
int latchPin = 8; //Pin connected to SH_CP of 74HC595 int clockPin = 12; ////Pin connected to DS of 74HC595 int dataPin = 11;
Shift register arduino
gnd 13 12 11 10 9 8
2
only 5V in
coding for lighting
3
電路製作 Circuit board production resistance set 100
one connect to arduino
10
in
10
595 1
10 4
595
p g p w b o R
Shift register arduino lock up on board
Circuit board*4
out
595
595
595
595
in _ +
595
595
in _ + out
+ _
595
in _ + out