跳到主要內容

發表文章

目前顯示的是 2013的文章

Arduino Rx燈一直亮著

我在燒版子的時候 一直開關裝置管理員 大概兩萬次了 他就是不讓我燒程式進去 , 一下說找不到COM PORT 一下是沒出現COM PORT,原本想說放著 等案子要用在 去找,但過不久案子馬上要用啦)))崩潰,我就上arduino 官網 搜尋:"RX light always on","com port stuck" ....等等,最後我終於找到我要的答案了,"Rx light on" 就這麼簡單,解決步驟如下 1. Press and hold the reset button 2. Then hit the upload button in the Arduino software. 3. Only release the reset button after you see the message "Uploading..." appear in the software's status bar. 資料來源:http://forum.arduino.cc/index.php?topic=148503.0;wap2 總之 我可能之前燒程式進去時候 程式把Com port 佔著了,能力不足,能力不足~QQ

ActionScript3.0 Matrix簡述

先貼上官網網址: http://help.adobe.com/zh_TW/FlashPlatform/reference/actionscript/3/flash/geom/Matrix.html Matrix的功能 可以將物件 位移、旋轉、傾斜。 Matrix 有六個屬性: a :  在縮放或旋轉影像時,影響像素沿著 x 軸定位的值 b :  在旋轉或傾斜影像時,影響像素沿著 y 軸定位的值 c :  在旋轉或傾斜影像時,影響像素沿著 x 軸定位的值 d :  在縮放或旋轉影像時,影響像素沿著 y 軸定位的值 tx :  要做為根據並沿著 x 軸轉移每一個點的距離 ty :  要做為根據並沿著 y 軸轉移每一個點的距離 import flash.geom.Matrix; var matrix_1:Matrix = new Matrix(); trace(matrix_1); // (a=1, b=0, c=0, d=1, tx=0, ty=0) var matrix_2:Matrix = new Matrix(1, 2, 3, 4, 5, 6); trace(matrix_2); // (a=1, b=2, c=3, d=4, tx=5, ty=6)

Actionscriprt3.0一些觀念(四)

1.類別 每個Actionscript3的Class都必須放在一個和Class名稱相同的.as文件中。 一個類別的定義包含package路徑的定義,Class的名稱、屬性、方法、靜態屬性、靜態方法、構造函數。 每個.as文件中可以放置多個Class,但是只有與檔案名稱同名的Class才可以對外不可見 1.package關鍵字後面的括弧內,必須且只能定義一個Class 2.在package括弧內的Class必須與文件同名 3.在括弧外,可定義一個或多個Class,不可與文件同名。這些括弧外的類別稱為目前類別文件的套件外類別。只有目前類別文件中的成員類別可存取。 封裝概念---- 套件外-->套件-->類別-->套件外類別 import "*"這是通用自元,一次導入套件內所有類別。 2.getter & setter package { public class gettterandsetter { private var _realhello:String ="hello flash"; public var gettime:int=0; public var settime:int=0; public function get hello():String { gettime++; return _realhello; } public function set hello(ns:String):void { settime++; _realhello = ns; } } } package { import flash.display.Sprite; public class SampleGetterAndSetter() { var foo:gettterandsetter = new getterandsetter(); trace(foo.hello); //hello, flash! foo.hello = "hi actionscript3.0" trace(foo.hello); //hi actionscript3.0 trac...

ActionScript3.0 一些觀念(三)

1.函數 函數語句定義法: function testAdd(a:int, b:int):int{return a+b;} 函數運算式定義法: var test:Function = function(a:int, b:int):int{return a+b;} 1.1函數預設參數 function test(a:int = 3,b:int=2,c:int=1):void {  trace(a+b+c,a,b,c); } test();//6,3,2,1 test(9);//12,9,2,1 test(2,9)//12,2,9,1 2.靜態屬性和方法 static var 屬性:屬性類型; public static var 屬性:屬性類型 = 值; static const 屬性:屬性類型 = 值; (常數就要先付予值) static function 方法(參數):返回值類型{} public static function 方法(參數):返回值類型{} 透過實例來存取靜態成員會出錯 var foo:StaticSample = new StaticSample(); // new了foo實例 trace(foo.CLASSNAME); // 在StaticSample類別中有宣告一個靜態成員CLASSNAME foo.hello(); //方法也是一樣 3.構造函數 package { import flash.display.Sprite; public class SampleConstructor extends Sprite { public function SampleConstructor() { var foo:Foo = new Foo(); trace(foo); //輸出:[object Foo] var bar:Bar = new Bar("ActionScript3.0"); //輸出Bar's counstructor! //init executed! //可以看出Bar一建立時,就執行了構造韓數中的語句 trace(bar); //輸出:[object Bar] ...

ActionScript3.0 一些觀念(二)

1.三元if-else運算子(?:) (條件運算式)?(運算式2):(運算式3) 效果等同於 if(條件運算式){   return 運算式2; }else {   return 運算式3; } 2."as"、"in"、"is" is:判斷一個物件是否屬於一種型別 trace(9 is Number); //輸出true as:如果一個物件屬於一種型別,as就返回該物件。 trace(9 as Number); //9 trace(9 as Array); //null in:用來判斷一個物件是否為另一物件的Key或索引 var a:Array = ["q","w"."e"]; trace(2 in a); //true 陣列a含有索引2 trace(3 in a); //false 只有3個元素,沒有索引3的元素 3.迴圈 while,do while,for這三種是最常見的迴圈型式 while(迴圈條件) {    循環體    //改變回圈值 } for迴圈條件中 不一定只有一個變數值 例如:for(var a:int=2,b:int=12 ; (a+b)<50 ; a++,b++){....}(這樣也可) 4.break & continue break:跳出迴圈 continue:終止目前這一輪迴圈 for(var i:int=0;i<5;i++) { if(i==3)break; trace(i); //0,1,2(跳出迴圈)break } for(var i:int=0;i<5;i++) { if(i==3)continue; trace(i); //0,1,2,(跳出迴圈一次),4 continue } 5.break標籤與continue標籤 目的是假如遇上雙重回圈以上,子迴圈想指定父迴圈break或continue,就必須將每個break或continue後面加上標籤,之後想要哪一個圈跳出就直接寫上標籤名子即可。

ActionScript3.0 一些觀念

1.實值型 & 引用型 的區別: 簡單來說 實值型的就是一般資料型態直接定義他值或變數的型態 var a:int; var b:int = 2; var c:int = b; 以上都是實值型的。 var d:Array = new Array(); 這種就是引用型。 實值型無法改變她原先的值,然而引用型的就可以。 2.使用const宣告常數 在程式裡面程式設計師再做數學運算,可能會有一些變數不想讓他改變,讓他構成一個常數。我們就可以用const來宣告他。 const foo:Array = new Array(1,2); var a:Array = foo; a[0] = 100; trace(a); //foo = [100,2];不合法的 3.基礎資料型別 & 複雜資料型別 基礎資料型別:boolean , int , number , string .... 複雜資料型別:array , object... 4.關於陣列 在ActionScript3.0中,陣列裡面放的東西沒有型別限制,然而Java和C#則有這方面限制,要放相同資料型態的東西。 5.Object(物件) Object的成員有兩種:一種是屬性(Property),用來存放各種資料,一種是方法(Method),存放函數物件。 var foo:Object = {name:"abc", web:"www.abc"}; trace(foo.name); //abc var bar:Object = { hello:function(){ trace("Hello"); },ok:function():String {return "Ok";} }; bar.hello();//Hello trace(bar.ok());//Ok 動態添加屬性 var egg:Object = {}; egg.name = "土蛋"; egg.age = 26; trace(egg.age);//26 6.不同變數在Flash中會有不同的變數預設值 var a:int, b:uint, c:Number; var d:String, e:Boolea...

C# 初學

最近在學習C#程式語言,聽別人說這個語言可控制較為底層的功能,比ActionScript可以控制更多東西,FLASH當前台,C#的應用程式或式窗程式來當底層的東西,所以基於讓前後台的程式更加優化更有變化更豐富,所以我來自學C#一下,沒有人教應該會學很慢吧?! 今天來記錄一下應用程式裡面的Console.WriteLine()和Console.ReadLine(),讓程式可以接收使用者輸入(Console.ReadLine())並經過程式理來印出結果(Console.WriteLine())。 下列程式為"*" 正方形,你輸入數字他就呈現幾成己的正方形,由"*"排程的。 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication2 { class Program { static void Main(string[] args) { //輸入資料 do { //輸入資料 Console.Write("請輸入x 的值︰"); int x = int.Parse(Console.ReadLine()); //列印 空心正方形 for (int i = 0; i

巢狀迴圈

之前常聽人家說"巢狀迴圈" "巢狀迴圈" "巢狀迴圈" 原來就是兩個For 迴圈 真是會用但不知其名。 下列就是一個簡單的巢狀迴圈例子。  //程式可用在例如99乘法,假如把 j<10換成 j<i可以變成堆疊,去交叉比對  //應該吧 印象是這樣 for(var i:int=0;i

Interactive 101

GamePad:市價99元 戰斧悍將 光南賣很大 這是人機介面溝通的好東西,配合 JoyToKey (點字下載),可讓您配合您想要的電子媒材開關,數位訊號的為主,例如按鈕開關、磁簧開關、微動開關等等,送出訊號只有ON或OFF的媒材。 將GamePad拆開如下圖所示,其中主要的電路板,就是我們要焊接開關的地方。 將開關正極與負極焊接再指定的開關,當開關按下時,我們可以開啟(控制台)->(裝置和印表機)->USB GamePad(按右鍵)->(遊戲控制器)->(內容)。如下圖 當按下開關的時候,按鈕的數字會變紅色,表示迴路有通,偵測到你按下按鈕了。 而假如我們在程式中寫了接收鍵盤事件或者式滑鼠事件,來處發互動機制,我們就要搭配GamePad好朋友JoytoKey來設定按下按鈕幾就做什麼事。如下圖,來設定你要傳的東西。

ActionScript3.0 QRcode應用

QRcode是啥呢? 維基 說得很清楚! Q = quick, R = response,二維條碼,在這條碼裡面可以夾帶許多資訊,例如數字、字母、漢字等等。 那如何用FLASH去製作QRcode?以下有幾個步驟。 1.新增視訊 2.將視訊圖檔用BitmapData存下來 3.設定存檔擷取圖像 4.給外部AS比對圖檔(使用 zxing ,快去下載來用!) 5.自己製作屬於自己的 QRcode 6.GO! 步驟一:(程式碼) var camera:Camera = Camera.getCamera(); var videoDisplay:Video = new Video(300,300); camera.setMode(300, 300, 24); camera.setQuality(0, 100); videoDisplay.attachCamera(camera); addChild(videoDisplay); 步驟二: bmd = new BitmapData(300,300); bmd.draw(videoDisplay, null, null, null, null, true); 步驟三: function decodeSnapshot():void { videoDisplay.cacheAsBitmap = true; decodeBitmapData(bmd, 300, 300); bmd.dispose(); bmd = null; } 步驟四: function decodeBitmapData(bmpd:BitmapData, width:int, height:int):void { var lsource:BufferedImageLuminanceSource = new BufferedImageLuminanceSource(bmpd); var bitmap:BinaryBitmap = new BinaryBitmap(new GlobalHistogramBinarizer(lsource)); var ht:HashTable = getAllHints(); var res:Result = null; try { res = _myR...

ActionScript3.0 Math

*Math* 不管在任何程式語言,都是很好用的一個類別,別的程式語言可能不叫做Math。 而在ActionScript中有很多Math的方法,在這邊列出本身比較常用的Math方法。  Math.random(): random() 出來的數值介於0~1之間,所以我們家如要亂數在舞台某個位置的X座標可以這樣寫 MC.x = *Math.random()*400; //舞台大小400  Math.max(); 相對的有max就有min,在括號內可填入資料型態為Number的許多數值。 var test = Math.max(2,3,4,1,50,8,77); var test2 = Math.min(2,3,4); trace("test max:"+test); trace("test min:"+test2); trace出來 test max:77 test min:2 Math三角函數&PI Plangle = Math.atan2(ballY , ballX); angle=Plangle*(180/Math.PI); 上述例子中式綜合三角函數和PI圓周率的一個應用,其中所說的是Math.atan2取滑鼠移動的位置所擷取的X值與Y值做一個相除,回傳一個值。再運用圓周率去與剛剛香除取得的值相乘,取得角度。 flash官網中有許多的 math 介紹與方法。  FLASH關網:http://help.adobe.com/zh_TW/FlashPlatform/reference/actionscript/3/Math.html

AIR 平板開Webcam

最近朋友要使用平板掃描QRcode的程式,程式是運用actionscript3.0寫的,當然就點選AIR for Andorid檔案去做製作,製作過程就不用多說啦.........................(兩小時過去),終於到了發佈的時刻了。(檔案)->(AIR for Andorid發佈設定),一切OK,很開心的放到平板,結果是....如下圖所示。 白白白  白白白  超級白  攝影機沒出來.............................. 原因是:發佈設定中的權限 CAMERA選項要打勾 好啦OK了吧,結果放上去再試的結果,Webcam整個就像中邪似的模糊,非常有數位藝術碎形的FU(整齊方塊碎形)。 最後結果就是,平板的AIR,版本,不可以,太高,大概是要在2.6板,Webcam才不會有出現,我這種,狀況。= =浪費一個228和平紀念日的下午。

Flash import 外部SWC類別 巴拉巴拉應用

恩~像這種問題,用FlashDevelop就很容易解決,無論是import或是add 外部SWC檔案都很方便,但是用了FLASH,再編譯的時候,有時他就會出現找不到import的錯誤。如下圖 好啦,我們從頭做起吧,假如我們要import一些套件,首先我們就先創一個資料夾吧,叫做test好了。然後自己的FLASH檔也要放在test資料夾內。接著我複製com資料夾和core的SWC檔案,同樣也放置在test資料夾中。 接著我們點選(編輯)->(偏好設定)->(ActionScript)就會出現下圖 來源路徑點選+符號,接著點選資料夾圖像,將你的資料夾路進點選加入,如下圖 元件庫路徑與外部元件庫路徑點選-號旁邊的圖示,將檔案 如此一來我們要import外部的套件,或者是SWC檔,就都OK了,如下圖所示

讓你的部落格 程式碼 整整齊齊 乾乾淨淨

這幾天我看我的部落格程式碼越看越覺得她醜。所以我下定決心去尋找讓她變漂亮的方法,於是我找到了這位高手的部落格在介紹怎麼讓程式碼乾乾淨淨。他推薦用 SyntaxHighlighter 。目前最新的版本為3.0.83。 <參考資料:http://sharedderrick.blogspot.tw/2010/10/google-blogger-syntaxhighlighter-3083.html > 而我照著這位版主的方法做,一直都行不通,超奇怪的,因為它也是用Google bloger,我想說(怎麼可能阿),我嘗試了許久許久許久,都找不到辦法解決,結果我想說好吧,我把版面從動態範本改為最基本的範本,結果就OK了。所以結論是,Google bloger的動態範版,不能用這個(宇宙無敵霹靂程式乾乾淨淨票漂亮亮耳目一新)方法。 以下就是使用步驟: 前置步驟:先去關網下載她的 檔案包 ,接著,接壓縮之後,裡面有兩個資料夾中的檔案上傳到你的網路空間,我是上傳到我Google的協作平台(因為前人古人都是這樣做,方便咩),用意是第三步程式碼中有一些套件要直接連網址去讀取檔案,讀取檔案中的程式碼。 第一步:進去(範本) 第二步:點選(編輯HTML) 第三步:找尋程式碼中的<head>,並將程式碼貼在<head>中間</head>,貼上以下程式碼. 第四步:將你想要貼上的程式碼放在以下程式碼之中 程式放在這裡 第五步:完成 (PS. <pre class="brush: 這裡有對照表 "> )直接去改 Brush aliases所對應的程式語言名稱

Arduino 數位訊號

一樣用程式碼解釋(這裡所使用到的Digital中都是所謂的數位訊號) int buttonPin = 2; // 人機介面 按鈕 在這裡設定Pin 2 int ledPin = 13; // LED Pin 設定13 int buttonState = 0; //一個變數 容器 裝載buttonMode狀態 void setup() { pinMode(ledPin, OUTPUT); //初始設定LED pin 是輸出端 pinMode(buttonPin, INPUT); //初始設定buttonPin 是輸入端 } void loop(){ buttonState = digitalRead(buttonPin); //變數buttonState 儲存buttonPin的狀態,不是HIGH就是LOW if (buttonState == HIGH) { digitalWrite(ledPin, HIGH); //對應LED輸出端,讓LED發亮 } else { digitalWrite(ledPin, LOW); //對應LED輸出端,讓LED滅 } }

Arduino 處理接收的值

話不多說直接用程式碼解釋:(記得開中介程式) char incomingByte; //接收到的字元 這裡是兩個 這裡算是型態轉換的一個變數 char str[2]; //str陣列 裡面儲存 兩個字元 分別以兩個空間去儲存 int count = 0; //自定變數 void setup() { Serial.begin(9600); // 打開串列埠,設置串列傳輸速率為9600 bps } void loop() { if (Serial.available() > 0) //意思應該是 是否有傳值近來 { incomingByte = Serial.read(); // 把讀取的值 放在incomingByte str[count++] = incomingByte; if(count == 2) { count=0; //REFLASH陣列 Serial.print(str); // 印出陣列,接受到的值 exam(); //執行這個程式 } } } void exam(){ if(str=="W1") { Serial.print("W1"); // 如果字串為W1 就印出 W1 傳值給發送端 }else if(str== "S0") { Serial.print("S0"); // 如果字串為S0 就印出 S0 傳值給發送端 } }

Arduino 鍵盤事件

版子: Arduino Leonardo 之前我們在做人機介面時,把電子媒材所傳遞的類比或數位訊號透過Arduino轉換鍵盤或滑鼠事件都必須在靠中介程式或是JOYSTICK(要接上GamePad)的東西,雖然傳值也是要靠中介程式,例如C#、FLASH要傳字串或數字給Arduino接收,Arduino再去控制電器、機電等。但是這塊版子有提供新的寫法能夠直接控制鍵盤與滑鼠事件,無須在開中介程式。 其寫法如上圖: int digitalPin = 9; //我有接一個紅外線感測器,數位訊號,讓Arduino接收ON或OFF void setup() { pinMode(digitalPin,INPUT); //Pin9為輸入訊號端 Keyboard.begin(); //開起鍵盤事件 } void loop() { if(digitalRead(digitalPin) == HIGH) //在這個loop function 中持續去偵測Pin9 如果HIGH了就~ { Keyboard.write(65); // 就讓Keyboard寫"A" delay(1000); // 延遲1000毫秒 用意是不要讓店鬧一直印 讓他延遲一下在印 } }

ActionScript3.0 setChildIndex與getChildbyName

for (var i:int = 0; i < 4; i++) { var _mc:MovieClip = new ItemMC(); _mc.name = "item"+i; this.addChild(_mc); this.getChildByName("item"+i).gotoAndStop(i*20+1); } 我們宣告一個名叫做_mc的影片片段,使用自製類別(也是一個影片片段,這影片片段中有四個部分,使用程式去控制每個name停在指定的影格)。 這裡用for迴圈去讓他跑個四次,所以最後會產出四個不同的_mc.name,分別是item0~item3。 在倒數第二行的地方用this是因為上面addChild時是放在this這個空間裡面,所以我們要getChildByName的時候就要在this裡面找。而我在這裡做的事情是找到指定的名子,並停在我想要他停在的影格。其實這四個MC是同一個, if(trigger_.hitTestObject(this.getChildByName("item0"))) { this.getChildByName("item0").gotoAndPlay(10); this.setChildIndex(getChildByName("item0"),3); this.setChildIndex(getChildByName("item1"),2); this.setChildIndex(getChildByName("item2"),1); this.setChildIndex(getChildByName("item3"),0); } 上面這個是說假如 item0 碰到 trigger_ 影片片段,就會將舞台裡面的四個item重新排列他的圖層,從0~3,所以意思是item0跑到最上層。而改變圖層的方法()就是:setChildIndex( 影片片段 , 圖層位置 )。還算好用。

關於長寬比與投影機

寬高比 即一個影像的寬度除以它的高度所得的比例,通常表示為X:Y 或是 X*Y ,其中的冒號和叉號表示中文的「比」之意。 目前,在電影工業中最常被使用的是 anamorphic 比例(即  2.39:1) 。傳統的 4:3 (1.33:1) 仍然被使用於現今的許多電視畫面上,而它成功的後繼規格 16:9 (1.78:1) 則被用於 高畫質電視 和歐洲的 數位電視 上。這三種比例,是  MPEG-2 (DVD)數位壓縮格式所指定的三種標準比例,而 16:9 也被 藍光光碟 和 HD DVD 所使用,同時也是兩種普遍使用的 35mm 電影膠片之間的折衷方案(歐洲的 1.66:1 以及美國和英國的 1.85:1)。 上圖中每一個標籤都有一個英文名稱與對應的解析度,而當今我們的投影機規格中,解析度的部分就會以這些英文名稱定義之,例如:XGA解析度就是1024*768。 有關投影機設置或選購有幾點需要去注意: 1.投影機的投射的方式: 有正打  上打到下  下打到上,是背投影還是前投影或是短交投影,使用者與作品互動的距離,投射範圍會不會有人進入產生影子。 2.解析度-影響到製作前至設定與投影效果 。 流明-找尋適合場地的流明數投影機 。 鏡頭-影響到投影的距離,要符合現場空間,在展場空間設計之前必須計算妥當,每個鏡頭都有自己的投射比例,進而影響到投影機與牆面的距離,投射尺寸。輸入端子、電腦視訊輸入訊號。 3.投影機的微調功能,能不能做細部四點梯形較正、上下移動鏡頭、縮放比例。目前用過最棒的投影機是三洋的PLC-XM150,真的還不錯,但是很貴==。但聽說好像停產,三洋被Panasonic吃掉了。 PLC-XM150 投影機: http://www.herngwei.com/download/sanyo/chinese/PLC-XM150.pdf

有關解析度

影片或互動畫面等數位影像,根據不同解析度,可區分成 SD 、 HD 、 Full HD 。 等級 解析度 簡稱 畫質 SD 720*480 480p 、 480i 較差 HD 1280*720 720p 、 720i 佳 Full HD 1920*1080 1080p 、 1080i 最佳 在上述表格中,簡稱有 480p 和 480i ,加上 ”p” 的影片理論上會比加上 ”i” 還好,不過肉眼很難辨別兩者差異。 當我們再做作品的時候,客戶會提出許多的解析度,而我們就要抉擇,怎樣的作品適合怎樣的解析度,且有許多互動作品是必須用投影機投射出來的,投出來的尺寸,畫質, dot size ,投影機規格等等小細節都是環環相扣的,這可是一門學問,佈展與規劃展場設備可真是不簡單的一件事,需要了解許多 ” 眉角 ” 。 顯示卡輸出的視訊孔,一般常聽到的 VGA 是類比訊號 而 DVI 與 HDMI 則是數位訊號,有時候訊號不夠強或是 VGA 線路的問題導致解析度上不去,這時就要將輸出線路換成數位訊號的線路。 顯示卡 常見的接孔 : VGA (Video Graphics Array)  又叫做 D-SUB ,視頻圖形陣列接口,作用是將轉換好的模擬信號輸出到 CRT 或者 LCD 顯示器中 DVI (Digital Visual Interface)  數字視頻接口接口,視頻信號無需轉換,信號無衰減或失真,未來 VGA 接口的替代者。 DVI 數位端子通常比 D-SUB 要來得好,傳統的 D-sub 15pin 的電腦螢幕接頭走的是類比訊號, 將顯示卡內的數位畫面訊號轉換成類比訊號才送到電腦螢幕去;而數位介面全部內容均是採用數位格式的方式傳輸,從輸出端到接收端的傳輸過程中資料的完整性, 可以得到更清晰的影像。 DVI 的主要目的是讓顯示卡的畫面訊號透過數位的方式傳送到電腦螢幕。所以才會說 DVI 數位端子通常比 D-SUB 要來得更好。   DVI 接頭分成三種   ...