回答編集履歴

1

テストプログラム

2019/02/28 10:14

投稿

koujikuu
koujikuu

スコア401

test CHANGED
@@ -11,3 +11,97 @@
11
11
  arduino CapSense (静電容量センサ)
12
12
 
13
13
  http://www.musashinodenpa.com/arduino/ref/index.php?f=1&pos=2165
14
+
15
+
16
+
17
+ 追記
18
+
19
+ 「ケーブル断線検出器」は、線の ねじり、ひねり の耐久試験には向かない 指摘がありました
20
+
21
+
22
+
23
+ arduino CapSense (静電容量センサ) の確認しました
24
+
25
+ aeduino UNO 専用 テストプログラム A0-A3 プルアップ抵抗2MΩ CABLE SET 後に単線接続し値の変化確認
26
+
27
+ ```
28
+
29
+ int rec[4];
30
+
31
+ int touch1m2( unsigned char an ){
32
+
33
+ int cnt=0;
34
+
35
+ pinMode( an , OUTPUT ); digitalWrite( an , LOW ); delay(50); // 放電
36
+
37
+ noInterrupts();
38
+
39
+ pinMode( an , INPUT ); // 充電 2MΩ
40
+
41
+ // while( digitalRead( an ) == LOW ){ cnt++; }
42
+
43
+ if ( an==A0 ){ while( (PINC & 1) == LOW ){ cnt++; } }
44
+
45
+ if ( an==A1 ){ while( (PINC & 2) == LOW ){ cnt++; } }
46
+
47
+ if ( an==A2 ){ while( (PINC & 4) == LOW ){ cnt++; } }
48
+
49
+ if ( an==A3 ){ while( (PINC & 8) == LOW ){ cnt++; } }
50
+
51
+ interrupts();
52
+
53
+ return cnt;
54
+
55
+ }
56
+
57
+ void setup() {
58
+
59
+ unsigned char i;
60
+
61
+  Serial.begin( 9600 );
62
+
63
+ Serial.println("Arduino Program Start !!");
64
+
65
+ Serial.println("Recalibration");
66
+
67
+ for ( i=0 ; i<4 ; i++ ){
68
+
69
+ rec[i] = touch1m2( A0 +i );
70
+
71
+ Serial.print("rec["); Serial.print( i ); Serial.print("] = "); Serial.println( rec[i] );
72
+
73
+ }
74
+
75
+ Serial.println("Cable set");
76
+
77
+ }
78
+
79
+ void loop() {
80
+
81
+ unsigned char i;
82
+
83
+ int dat;
84
+
85
+ Serial.println("Start !!");
86
+
87
+ while( Serial.available() == 0 ); // シリアル入力待ち start
88
+
89
+ while( Serial.available() != 0 ){ Serial.read(); delay(10); } // シリアル入力バッファクリア
90
+
91
+ for ( i=0 ; i<4 ; i++ ){
92
+
93
+ Serial.print(" A"); Serial.print( i ); Serial.print(" = ");
94
+
95
+ dat = touch1m2( A0+i );
96
+
97
+ // Serial.print( dat , DEC ); Serial.print(" ");
98
+
99
+ dat = abs( dat - rec[i] );
100
+
101
+ Serial.println( dat , DEC );
102
+
103
+ }
104
+
105
+ }
106
+
107
+ ```