發表文章

IIC2USB bridge讀i2c裝置

圖片
最近長官因為客戶不斷問hall sensor的問題,希望我弄一個報告可以在未來客戶問起時,直接把報告寄給客戶減少信件的往來浪費時間。這種問題的簡單答案就是請hall sensor廠商提供application note出來即可,但是客戶實在是求學心切,將應用市場當學院,導致我也不得不花一些時間在hall sensor上。但是現在有個問題就是客戶還沒定下機構尺寸造成磁鐵大小不清楚的前提下我沒辦法做報告,敝公司也沒有什麼量磁力的儀器,導致我也很無奈,陷入一種雞生蛋,蛋生雞的泥沼。 後來想到我手上有磁力感測IC(magnet sensor)又稱為eCompass(電子羅盤),他是i2c介面,主要是拿來量地磁用的,雖然最大可以量到的高斯值只有8.1,但是針對磁鐵大小與磁力的簡單評估堪用了。再來就是本來打算接到我上次弄的cy8c27443+LCD模組去看高斯值的,但是由於手上還有個i2c to USB bridge,所已決定用這個bridge讀值。回想起來,我跟Cypress還挺有緣的,從一開始接觸的8pin的chip開始,中間Cypress也有來到我們公司介紹我也拿到一些sample可以拿來練習,還有就是某天在實驗室撿到一個看起來怪怪的東西: 上網查是Cypess出的I2C to USB bridge。然而這個bridge可能中間有其他廠商經手,所以裡面的firmware已經被改掉(bridge control panel讀不到這一條bridge),不過還好Cypress很佛心有提供原本的frimware,所以還是可以藉由miniprog再重新裝回原本的firmware,因此後來開啟bridge control panel可以正常讀到這一條bridge了。 藉由這個i2c to USB bridge可以將eCompass讀到的磁力值show在電腦螢幕上,這樣我就可以用比較有彈性的方式做報告了。

1602 LCD for PSoC

圖片
玩了一陣子的Cypress PSoC1 cy8c21123之後,雖然覺得8pin的IC竟然可以塞那麼多模組很驚豔,但是終究8pin的IC可用的IO才6pin,並且flash size才4KB,用了幾個內建函式庫會發生塞不下的窘況(例如要做i2c to UART功能需要將i2c device讀到的浮點數轉成字元印在電腦的終端機上,只是加個ftoa功能就把flash塞了一大半)。所以後來弄了幾顆cy8c27443來試試看,畢竟28pin可以利用的資源與彈性都比較大。首先就從內建的LCD user module用起,畢竟人家都寫好了protocol,只需要呼叫很方便... 雖然理想情境是這樣,但事實上發現點不亮,一度是以為我買的1602 LCD跟PSoC內建user module函式多少有出入,所以搞到最後自己去寫protocol。然而,寫完protocol後仍然不亮,用邏輯分析儀分析的結果也是感覺良好,到最後才發現是LCD的Vo訊號應該要下拉一個小電阻或是接地才會有畫面,因為Vo分壓後電壓越低液晶畫面越明顯(所以很多demo board會將Vo腳位直接拉地),真的是有點粗心。 結論是,其實PSoC內建的LCD模組雖然說支援Hitachi HD44780 ,但是其實類似這種LCD的protocol都是一樣的,所以都可以支援,包含 pvc160203 與 STC2E16DRG 。 試完這個後,接下來很多訊號的輸出基本上就可以不用用電腦讀UART了,直接顯示在LCD螢幕上即可。

縮時攝影 西巒山&郡大山

圖片
其實我覺得我的Olympus XZ-1已經發揮到了他的極致(畢竟應該很少人會把一台DC拿來玩縮時攝影),因為已經開始再挑剔他的畫質了。常常有人說我怎麼不買一台單眼... 雖然曾經有過這個念頭,但是一想到平常鮮少有機會把一台厚重的相機拿出來用,覺得很不切實際就作罷了。不過背後其實還有個主要的原因就是這個世界上沒多少人可以將隨身DC發揮成這樣,還蠻有成就感的,不排除哪天要將他除役時,把它拆了裝在其他的裝置上,繼續以其他的形式貢獻他的良能。

關於黑白照片效果

圖片
在photoshop中如果要將照片做成黑白照片,最簡單的方法就是: 影像\調整\去除飽和度。以下是原圖與一張去除飽和度的圖。 [原始圖檔] [影像\調整\去除飽和度] 這樣的做法雖然最快,但是在光線的呈現上效果比較差。目前的做法是基於RGB彩色座標將RGB的飽和度去除,但是如果進一步將色座標系轉成Lab彩色座標系再做去除飽和度的動作,這樣光影的表現會比較出色(注意燈籠與葉子亮度的部分),最後再轉回RGB,確保大部分的看圖軟體都可以正常看圖。 [影像\模式\ Lab色彩 -> 選擇Lab色板的L  -> 影像\模式\灰階 ->  影像\模式\RGB] 最後,如果還想讓照片更有復古的效果,可以使用內建的漸層對應功能,並在預設集內選擇相片色調。個人傾向相片色調裡面的硒色2 [將照片套用"硒色2"的漸層對應的結果]

樂高像素拼圖之照片像素化教學

圖片
有時候覺得自己桌子太曠,跟工業設計那些人比起來,跟沙漠沒甚麼兩樣。正逢最近流行樂高,弄個樂高像素拼圖點綴一下桌面也不錯。(其實本來是要做鬼塚英吉的,但是後來沒存檔又不小心關掉PS,又不想要同樣的事情做兩次,所以後來選了格瓦拉) -------------------------以下是照片像素化的教學分隔線------------------------- 為了將一張圖片做成樂高像素拼圖,需要一些方法將照片像素化。 樂高的底板最大的大小為48x48顆粒的正方形,實體大小可以參考上面的照片,其實還蠻大張的。可以搜尋"lego 628"找到這一塊底板的資訊。當然,如果不需要這麼大或是需要更大的話,可以選擇比較小的或是併板。 選照片的原則必須以"顏色簡單"、"構圖簡單"為原則。因為樂高的顏色有限,所以不建議找顏色太過豐富的圖案;並且48x48顆粒的板子實體就已經那麼大了,構圖太複雜的圖片很難塞進48x48的大小。因此簡單的卡通圖片就很適合拿來改成像素畫。 這一張是在網路上找到的皮卡丘。皮卡丘,就是你了! Step1: 48x48的比例為正方形,這張圖不是正方形,所以需要裁切成正方形 Step2: 濾鏡\風格化\尋找邊緣 Step3: 影像\調整\去除飽和度 Step4: 影像\影像尺寸,將寬度與高度設為48x48像素。 Step5: 然後照片就會變得非常小,要放很大檢視,以像素的尺度來看圖。 Step6: 影像\調整\色階,將輸入色階暗部調到190。這個步驟的目的是要讓輪廓明顯,所以需要看情況調整。 Step7: 影像\調整\色調分離。色階調到2,也就是黑白。 Step8: 接下來就靠自己的感覺修圖。選擇鉛筆工具,筆頭大小調成1,用黑色與白色慢慢修到自己滿意為止。(不會太麻煩,我才修不到10分鐘) Step9: 再來就是用油漆桶工具上色,這裡用到四種顏色。(這之間我有把臉部紅色部分的輪廓也用鉛筆工具改成紅色) Step10: 最後再用鉛筆工具加上一點裝飾,完成。是不是很簡單呢。 Step11: 想辦法買到底板,...

關於後製影像品質 - 漸層的處理

圖片
自己一直有在玩影像處理,並且時常將拍攝過後的照片做後製的動作。不過最近針對一直存在的問題越來越覺得不可以忽略,他就是"漸層"。通常一張照片如果是都市或是人物的部分,漸層在整張圖所佔的比例有限,所以後製的過程中比較難察覺到後製所帶來的失真。但是如果照片是風景照,漸層的比例就會偏高,如果這個時候又要加上一些特效,整體的品質就會大幅下滑,到最後存成jpeg的時候,對一些比較挑的人來說,幾乎是不能看。 後來做了一些小研究的結果,如果照片要後製的話,最好先把照片轉成16位元的格式後製,不然就是從raw檔匯出的過程,不要降成8位元,直接以16位元匯出。等到一切處理好之後再轉成8位元格式。至於為什麼最後要轉成8位元的原因是,目前的電腦系統螢幕顏色深度都是24位元,也就是RGB各佔8位元。16位元的數位檔案代表著使用者需要48位元深度的螢幕才有辦法呈現,不過相信目前沒有人看過48位元的螢幕。 以下以一張黑白的漸層做例子: Step1: 先將這一張圖片轉成16位元模式,或者從raw檔轉匯出來不要降成8位元。 Step2: 做想要做的候製。 Step3: 轉成8位元。 Step4: 存檔。 以下是我依照以上的步驟存的檔案: 如果不經過Step1與Step3的轉換直接後製,結果將會如下(上下兩張圖片可以下載做比對):

Temperature logger

圖片
紀錄了七個多小時我在公司座位的溫度,看起來的確是蠻冷的。 這個溫度感測紀錄也是用Cypress PSoC弄的。之前搞定了 行動電源 與 縮時攝影快門 後,想說要做點純數位的東西,練習MCU的數位介面溝通。不過其實都已經模組化了,充其量只能說是應用,沒有寫到底層協議部分。 為了要將溫度的資料可以記錄在電腦上,需要有可以跟電腦溝通的介面,PSoC1最基礎的介面就是UART,不過這只需要單方向從MCU丟資料到電腦,所以選用比較簡單的TX模組即可,還可以省掉一根RX腳位。 再來就是MCU與溫度感測器的溝通,這個是用Ti的溫度感測器,i2c介面。介面膜組的使用很方便,application note寫得清清楚楚了。 不過之中遇到了一些問題,後來才知道是這顆MCU的flash space不夠用(4k byte),導致本來想要印含有小數點的溫度資訊,只能先丟16進制的資料出來,在把log出來的資料丟給excel使用hex2dec轉成溫度。 為什麼4k byte不夠用? 為了完成以上的工作,需要用到的MCU user module有: UART_TX8, I2C_HW, counter8(for uart baud rate generation), sleep_timer(for delay),還有一些標準函式庫的資料,例如ftoa(將浮點數轉成字元,為了要印在UART_TX上),ftoa用了大概1.6k的flash空間,上網找解決辦法有人說可以用csprintf...後來發現這個吃更多2.5k左右。不過還是很感謝上網問人馬上解答才能讓我知道真正的原因在哪裡,在這裡也覺得Cypress服務做的真是不錯。最後附上連結是我上網問問題的網頁,並且有FAE順便將他過去如何減少code space的經驗寫進去,服務真好!  http://www.psocdeveloper.com/forums/viewtopic.php?f=3&t=9139