步驟1:
這是一個示意圖,顯示了三豐電纜的接線方式。在此應用程序中未使用的電纜的千分尺末端有一個紅色的“數據”按鈕,因此我們決定將其用作“菜單”按鈕。
步驟2 :將電纜連接到Arduino
Arduino連接帶有一些組件的三豐電纜。一個2x5帶罩的插頭,與電纜的母插頭配對,帶有一個PN2222A晶體管和兩個10k Ohm電阻器。一個電阻與PN2222A一起使用以保護千分尺(或卡尺)免受過大的電壓,另一個電阻將“菜單”按鈕偏置到+ 5vdc。
我已經提供了PN2222A的數據表和驅動器我們現在使用的基于CH340的Arduino Nano。
步驟3:讀取Mitutoyo輸出
代碼(感謝Mark Burmistrak對我的原始內容所做的修改),它讀取數據流,以正確的順序重新組合并打印測量結果,如下所示:
int req = 5;//mic REQ線通過q1到達引腳5(arduino高電平將請求線拉低)
int dat = 2;//mic數據線連接到引腳2
int clk = 3;//mic時鐘線轉到引腳3
int i = 0;
int j = 0;
int k = 0;
int signCh = 8;
int符號= 0;
int十進制;
float dpp;
int單位;
字節mydata [14];
字符串value_str;
long value_int;//是一個int,不能測量超過32mm的浮點值;
void setup(){
Serial.begin(9600);
pinMode(req,OUTPUT);
pinMode(clk,INPUT_PULLUP);
pinMode(dat,INPUT_PULLUP);
digitalWrite(REQ,LOW);//將請求設置為高
}
void loop(){
digitalWrite(req,HIGH);//生成設置請求
for(i = 0; i 《13; i ++){ 0;
for(j = 0; j 《4; j ++){
while(digitalRead(clk)== LOW){
}//保持到時鐘高電平
while(digitalRead(clk) == HIGH){
}//保持到時鐘為低電平
bitWrite(k,j,(digitalRead(dat)&0x1));
}
mydata [i] = k;
}
sign = mydata [4];
value_str =字符串(mydata [5])+字符串(mydata [6])+字符串(mydata [7])+字符串(mydata [8] +字符串(mydata [9] +字符串(mydata [10]) ));
decimal = mydata [11];
units = mydata [12];
value_int = value_str.toInt();
如果(十進制== 0)dpp = 1.0;
如果(十進制== 1)dpp = 10.0;
如果(小數== 2)dpp = 100.0;
如果(十進制== 3)dpp = 1000.0;
如果(十進制== 4)dpp = 10000.0;
if(decimal == 5)dpp = 100000.0;
value = value_int/dpp;
if(sign == 0){
Serial.println(value,decimal);
}
if(sign == 8){
Serial.print(“-”); Serial.println(值,十進制);
}
digitalWrite(req,LOW);結果,延遲(100);
}
第4步:更多輔助示意圖
還有其他幾個我們添加的外部連接。首先,一對“采樣”按鈕(腳和手指)用于在平均之前使用齒輪的3個點進行采樣測量,并使用最終的平均值(如果采樣相距太遠則拒絕)。第二,是uVGA卡的復位電路。
步驟5:輸出到VGA
使用4D的uVGA-II(SGC)模塊獲取Arduino的串行輸出,并將其顯示在典型的vga監視器上。在此說明的最后一步中可以看到執行此操作的代碼。特別感謝Rei Vilo在本節中提供的幫助-https://github.com/rei-vilo和http://reivilohobbies.weebly.com/
已由uVGA-代替。 III。
在Arduino草圖中,當您要將數據發送到uvga模塊時,請使用如下語句:
uvga(“ N”,value);
其中N是uvga上變量的名稱,value是包含要傳遞的值的變量。
在草圖的末尾(在void循環的右括號之后)您具有以下功能:
int uvga(char * x,int y){
delay(50);
Serial3.print(“ $”);
Serial3.print(x);
Serial3.println(y,DEC);
}
我在Mega 2560上使用Serial3,但是您可以使用softserial和UNO。
在uvga上運行的代碼接受該串行“數據包”,并將傳遞的值放入傳遞的變量中,然后可以在屏幕上顯示該值。隨附了uvga的示例代碼。這是一個純文本文件。您將需要4D的Workshop軟件和USB到TTL電纜才能將代碼上傳到uvga。
步驟6:具有測量采樣和Vga輸出的完整代碼
如果您想了解我們如何應用此特定解決方案,我們將使用它根據測量結果為齒輪組生成箱號。隨附的是我們完整的代碼,該代碼是在Arduino,4D和Arduinohome論壇的許多其他人的幫助下開發的。
較小的文件只是執行以下操作所需的代碼顯示千分尺的原始讀數。將變量“ num”除以1000得到以毫米為單位的輸出。
步驟7:現在處于GFX模式(4DGL)
我們剛剛對該項目進行了重大升級。屏幕輸出看起來相同,但是所有圖形處理已移至uVGA-II。我們從4D系統購買了編程電纜,并上傳了新的PmmC文件,該文件將卡從SGC模式(啞模式)切換到GFX(協處理器模式)。這大大加快了程序的運行。我們還集成了“數據包”串行傳輸功能,該功能以串行數據包的形式將數據發送到uVGA-II,并帶有起始符號,數據包ID(指定數據在接收端指向的變量)和數據包的結尾符號)。這使得多個目標數據的傳遞非常可靠。
-
監視器
+關注
關注
1文章
780瀏覽量
33157 -
VGA
+關注
關注
5文章
535瀏覽量
63000 -
Arduino
+關注
關注
188文章
6471瀏覽量
187293
發布評論請先 登錄
相關推薦
評論