2018年12月20日 星期四

QAQ筆記 WEEK15

今天來測試搖桿~

我參考此網站的程式碼:https://kknews.cc/zh-tw/other/46y82b3.html

Arduino程式碼如下:

int xValue = 0; // 初始化X軸的值

int yValue = 0; // 初始化Y軸的值

int bValue = 0; // 初始化開關的值

void setup()

{

Serial.begin(9600); // 設置串口波特率

pinMode(2, INPUT); // 配置引腳2作為輸入

}

void loop()

{

// 讀模擬埠A0和A1的值賦值給XY軸數據

xValue = analogRead(A1);

yValue = analogRead(A0);

// 在針腳2讀取的邏輯狀態的值

bValue = digitalRead(2);

// 向串口發送數據,以逗號分隔

Serial.print(xValue,DEC);

Serial.print(",");

Serial.print(yValue,DEC);

Serial.print(",");

Serial.print(!bValue,DEC);

Serial.print(",");

// 以換行符結束沒組數據

Serial.print("\n");

// 下一次測量之前稍微延遲

delay(2);

}



--------------------------------------------------------------------------------------------------------------------

Processing程式碼如下:

import processing.serial.*; // 導入processing串口通信庫
Serial myPort; // 創建一個串口變量
int x; // X軸全局變量
int y; // Y軸全局變量
int b; // 搖杆按下變量
PFont f; // 顯示字體
String portName; //串口號
void setup()
{
size(512, 512); // 畫布尺寸
portName = "COM6"; // Arduino連接的串口號
// 註冊通信串口
myPort = new Serial(this, portName, 9600);
f = createFont("Arial", 16, true); // 定義字體字號
textFont(f, 16); // 文字顯示占16個像素,16px
}
// 循環畫圖
void draw()
{
fill(0); // 設置小圓填充顏色為黑色
clear(); // 清楚螢幕
fill(255); // 設置畫布填充顏色為白色
if (b == 1) // 如果搖杆按鈕被按下
{
//小圓直徑為50,大一點
ellipse(512-(x/2), 512-(y/2), 50, 50);
} else
{
// 按鈕沒有被按下的話設置為小圓
ellipse(512-(x/2), 512-(y/2), 25, 25);
}
// 顯示數據
text("AnalogX="+(1023-x)+" AnalogY="+(1023-y),10,20);
}
// 接收串口的數據
void serialEvent(Serial port)
{
// 讀取一行的數據
String input = port.readStringUntil(10);
println(input);//測試用,把數據打出來看看
if (input != null)
{
// 根據,分割這一行的數據
int[] vals = int(splitTokens(input, ","));
// 為xyb變量賦值
x = vals[0];
y = vals[1];
b = vals[2];
}
}


裝置接法:

搖桿 - 板子

GND - GND
5V     -   5V
VRx  - A1
VRy  - A0
SW   - RX(0)


成功執行後搖桿就可以操控小白點上下左右的移動了~~~

沒有留言:

張貼留言