2016年1月22日 星期五

原來網路上有Library可用

網路資訊發達的好處是 原來很多事情都不需要親自coding.
https://www.pjrc.com/teensy/td_libs_AccelStepper.html
就以這網站的說明範例,這位作者也太佛心了吧.
看完之後我都想哭了....
X-Y Table的API都備好了...剩下就是交叉組合使用.

現在想要的是 買片萬用版 Nano的板子好貴唷
http://goods.ruten.com.tw/item/show?21511596464341

可搭配多枚A4988,電容, 12V電源, LDO,二極體  演練一遍這個範例.....

如果是UNO的版本..選擇多又便宜
Arduino cnc shield v3 雕刻機擴展板 

如就電子積木價格上的優勢,Arduino比Raspberry Pi較親切...

2016年1月19日 星期二

不用插電就很好玩的搖桿

大人看到搖桿大概就是想要接上電視 插上電源開機
但小朋友就不一樣囉!小孩最好玩的地方就是想像力.

老大莫約一歲多的時候,看到搖桿因為按鈕顏色很繽紛,
馬上煞有其事的就定位亂按了,但事實上該設備並未與任何裝置連線

光是按按鈕就很歡樂了.大腿還跨在上面壓住綠色按鈕.

兩年後.老爸我又添購新設備,如下.這回是兩姊妹模擬開車,
為啥是模擬開車,這想像力是姐姐的.姐姐叫妹妹來上車要開車囉.

同樣的,此設備在沒有接上電線的狀況下,兩個小孩玩得不亦樂乎.
等長大再回來看,不知道這兩位會不會臉色三條斜線.

但兩個人都很賞臉的,玩了一會之後要回頭玩爸爸之前提供的搖桿.
大概是配色不夠繽紛吧.顏色的問題好解決.

改裝剛好就如下圖,瞧一下子就彩色起來了.
至於為啥會是這個配色.這個啊~~因為SNK那個遊戲商的遊戲剛好有設定
A紅色/B黃色/C綠色/D藍色.就只是剛好套用上去. 黑色就不要去計較了.
至於換的理由還有一個!日系的按鍵比較不傷手.


2016年1月13日 星期三

JAMMA pin define

最近新認識了一個connector叫JAMMA, Pin define 如下
忽然在想 如果弄出一個萬用板 搭配如下Pin define 對應到Raspberry Pi後.
運行recalbox後不就變成了大型電玩機板了.


 這是recalbox的Pin定義,看來有機會..

但問題是JAMMA這一版本看起來button的數量太少
另外一個設定也只是把預留的部分多加兩鍵 但也不到六鍵的狀況....


沒想到 NEOGEO的設定是另外一個狀況,
利用音量的位置.或許這就是一招吧
畢竟當年大型電玩的部分 玩家也不會在意音量啊


Jamma Pinout
Solder SideParts Side
GNDA1GND
GNDB2GND
+5vC3+5v
+5vD4+5v
-5vE5-5v
+12vF6+12V
KEY H7KEY
coin counter #2J8coin counter #1
lock out coil #2K9lock out coil #1
speaker (-)L10speaker (+)
M11
video greenN12video red
video syncP13video blue 
service switchR14video gnd
tilt switchS15test switch
coin switch #2T16coin switch #1
2p startU171p start
2p upV181p up
2p downW191p down
2p leftX201p left
2p rightY211p right
2p button 1Z221p button 1
2p button 2a231p button 2
2p button 3b241p button 3
2p button 4c251p button 4
2p button 5d261p button 5
GNDe27GND
GNDf28GND

2016年1月9日 星期六

透過COM port控制Arduino的辦法

這篇文章 大概就是我需要的解藥了
http://coopermaa2nd.blogspot.tw/2011/02/arduino-serial-led.html

內文提到使用switch (inByte)這指令來判斷按下的鍵盤按鈕為何?
這下對於特殊的ASCII就會有疑惑了,比如說上下左右呢?
果然網路上的資料真多,一查馬上有.

First Character is Escape (27 [0x1B]) followed by...
Key PressedASCII CharacterKey PressedASCII Character
F10x3BINS0x52
F20x3CDEL0x53
F30x3DHOME0x47
F40x3EEND0x4F
F50x3FPAGE UP0x49
F60x40PAGE DOWN0x51
F70x41UP Arrow0x48
F80x42DOWN Arrow0x50
F90x43LEFT Arrow0x4B
F100x44RIGHT Arrow0x4D
F110x57WINDOWS0x5B
F120x58Print Screen0x54

瞧這就是答案了.嘿嘿~距離計畫完成又更進一點了.

 switch(inByte)
        {
            case 0x49:
              Serial.print("[PgUp]");
              break;
            case 0x51:
              Serial.print("[PgDn]");
              break;    

搭配上回的步進馬達控制 組合起來就開心啦...
// defines pins numbers
const int XstepPin = 2;
const int XdirPin = 5;
const int YstepPin = 3;
const int YdirPin = 6;
// Makes pulses for making one full cycle rotation
const  int pulses = 2;

void setup() {
  Serial.begin(9600);
  // Sets the 4 pins as Outputs
  pinMode(XstepPin,OUTPUT);
  pinMode(XdirPin,OUTPUT);
  pinMode(YstepPin,OUTPUT);
  pinMode(YdirPin,OUTPUT);
}
void loop() {

  if (Serial.available() > 0) {
    int inByte = Serial.read();
    switch (inByte) {
    //UP Arrow
    case '0x48':
      digitalWrite(YdirPin,HIGH); // Enables the motor to move in a particular direction
      for(int y = 0; y < pulses; y++) {
        digitalWrite(YstepPin,HIGH);
        delayMicroseconds(50);
        }
        digitalWrite(YstepPin,LOW);
      break;
   
    //DOWN  Arrow
    case '0x50':
      digitalWrite(YdirPin,LOW); // Enables the motor to move in a particular direction
      for(int y = 0; y < pulses; y++) {
        digitalWrite(YstepPin,HIGH);
        delayMicroseconds(50);
        }
        digitalWrite(YstepPin,LOW);
      break;
     
    //LEFT Arrow
    case '0x4B':
      digitalWrite(XdirPin,LOW); // Enables the motor to move in a particular direction
      for(int x = 0; x < pulses; x++) {
      digitalWrite(XstepPin,HIGH);
      delayMicroseconds(50);        
      }  
      digitalWrite(XstepPin,LOW);
      break;

    //RIGHT Arrow
    case '0x4D':
      digitalWrite(XdirPin,HIGH); // Enables the motor to move in a particular direction
      for(int x = 0; x < pulses; x++) {
      digitalWrite(XstepPin,HIGH);
      delayMicroseconds(50);
      }  
      break;
      digitalWrite(XstepPin,LOW);
    }



PS.
文中其中提到沒有直接反應的RS232軟體.感謝Google
馬上找到免費的

AccessPort 1.36 RS232 串列埠存取工具

http://tedmyblog.blogspot.tw/2011/11/accessport-136-rs232.html

2016年1月8日 星期五

Pandoras Box V4 Opening


萬惡的淘寶.竟然出現這樣的東西.讓我們來消滅它.
因此,同事們就發動團購了.

不免俗的一定要來給他開箱,鐵箱體內出現的主機板名稱為月光寶盒


都說要開箱了,繼續給他開下去,裡面出現了一張主機板
CPU是全志A13,ARM Cortex-A8 架構的,單核心
搭配有金手指,這金手指的Pin Define遵照JAMMAspec 但這不是重點.
重點是這裡面搭配的是SD記憶卡.

哈.那不就是跟樹莓派一樣,要搭配記憶卡當作業系統存放的ROM.
(喔~附的還是8G的記憶卡)
一樣都是ARM..會不會這張SD卡可以放進樹莓派..No!!

難道說...這是使用SDLMAME開發出的系統嗎?
想知道很簡單,再Windows下如果想看到Linux的系統,得靠一個軟體"DiskInternals"
http://www.diskinternals.com/download/zd1452349459378/Linux_Reader.exe
下載後安裝,就可以將SD卡的內容讀出.

看來這SD雖說8G,目前使用6.36G,如要更換ROM應該有空間.
就Linux的使用習慣來說,先往usr的目錄看看,一看還有個sd的目錄,這應該就中獎啦.
果真ROM就在此.


上網查了一下,看來也有玩家也是跟我有一樣的想法,會想要換遊戲.
不過他實驗成功的是 月光寶盒3 英文版....
http://mengxipeng.blog.com/2015/08/07/how-to-change-or-add-games-in-pandoras-box-v3/
還有影片呢.遊戲清單被改寫了.不過這是月光寶盒3,
經網路上的分享文章發現月光寶盒3的名氣蠻大的,因此有盜用品牌的現象.
下圖左為正常版本的月光寶盒3,而右邊呈現L型的版本則是月光寶盒3的複製版本.
也就是可修改的版本.
關於可修改的版本,法國人更猛,還有出完整的破解教學http://openthepandora.ovh/
這影片上是直接將月光寶盒3複製版本裝進營業用框體,
上網查了一下.其實這框體有類似的DIY套件.

題外話說很多,回來繼續討論開箱.

就搖桿的操控性來講,相較於SANWA搖桿按鍵手感以及按鍵的回彈delay的狀況來比較
大陸寶聯的表現是比較差的.差異的點應該在微動開關的部分
方向搖桿的微動開關回彈力過大, 會早成反方向誤擊.
按鍵的微動開關,switch的高度太高,造成delay的時間較長.如果要比連發的速度.這蠻累的.
如果我要改裝的話..算一下價格要花1650 .也是一筆開銷.

清單如下
三和搖桿 SANWA JLW-TM-8 兩支 380*2 = 760
三和 SANWA GT-Y 八方內橘圓盤 150*1 = 150
三和孔塞 SANWA OBSM-24,       40*2 = 80
三和按鈕 (SANWA PUSHBUTTON) OBSF30 紅*2  55*2 = 110
三和按鈕 (SANWA PUSHBUTTON) OBSF30 黃*2  55*2 = 110
三和按鈕 (SANWA PUSHBUTTON) OBSF30 綠*2  55*2 = 110
三和按鈕 (SANWA PUSHBUTTON) OBSF30 藍*2  55*2 = 110
三和按鈕 (SANWA PUSHBUTTON) OBSF30 黑*4  55*4 = 220