2014年2月24日 星期一

[arduino]Timer

下載Library


引入標頭檔

  • #include <Timer.h>

宣告Timer物件

  • Timer LED_Timer;

設定Timer對應時間所呼叫的Function

  • LED_Timer.every(1000,LED);    //每1000毫秒呼叫LED function

寫在loop裡,更新計時器狀態

  • LED_Timer.update();  
以oscillate設定每幾毫秒切換一次狀態
  • t2.oscillate(2, 200, HIGH); 
  • t3.oscillate(3, 300, HIGH); // 第一個參數:哪個腳位
  • t4.oscillate(4, 400, HIGH); // 第二個參數:幾毫秒
  • t5.oscillate(5, 500, HIGH); // 第三個參數:初始狀態
  • t5.oscillate(5, 500, HIGH,5); // 第四個參數:改變幾次後停止




對Timer附加處理事件,每個Timer可以同時處理10個事件



  • 每2000ms,呼叫doSomething事件
    • int tickEvent = t.every(2000, doSomething);  
  • ledEvent = t.oscillate(13, 50, HIGH); 
    • 對Pin13附加每50ms改變腳位狀態事件
  • int afterEvent = t.after(10000, doAfter); 
    • Timer t 附加一個10000ms後執行一次 doAfter函數的事件
  • 關閉某事件
    • t.stop(ledEvent);



表演藝術課程第一次呈現,馬達、燈光、計數的搭配

  • 程式

參考




2014年2月23日 星期日

[arduino]7-segment

一次指定PORT 0~7 為INPUT/OUTPUT

  • DDRD = B11111111;    // 1:OUTPUT,0:INPUT    

一次指定PORTD狀態

  • PORTD = B00101010;
  • 腳位對應   76543210

LED數字陣列

  • const byte LEDs[10] =
  • {
  •   B1000000,  //0
  •   B1111001,  //1
  •   B0100100,  //2 
  •   B0110000,  //3 
  •   B0011001,  //4 
  •   B0010010,  //5 
  •   B0000010,  //6 
  •   B1011000,  //7 
  •   B0000000,  //8 
  •   B0011000  //9 
  • };
注意
當0,1腳位被使用時,Serial相關指令皆不能用





2014年2月21日 星期五

自動追蹤程式開發

Key:
Kinect給予x,y,z座標後,透過arctan雙軸還原馬達視角,重新mapping給馬達








(未完整待續)

2014年2月20日 星期四

[Work]Free Hugs Doll

作品名稱

  • Free Hugs Doll


作品理念

  • 在台北街頭,常見許多外國人,他們總是友善,喜歡跟人交流;像作者遇過的情況是,有時候多看幾眼外國人,當他們發現你在注視他們時,他們往往會給你一個微笑;又或者在聖誕節時,當與他有個偶然相遇時,往往他會給你一個誠懇的祝福。
  • 在東方與西方之間的文化差異,擁抱是一件很不一樣的事,在西方擁抱是一件很常發生的事,是打招呼、是給予溫暖、鼓勵,但在東方卻很少見,作者認為擁抱可以是一件平常,偶見的行為,在台灣人與人之間往往給與一種疏離感,也許東方傳統思維使人們較為封閉,與陌生人間也較少偶發性的互動,台灣人不是沒有熱情,而是缺乏一種習慣、文化。


作品概要

  • 選擇一隻350的娃娃(沒錢),並在其胸前貼上壓力感測器,與手臂上裝上伺服馬達連接竹筷(沒錢),當人們去擁抱熊熊時,熊熊則會回抱你,抱它越用力,它則回抱你越大力。


遭遇困難

  • 壓力感測器太小(資金),導致擁抱反應不佳。
  • 壓力感測器墊於棉花,當人抱時,壓力感測器因無固體阻擋而向後導致靜力消除;加上寶特瓶稍加改善。
  • 馬達要固定在一個軟的材質上會有很大的困難,故固定在厚紙版上,但如此擁抱時便有個硬硬的東西。
  • arduino驅動2個以上的馬達便有電力問題,需外接電源獨立提供電力給馬達。

下版改進

  • 更改壓力感測器尺寸
  • 填入更多棉花
  • 垂直手臂支架減少硬硬感
影片


















2014年2月18日 星期二

[arduino]電源供應器


  • sony 手機電源線,查看OUTPUT約4.9V,450mA


















  • 原始樣貌
















  • 剝開後線內有塑膠保護層

















  • 剝開塑膠層...是多芯線


















  • 套上杜邦頭,大功告成










2014年2月7日 星期五

[unity]漂移碰撞效果

自然漂移

Key

  • 利用改變旋轉半徑使得物件移動



產生隨機某空間內座標

  • R_counter++;
  • //Debug.Log ("Rx: " + R_x + ", " + "Ry: " + R_y);
  • if(R_counter>=1000)
    • {
      • R_counter=0;
      • R_x = Math.Round(UnityEngine.Random.Range(-4.4f,4.6f),2);
      • R_y = Math.Round(UnityEngine.Random.Range(-2.4f,4.2f),2);
    • }


物件旋轉,旋轉半徑與現在位置vs第一個係數位置為半徑旋轉


  • private static Vector3 radius_1 = new Vector3 (0.6f, 0.6f, -5.185162f);
  • lotusObj.transform.RotateAround (radius_1, Vector3.back, 5 * Time.deltaTime);
  • 5 * Time.deltaTime -->數值控制旋轉速度



接近目標位置並改變旋轉半徑

  • if(R_x>radius_1.x)
    • {
      • radius_1.x+=0.01f;
    • }
    • else
    • {
      • radius_1.x-=0.01f;
    • }
    • if(R_y>radius_1.y)
    • {
      • radius_1.y+=0.01f;
    • }
    • else
    • {
      • radius_1.y-=0.01f;
    • }
  • 0.01f -->數值影響速度,變化太快半徑加大太快





自然碰撞效果

key

  • 利用兩個剛體不可撞入效果
  • 加上:上下左右前後蓋子,防止碰撞後的Z軸傾斜與跑出畫面外
  • 改變物件碰撞半徑










程式碼