Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 11284|回復: 12
打印 上一主題 下一主題

請教6352 電子羅盤的控制

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-7-29 17:29:02 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
小弟買了個電子羅盤, 搭配藝科買來的arduino Mega
不過怎麼接都沒有任何反應, 用網站抓來的範例程式

腳位有正確接到SDA/SCL
執行以後沒辦法接收到任何資訊哩
請教是否有大大們使用過這樣的組合呢
2#
發表於 2009-7-30 08:44:03 | 只看該作者
SDA/SCL 腳位 of Arduino mega  is different w/ Arduino 2009
Do you check this?
3#
 樓主| 發表於 2009-7-30 15:26:32 | 只看該作者
感謝回覆

他板子上已經標明的很清楚
(原廠PDF文件卻沒有清楚的寫出, 也找不到詳細版子放大接線指示圖)
pin 20/21是這兩個腳位
可是我插上去也是不行
資料'A' 送過去 6532以後, 等半天也沒有任何資料的回傳

程式碼用的是藝科網站上的那個不行, 我有去wire網站抓來那個程式碼也差不多
也是沒反應
裡面那段
  if(2 <= Wire.available())    // if two bytes were received
  {
    reading = Wire.receive();  // receive high byte (overwrites previous reading)
    reading = reading << 8;    // shift high byte to be high 8 bits
    reading += Wire.receive(); // receive low byte as lower 8 bits
    reading /= 10;
    Serial.println(reading);   // print the reading
  }
我有改為
  while (Wire.available()) // 一但抓到任何回傳都直接印出來
  {
    reading = Wire.receive();
    Serial.println(reading);   // print the reading
  }

但測試半天依舊抓不到任何東西
EZ1超音波/ping/加速度計同時上去都沒問題, 但現在單接6352就怎麼弄都沒辦法
請各方高手幫幫忙吧
感激不盡
aroboto 該用戶已被刪除
4#
發表於 2009-7-30 16:36:09 | 只看該作者
本帖最後由 aroboto 於 2009-7-30 16:42 編輯

3# mzw2008

抱歉,今日才看到此文章

藝科的客戶 歡迎透過藝科新建構的論壇作發問問題
www.aroboto.com/forum

工程部門針對此論壇每日都會作確認

已購買產品的客戶,可以使用購物網站的帳號直接作登錄

相信比較不會出現您無法解決問題的困擾


針對您提出的問題,今明兩日 會請工程師作測試
並將相關測試資料回覆給您

BEN


BEN
5#
發表於 2009-7-31 09:44:30 | 只看該作者
3# mzw2008

pin 20/21是這兩個腳位,
問一下, 你的HMC6352 是 Sparkfun 的還是 Seeed studio的?
可以秀一張連線方式的照片嗎 ?
6#
 樓主| 發表於 2009-7-31 13:47:20 | 只看該作者
本帖最後由 mzw2008 於 2009-7-31 13:48 編輯

呃? 板子上沒寫? 寄來只有塑膠包裝袋和裡面的一個電路板
不過根據上面畫的那個圖樣我覺得是Sparkfun  (很像一隻鴿子)

另外我數位相機被借走,想畫個我的接線圖上來提供參考
不過這裡的圖片要如何上傳啊? 沒提供介面@@
等於需要我自己有空間, 然後提供超連結喔?
7#
 樓主| 發表於 2009-7-31 13:56:30 | 只看該作者
另外, 照原廠網站講的接analog P4 / P5的作法我也是過一樣不行

個人猜想, MEGA的定義和別的東西不太一樣
因為原廠網站目前為止還沒有更詳細的文件出現
可能還在撰寫中, 其他版本都有相關的網頁或是PDF了
http://arduino.cc/en/Guide/HomePage
裡面的GettingStart目前為止還沒出現MEGA版本的超連結

這塊板子說實話還滿好用
本來一看到覺得很複雜, 後來仔細閱讀原廠文件發現她線路這樣安排真的很好做事
只要搭一塊ArduinoMEGA擴充版上去, 上面就可以自己悍接一堆想要的東西
電路的整合性就會比較好
前幾天才用2個7位數字顯示器作了個數位計時器來玩
用電路板悍成一塊, 底下的針腳直接插上去就好, 不需要用麵包版搞的跟被搶打到一樣
8#
發表於 2009-7-31 14:56:37 | 只看該作者
本帖最後由 rose40 於 2009-7-31 15:01 編輯

看起來接法應該沒問題, 有那圖應該是 Sparkfun,
我接過 Mega 和 Seeed studio 的HMC6352
類似 http://analyst-tw.jjvk.com/?p=77
我接 rtc 也OK, 時間輸出也OK,
所以 spi 應該是OK.
接 6352 會有輸入輸出, 但是輸出的角度不太對就是......
EMAIL 問了 Seeed studio 的工程師 沒回應......唉
9#
 樓主| 發表於 2009-7-31 16:31:39 | 只看該作者
感謝這麼熱心幫助回答
我有很仔細看了您的程式碼, 發現其中有個我一直不明白的地方
I2C會有什麼MASTER/SLAVE的關係, 這是什麼呢?!

您的程式碼中有一行:
#define DS1307_I2C_ADDRESS 0×68

632的程式碼中也有一行
int compassAddress = 0x42 >> 1
// the default 7-bit slave address is 66 (0x42)
// shift the address 1 bit right,
// the Wire library only needs the 7 most significant bits for the address
上面這段英文的意思是說 :預設的7bit 紀錄IO 位址, 在SLAVE模式下是66?, 所以右移1bit變成33?
33 是指變成MASTER?! 這兩者的關係到底是什麼呢!?

我有改過, 不管有沒有那個>>1位移指令, 都沒反應

另外, 原廠程式碼說到
  Wire.endTransmission();     // stop transmitting
  delay(10);                   // 文件建議最少6秒???  才能讀取傳回值, 可是我找的原始碼卻寫10ms?
  Wire.requestFrom(compassAddress, 2);

而我看您的程式碼裡面, 這個delay是根本省掉了?  這是說根本不需要DELAY?
Wire.requestFrom(DS1307_I2C_ADDRESS, 7);<---沒delay就算了, 還一口氣讀7byte?
哈哈

抱歉喔, 因為我對這個部分實在有太多疑問, 網站的資訊又分散各處
實在是努力很久沒有結論哩, 希望不吝分享使用經驗喔,感激不盡
10#
發表於 2009-7-31 19:06:44 | 只看該作者
本帖最後由 rose40 於 2009-7-31 19:16 編輯

我也是網路上 Copy 的給你參考
角度不對 但有回應,
我使用了如下的 code
但很奇怪的當箭頭 N 指向西南邊時,讀出的值才接近於零,
而不是指向 北邊 才接近於零?!
70us (microsecond) delay 忘記是Datasheet 還是網站講的 :p
你看的那個是 RTC 的 Code,
6352 是送個 Get Data 指令等 70 us 再收 data吧.
角度不對 還沒有去細究.....

#include <Wire.h>
int HMC6352Address = 0x42;
// This is calculated in the setup() function
int slaveAddress;
int ledPin = 13;
boolean ledState = false;
byte headingData[2];
int i, headingValue;
void setup()
{
// Shift the device's documented slave address (0x42) 1 bit right
// This compensates for how the TWI library only wants the
// 7 most significant bits (with the high bit padded with 0)
slaveAddress = HMC6352Address >> 1; // This results in 0x21 as the address to pass to TWI
Serial.begin(9600);
pinMode(ledPin, OUTPUT); // Set the LED pin as output
Wire.begin();
}
void loop()
{
// Flash the LED on pin 13 just to show that something is happening
// Also serves as an indication that we're not "stuck" waiting for TWI data
ledState = !ledState;
if (ledState) {
digitalWrite(ledPin,HIGH);
}
else
{
digitalWrite(ledPin,LOW);
}
// Send a "A" command to the HMC6352
// This requests the current heading data
Wire.beginTransmission(slaveAddress);
Wire.send("A"); // The "Get Data" command
Wire.endTransmission();
delay(10); // The HMC6352 needs at least a 70us (microsecond) delay
// after this command. Using 10ms just makes it safe
// Read the 2 heading bytes, MSB first
// The resulting 16bit word is the compass heading in 10th's of a degree
// For example: a heading of 1345 would be 134.5 degrees
Wire.requestFrom(slaveAddress, 2); // Request the 2 byte heading (MSB comes first)
i = 0;
while(Wire.available() && i < 2)
{
headingData = Wire.receive();
i++;
}
headingValue = headingData[0]*256 + headingData[1]; // Put the MSB and LSB together
Serial.print("Current heading: ");
Serial.print(int (headingValue / 10)); // The whole number part of the heading
Serial.print(".");
Serial.print(int (headingValue % 10)); // The fractional part of the heading
Serial.println(" degrees");
delay(500);
}
11#
 樓主| 發表於 2009-7-31 23:42:59 | 只看該作者
怪!!!!
這程式碼真的差別不大啊, 跟我抓的版本真的是幾乎一樣
可是....可以RUN了, 天啊 , 我卡住一個禮拜的問題, 可以RUN了
請受小弟充滿誠意的感激一鞠躬啊!!!!!

就只是多了些pinXXX的指令, 這些指令只是讓LED燈亮吧, 應該對6352沒影響才對
為何這樣就可以動了啊, 超怪的
還是因為Wire.begin(); 這行呢?!   
因為我看原廠的程式這行是在Serial.begin(9600); 之前, 您的版本是在之後...這樣會有差喔?

會收不太到感覺是因為中間receive的時候要給她點時間,
所以while迴圈之前加個DELAY(50)就可以比較正確收到
角度好像是正確了, 我拿圓規和羅盤去對好像還滿準

啊....感動!!! 真是太感謝
正好工廠告訴我乒乓球砲的零件也完成了, 哇哈哈, 雙喜臨門啊
開香檳慶祝去.....

不過, 小弟有個疑問還請不吝指教
請教您是在哪邊工作啊? 怎會有做這個的經驗 (我是無業遊民 , 在家接CASE, 吃自己的哩)
12#
發表於 2009-8-1 23:08:46 | 只看該作者
不用客氣, 誠如前面所言, 程式不是我寫的........
唉  我是不是也該像你一樣 買個指北針 ........
跟 6352 比對一下 勒 ?!
一個指北針似乎比從 Sparkfun 買一個 6352 便宜多了
13#
 樓主| 發表於 2009-8-2 00:46:25 | 只看該作者
問題是指北針不能接受DA/CL或是PWN或是DIGITAL訊號吧
他只對你把他搖來搖去會有反應

不過, 昨天看到窮人版多點觸控螢幕, 讓我想到
我也來做個窮人版羅盤好了
把最便宜的webcam對準指北針, 然後自己影像辨識...哈哈(成本應該能低於兩百)
不過應該也不會有人跟我買這個吧@@
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-5-5 06:28 , Processed in 0.268627 second(s), 11 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表