痞酷網_PIGOO

 找回密碼
 立即註冊
!!! [系統偵測到廣告阻擋軟體] !!!

如果您覺得痞酷網對您有些許幫助,或者您認同痞酷網的理想,

那麼希望您將痞酷網設定為白名單.

並請在上論壇的時候,動動您的手指,用行動支持我們.

謝謝!
查看: 8391|回復: 35

搖搖棒 製作心得

  [複製鏈接]
發表於 2011-9-10 00:31:55 | 顯示全部樓層 |閱讀模式
本帖最後由 antlu 於 2011-9-10 12:54 AM 編輯

最近突然想到 2000年去美西看到一個玩具"搖搖棒",以前從來都不感想自己做,最近發現這些東西好像不困難,因為"焊接"對我還說試家常便飯,寫程式則是天大的困難,現在學了一些C語言也有一點順手了,於是想要做一個"搖搖棒"來爽一下,這種視覺暫留的玩意非常值得像我這樣的初學者,原因有: 焊接容易 程式簡單(不需要中断程式) 零件少除了水銀開關外都容易拿到手... 只是,一但搖動之後會發現,還是有一些玄機,要做的精巧不容易,要複雜的圖案要花時間和心思去"磨洋工",玩票就是玩票,因為網路上一支才169就可以有"周杰倫我愛你"假如把價錢加到250就可以自行程式規劃自己的"字",想要DIY的人就玩玩吧!!
現有的問題: 需要 LEGION大或其他高手相助,89C2051 P1 8bit 沒問題,但是 P3有7個BIT 其中6個BIT做輸出,一個BIT做為"水銀開關"的輸入以辨別搖搖棒的方向,這程式寫的技巧還沒突破...也就是單一個PORT 要作輸入也要輸出,會打架!!!

第一版搖搖棒順便試用 ISP 功能
搖搖棒A01 [搖搖棒].JPG



線路圖來自對面同胞分享的"資料"
搖搖棒A02 [搖搖棒].JPG



16個LED 另外一個PORT的一個BIT作為"去" "回"自型又反過來顯示,以免字會反過來...
搖搖棒A03 [搖搖棒].JPG



開動時閃爍
搖搖棒A04 [搖搖棒].JPG



一晃動就有圖案出來
搖搖棒A08 [搖搖棒].JPG

搖搖棒A10 [搖搖棒].JPG



學自大陸"杜洋工作室"的創意,我的效果不太好..學不像吧!!
搖搖棒B01 [搖搖棒].JPG




搖搖棒B02 [搖搖棒].JPG



ISP 是否只能用 11.0952M 石英? 換石英比換IC快多了,燒錄完換上一個24M的..
搖搖棒B03 [搖搖棒].JPG

搖搖棒B04 [搖搖棒].JPG



第二版使用 SMD,也是被"杜洋工作室"創作所影響---"大丈夫當如是"!!
搖搖棒B05 [搖搖棒].JPG



用漆包線比較省錢省空間...
搖搖棒B06 [搖搖棒].JPG



使用 89C2051,C寫好之後把他燒進去..省空間
搖搖棒B07 [搖搖棒].JPG



RESET 電容電阻
搖搖棒B08 [搖搖棒].JPG



14個LED (SMD LED) 拆字傳真機的掃描頭...
搖搖棒B09 [搖搖棒].JPG



線路簡單
搖搖棒C10 [搖搖棒].JPG



圖案和字型比較費工夫
搖搖棒C12 [搖搖棒].JPG

搖搖棒C13 [搖搖棒].JPG




評分

11

查看全部評分

發表於 2011-9-10 00:55:48 | 顯示全部樓層
真是厲害~~期待其他作品~~
發表於 2011-9-10 09:02:18 | 顯示全部樓層
哇!!!好神奇喔.這是什麼原理呢.跑馬燈的原理嗎??
發表於 2011-9-10 09:39:51 | 顯示全部樓層
回復 lsammy 的帖子

多工掃描+視覺暫留
LED字幕機的縮小變種應用
發表於 2011-9-10 11:43:31 | 顯示全部樓層
好神奇的東西,我還是第一次看到,
加個馬達,當led看板應該也不錯吧~:sam47
發表於 2011-9-10 11:55:54 | 顯示全部樓層
本帖最後由 ysc 於 2011-9-10 12:40 PM 編輯

回復 antlu 的帖子

但是 P3有7個BIT 其中6個BIT做輸出,一個BIT做為"水銀開關"的輸入以辨別搖搖棒的方向,這程式寫的技巧還沒突破...也就是單一個PORT 要作輸入也要輸出,會打架!!!
------------------------------------------------------------------------------------------------------------------
51系列IO應用算是最簡單的MCU,同1個PORT輸入與輸出混用很簡單,不會有打架的問題喔!

因為51系列IO都是假雙向的,輸出0時內部有電晶體將IO PIN拉成 0,但輸出1時是以內部提升電阻將IO PIN拉成1,將輸出電路想像成OPEN COLLECTOR再加一個PULL UP電阻就對了......這也就是說當輸入用時,該PIN必須輸出1讓輸出晶體OFF,當外部輸入1時PIN當然也是1,外部輸入0時,是由外部電路將PIN拉成0......所以其實輸出電晶體與外部輸入是WIRE OR的狀態。

所以只要把握一個原則,用整個BYTE輸出到PORT時,輸入PIN相對BIT必須為1,這樣輸入與輸出就能混用了。

對了,PORT 3一樣有8個BIT可以用喔,怎會是7個?<----剛剛沒注意看,原來是89C2051,一直想成89C51!89C2051 P3只有7BIT沒錯,不過PORT用法一樣,當輸入的一直輸出1就對了。
 樓主| 發表於 2011-9-10 12:36:53 | 顯示全部樓層
回復 ysc 的帖子

YSC大:
   感謝您的詳細說明,由儉入奢易,由奢入儉難,習慣使用89S52 32個I/O怎麼用都足夠,碰到 89C2051就"捉襟見肘",我再消化一下是看看!!  PORT 3 的BIT6 沒有出PIN 所以不會用!! 因為是初學所以都只把他們當作I/O 使用,聽說還有比較器功能等過一陣子熟練之後再玩!! 之前做了一個 LC METER (網路上抄的) 892051 MCU 還搞不定...
 樓主| 發表於 2011-9-10 14:09:03 | 顯示全部樓層
回復 lsammy 的帖子

就是 把要顯示的範圍切成N段,然後再每一段位置點亮一直線的LED燈,利用LED 亮/暗來決定,這樣就可以利用動態把字型顯示出來,"把"這個子 用放大鏡看出來"黑暗"是0 "白亮"是1,  "111101111011110,111101110111110,000000000000000,111101101111111,110000000000000,11011110111110,11011110111110,11000000111110,11011110111110,11011110111110,11000000111110," 這是"把"這個字,
位置"1"   111101111011110,
位置"2"   111101110111110,
位置"3"   000000000000000,
位置"4"   111101101111111,
位置"5"   110000000000000,
位置"6"   110111101111110,
位置"7"   110111101111110,
位置"8"   110000001111110,
位置"9"   110111101111110,
位置"10" 110111101111110,
位置"11" 110000001111110,
 樓主| 發表於 2011-9-10 14:10:36 | 顯示全部樓層
回復 yoyomay 的帖子

噴墨印表機上面架個8點的LED,來回點亮就可以顯示了...
發表於 2011-9-10 15:11:52 | 顯示全部樓層
本帖最後由 ysc 於 2011-9-10 03:13 PM 編輯

其實跟多工掃描LED顯示器差不多,所差別的是數字顯示器需要換字(DIGIT)驅動,而搖搖棒則完全以時間來決定順序輸出變換,做得細膩一點還要偵測來回搖晃的速度,再將順序輸出變換時間平均分布,EX:每晃一次是1秒鐘,如果是16欄位,則順序間隔是1/16秒,實際上要短一些,這樣才會完整顯示出來.......

固定圖形遙遙棒不會很難,比較難的是要如何自由變換顯示圖形,這牽涉到電腦軟體與通訊了,如能做到可在電腦編輯文字、圖形,文字最好採用電腦現有字型以WORD或WORDPAD就可編輯,圖形則可以是標準圖檔(如BMP、JPG),其實只要支援圖檔就夠了,因為大多數圖形編輯軟體都可以放上文字,編好之後下載到遙遙棒,馬上就有新圖形可用......呵呵~~會不會想太了了!
發表於 2011-9-10 16:32:23 | 顯示全部樓層
本帖最後由 雄爸爸 於 2011-9-10 04:44 PM 編輯

回復 ysc 的帖子

這是內地做的搖搖棒使用的編輯畫面
解析度是32*64
USB介面傳輸

拆解圖不用多做解釋了,內部構造寂簡,看了就會知道是什麼了
Noname (中型).JPG
DSC03767 (小型).JPG
DSC03761 (小型).JPG
DSC03762 (小型).JPG
DSC03763 (小型).JPG
DSC03764 (小型).JPG
DSC03765 (小型).JPG
DSC03766 (小型).JPG
 樓主| 發表於 2011-9-10 18:51:25 | 顯示全部樓層
回復 ysc 的帖子

ysc大:
   原來搖搖棒的技術還是很複雜!! 看樣子我可要好好的學習C語言了!! 光是計算時間和平均就很有看頭了,受教了!!
   傳送圖形更是複雜,希望多年後假如還玩微控或許可以寫出來吧!
  另外您指導的我已經解決了,真的可以 1 IN 6 OUT,只是程式還不太成熟....
發表於 2011-9-10 19:16:27 | 顯示全部樓層
antlu 發表於 2011-9-10 06:51 PM static/image/common/back.gif
回復 ysc 的帖子

ysc大:

單晶片程式我都是用組合語言來寫,高階語言(C,VB)只用在PC上,
單晶片程式用高階語言來寫,總覺得如同隔靴搔癢一般,很難跟硬體貼切在一起,
控制某個動作用了幾個指令花了多少時間都很難掌握,所以到現在都還是用
DOS+PE2來編寫、翻譯單晶片程式。

有電腦可以編輯、翻譯組合語言已經很幸福了,30年前連APPLE II都還沒出現,
當時是寫Z-80機器語言,在紙上寫組合語言,自己查表翻譯成機械碼,再將機械碼KEY IN......

 樓主| 發表於 2011-9-10 21:25:46 | 顯示全部樓層
回復 ysc 的帖子

YSC大:
   您好像跟LEGION大一樣,都習慣用 組合語言寫微控程式,我以前也曾經寫過(初學)好辛苦喔!!
發表於 2011-9-10 21:46:04 | 顯示全部樓層
antlu 發表於 2011-9-10 09:25 PM static/image/common/back.gif
回復 ysc 的帖子

YSC大:

我反而覺得.....用C來寫單晶片程式才是辛苦!

以前也有用C寫過程式,但都是寫PC上用的程式。
發表於 2011-9-10 22:22:19 | 顯示全部樓層
沒想到antlu大你可以多多作些玩具讓大家來分享
這個以前有看過是用風扇類的圓形旋轉模式來作,
一來手比較不會累,二來圖形更多更漂亮,antlu大就看你的了
這陣子快瘋了,本說電腦全重作,順手安裝個1鍵回復軟體,
沒想到D槽竟全被清乾淨,一時頭暈,D槽放的是全部程式,全部電路圖,和全部攝影檔
目前在找出所有之前備份東西來作還原,還在努力中了
發表於 2011-9-10 22:31:32 | 顯示全部樓層
ysc 發表於 2011-9-10 07:16 PM static/image/common/back.gif
單晶片程式我都是用組合語言來寫,高階語言(C,VB)只用在PC上,
單晶片程式用高階語言來寫,總覺得如同隔 ...

用組合語言應該有很多人都有這類的經驗,
記得以前念書時也是老師一人都發一份表單
寫好組合語言才去對應機械碼,再KEY進那個只有8個7段LED的機器中
之後進步一點都是寫好程式再去打卡進去程式
而有趣的是,如果原來是從組合語言進入MCU的人,一定都不太會習慣用C去寫
C有C的好處,但也有相對缺點
這個就好像從WINDOWS出來才進入電腦的人,
要用DOS類的模式,那是一件很辛苦的事
當習慣用C了,再去學組合語言,那確實是一件辛苦的事
畢竟兩者的原始學習出發點及時間是不同的

發表於 2011-9-10 23:45:39 | 顯示全部樓層
回復 legion 的帖子

legion大...您可找一個Unformat程式.可將你format的硬碟救回很多資料喔~~
發表於 2011-9-10 23:45:45 | 顯示全部樓層
legion 發表於 2011-9-10 10:31 PM static/image/common/back.gif
用組合語言應該有很多人都有這類的經驗,
記得以前念書時也是老師一人都發一份表單
寫好組合語言才去對應 ...

喝喝~~legion大可能也是4、5年級喔!用機器碼KEY IN到學習機應該是25年~30年前才會有的事,從APPLE II出現之後,大都改用LISA來編譯6502組合語言。

到目前為止,組合語言(要維護好幾種不同MCU程式)、C、VB都有使用,但C、VB都只用在PC上,因為從事的行業對於RealTime要求很高,MCU程式若不用組合語言來寫實在很難做好.......
 樓主| 發表於 2011-9-11 10:45:22 | 顯示全部樓層
回復 legion 的帖子

LEGION大:
    您辛苦了!! 祝您中秋佳節 點鬧乖乖! 因為 中元節到中秋節已經一個月了!!
   你提到的風扇玩具,多年前在羅東夜市買了兩支,前些天拆開來觀察發現他被微型化,利用馬達軸心傳導電源一端,另一端由外面導片傳送,風扇自己就是顯示模組,所以沒辦法用!! 我對機械這方面不內行(其他也是半桶水),所以才做出這個搖搖棒的玩具!!
  YSC大提到的還要計算揮動的時間,這下子我的頭一個兩個大了!! 本來小玩具的程式,這下子要做成大程式才可以,邊刷牙邊想,可能要動用到MCU的內部計時器或計數器了,沒辦法吃軟柿子只用 DELAY程式了....哈哈哈!! 這樣才不會老人痴呆...
 樓主| 發表於 2011-9-11 10:48:17 | 顯示全部樓層
回復 legion 的帖子

LEGION大:
   我的結論是: 要專業就要會組合語言和C並用,要玩票而已就用C來寫...我屬於"玩票"性質啦!! 還要分一些時間 修電扇 修水電 休息 吹長笛 吹噓...
 樓主| 發表於 2011-9-11 10:49:56 | 顯示全部樓層
回復 ysc 的帖子

YSC大:
    你的工作太專業了,看樣子可以包寫程式賺外快喔!!
發表於 2011-9-11 22:55:54 | 顯示全部樓層
回復 Dave 的帖子

這個就沒想太多了,從備份用的750G硬碟在回COPY中,
每次都要COPY好久.重灌3次,大概也回COPY已5,6次了吧
發表於 2011-9-11 23:05:18 | 顯示全部樓層
回復 ysc 的帖子

這個應該是念電子本科系的人都有作過的吧
至於LISA也是相當多人都相當熟的東西
機械碼,LISA,Z80,FORTRAN,PASCAL,68000,8086,BASIC,QB,VB,TC,VC
相信這些也都是本科系的人都走過的路
都不知道這些是怎麼走過的
確實只要RealTime有要求時,一定都是用組合來作,
可惜往往在數值運算時,那大概都是會令人頭昏眼花,
而在電子這條路上變化又太快,往往都是人跟不上變化,
久了,跑的跑死的死,往往都是世代一直在交換
而只剩一些人有空作作玩具娛樂自己了.

發表於 2011-9-11 23:08:32 | 顯示全部樓層
回復 antlu 的帖子

C有C的好處,組合語言有組合語言無法被替代的地方,
兩者共用也有好處和缺點,
只能說只要順手,在沒有特殊要求環境時
能作出來就是一件對的事,
至於用什麼語法就看各人喜好及順手度,
這個就和專不專業沒太大分別了
發表於 2011-9-11 23:16:51 | 顯示全部樓層
本帖最後由 legion 於 2011-9-11 11:20 PM 編輯
antlu 發表於 2011-9-11 10:45 AM static/image/common/back.gif
回復 legion 的帖子

LEGION大:


這個目前的情形就如下面這張圖,
這是剛剛還在發生的情形,看樣子沒搞定前
依各人的個性,大概會一直跟它玩下去,n_005|

ATAPI.jpg
ATAPI.jpg
 樓主| 發表於 2011-9-12 01:19:33 | 顯示全部樓層
LEGION大:
   中秋夜!! 不要太埋頭苦幹,放鬆一下問題或許就"浮現出來"!! 電源不穩嗎?
發表於 2011-9-12 01:34:47 | 顯示全部樓層
antlu 發表於 2011-9-11 10:49 AM static/image/common/back.gif
回復 ysc 的帖子

YSC大:

不要啦,饒了我吧!.....寫了20幾年程式目前已是退休狀態,寫程式賺外快壓力太大了,
還是每天做做麵包比較輕鬆愉快!是真的可以吃麵包不是麵包板喔。
發表於 2011-9-12 13:08:46 | 顯示全部樓層
回復 ysc 的帖子

說不定哪天y大心血來潮
做個"麵包板"的造型麵包
來試試水溫
 樓主| 發表於 2011-9-12 13:57:01 | 顯示全部樓層
回復 ysc 的帖子

YSC大:
   我也做麵包ㄟ.前一陣熱了幾個月!! 鄰居們(除了上法院告我的以外)都送上一輪了,最近比較冷卻了... 那你程式方面要不要"網路收徒弟啊" 我還有很多要學的...
   這兩天就一值在想"怎麼把搖晃的時間紀錄起來然後去改變顯示的平均時間"這問題如何"解", 還有因為體積變小使用了89C2051 結果 時間延遲全都變了,好像 89S52 和 89C2051 的時間延遲差很多.... 同樣的 12M石英震盪器

//------------微秒延遲---------------------------------
void DelayUs2x(unsigned char t)
   {   
while(t--);
   }
//--------------毫秒延遲--------------------------------
void DelayMs(unsigned char t)
{
while(t--);
   {
DelayUs2x(245);
DelayUs2x(245);
   }
}
您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

關閉

站長小叮嚀上一條 /1 下一條

禁閉室|手機版|連繫我們|痞酷網電子技術論壇

GMT+8, 2024-5-2 10:11 PM , Processed in 0.098763 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.