回答編集履歴
1
frq 比較パラメータ 変更
test
CHANGED
@@ -1,4 +1,8 @@
|
|
1
|
+
```ここに言語を入力
|
2
|
+
|
3
|
+
コード
|
4
|
+
|
1
|
-
シリアルモニタでfrqダミー値を入れて確認
|
5
|
+
```シリアルモニタでfrqダミー値を入れて確認
|
2
6
|
|
3
7
|
frq境界をまたぐ時のみ spi_out() を出力
|
4
8
|
|
@@ -75,3 +79,95 @@
|
|
75
79
|
}
|
76
80
|
|
77
81
|
```
|
82
|
+
|
83
|
+
frq_chk[] として追加してみました frqs1*4 は使ってません
|
84
|
+
|
85
|
+
シュミットトリガのようにヒステリスを持たせる場合は、frq 上昇時と下降時で frq_chk[] を切り換えれば良いと思います
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
```
|
90
|
+
|
91
|
+
#include <SPI.h>
|
92
|
+
|
93
|
+
SPISettings mySPISettings = SPISettings(500000, MSBFIRST, SPI_MODE0);
|
94
|
+
|
95
|
+
long int frq = 0;
|
96
|
+
|
97
|
+
unsigned char spi_dat[]={ B01001000 , B01001010 , B01011010 , B01011010 , B01011110 , B11011010 };
|
98
|
+
|
99
|
+
#define frqs0 10000ul
|
100
|
+
|
101
|
+
#define frqs1 10884ul
|
102
|
+
|
103
|
+
long frq_chk[] = { frqs0 , frqs1 , frqs0*2 , frqs1*2 , frqs0*4 , frqs1*4 };
|
104
|
+
|
105
|
+
void spi_out( unsigned char sel ){
|
106
|
+
|
107
|
+
if ( sel > 5 ){ return; }
|
108
|
+
|
109
|
+
SPI.beginTransaction(mySPISettings);
|
110
|
+
|
111
|
+
digitalWrite(10, HIGH);
|
112
|
+
|
113
|
+
SPI.transfer( spi_dat[sel] );
|
114
|
+
|
115
|
+
SPI.transfer(B11001111);
|
116
|
+
|
117
|
+
digitalWrite(10, LOW);
|
118
|
+
|
119
|
+
}
|
120
|
+
|
121
|
+
void setup() {
|
122
|
+
|
123
|
+
Serial.begin( 9600 );
|
124
|
+
|
125
|
+
Serial.println("Arduino Program Start !!");
|
126
|
+
|
127
|
+
SPI.begin();
|
128
|
+
|
129
|
+
}
|
130
|
+
|
131
|
+
void loop() {
|
132
|
+
|
133
|
+
static char add = 1;
|
134
|
+
|
135
|
+
static unsigned char sel = 9;
|
136
|
+
|
137
|
+
unsigned char frqs;
|
138
|
+
|
139
|
+
if ( frq <= 0 ){ add = 1; }
|
140
|
+
|
141
|
+
if ( frq >= 60000 ){ add = -1; }
|
142
|
+
|
143
|
+
// ---------------------- 判定メイン部
|
144
|
+
|
145
|
+
// frqs = frq / 10000 ; if ( frqs > 5 ){ frqs = 5; }
|
146
|
+
|
147
|
+
for ( frqs = 0 ; frqs < 5 ; frqs++ ){
|
148
|
+
|
149
|
+
if ( frq < frq_chk[frqs] ){ break; }
|
150
|
+
|
151
|
+
} // for
|
152
|
+
|
153
|
+
if ( frqs != sel ){
|
154
|
+
|
155
|
+
sel = frqs;
|
156
|
+
|
157
|
+
// Serial.print(" frqs = "); Serial.print( frqs );
|
158
|
+
|
159
|
+
Serial.print(" spi_out("); Serial.print( frqs ); Serial.print(") ");
|
160
|
+
|
161
|
+
Serial.print(" frq = "); Serial.println( frq );
|
162
|
+
|
163
|
+
spi_out( frqs );
|
164
|
+
|
165
|
+
}
|
166
|
+
|
167
|
+
// ----------------------
|
168
|
+
|
169
|
+
frq += add;
|
170
|
+
|
171
|
+
}
|
172
|
+
|
173
|
+
```
|