我參考此網站的程式碼: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)
成功執行後搖桿就可以操控小白點上下左右的移動了~~~
沒有留言:
張貼留言