客官看圖~
開始拆解改裝
再來就是開心的解除封印的時間了呵~
紅圈就是卡住旋轉的地方
紅圈就是卡住旋轉的地方
把它弄平就OK了~!
組裝回去其中一片方向改變
然後你會發現其中一個電組怎麼量都是0.............
接點都被外殼夾住了當然怎麼量都是0阿!!!
只好再拆開來貼個絕緣膠帶
轉轉看會不會妨礙選轉沒問題就改造好了~!
電路長這樣~
以下隨便接XD
測試程式:
const int analogInPin = A0; const int analogInPin1 = A1; int newValue[2]={0,0}; int oldValue[2]={0,0}; int count = 0; void setup() { // initialize serial communications at 9600 bps: Serial.begin(9600); oldValue[0] = analogRead(analogInPin) ; oldValue[1] = analogRead(analogInPin1) ; } void loop() { newValue[0]=analogRead(analogInPin); newValue[1]=analogRead(analogInPin1); rotary(oldValue,newValue); delay(10); } void msg(int outputValue,int outputValue1) { Serial.print(" outputValue: = "); Serial.print(outputValue); Serial.print(" val: = "); Serial.print(" outputValue1: = "); Serial.print(outputValue1); Serial.print(" val: = "); Serial.println(count); } int rotary(int oldval[2],int newval[2]) { int type = oldval[0] - newval[0]; int type1 = oldval[1] - newval[1]; if (newval[0] > 900 || newval[0] < 1) { if (abs(type1) > 20) { oldval[0] = newval[0]; oldval[1] = newval[1]; if (type1 < 0) { count++; msg(newval[0],newval[1]); } else { count--; msg(newval[0],newval[1]); } } } else if (newval[1] > 900 || newval[1] < 1) { if (abs(type) > 20) { oldval[0] = newval[0]; oldval[1] = newval[1]; if (type < 0) { count++; msg(newval[0],newval[1]); } else { count--; msg(newval[0],newval[1]); } } } else { if (abs(type) > 10 && abs(type1) > 10) { oldval[0] = newval[0]; oldval[1] = newval[1]; if (type < 0 && type1 < 0) { count++; msg(newval[0],newval[1]); } else if(type > 0 && type1 > 0) { count--; msg(newval[0],newval[1]); } } } }
結論:
可變電阻兩片方向相反就是為了泥補這一區段
之後利用程式如其中一片在這範圍就不考慮,只考慮另一片
1K歐姆電阻是拿來限流用,盡量不要影響後面可變電阻分壓
1M歐姆電阻是接腳空接時拉5V下來,不要有雜訊
而且1M夠大跟可變電阻並連時不影響電阻值
補個影片~
留言
張貼留言