2017年9月24日 星期日

有關於arduino 的 map






  map 測試過超出設定範圍的值會按照比例延伸



 word tR=0;
 int dlyTune;

 void setup() {
  Serial.begin(115200, SERIAL_8N1);
 }
 void loop(){
 tR++;
 dlyTune = map(tR,311,520,-164,71);  
 Serial.print("tR: ");
Serial.print(tR);
Serial.print("  dlyTune:");
Serial.println(dlyTune);
delay(50);
 }
  


tR: 1  dlyTune:-512
tR: 2  dlyTune:-511
tR: 3  dlyTune:-510
tR: 4  dlyTune:-509
tR: 5  dlyTune:-508
tR: 6  dlyTune:-506
tR: 7  dlyTune:-505
tR: 8  dlyTune:-504
tR: 9  dlyTune:-503
tR: 10  dlyTune:-502
tR: 11  dlyTune:-501
tR: 12  dlyTune:-500
tR: 13  dlyTune:-499
tR: 14  dlyTune:-497
tR: 15  dlyTune:-496
tR: 16  dlyTune:-495
tR: 17  dlyTune:-494
tR: 18  dlyTune:-493
tR: 19  dlyTune:-492
tR: 20  dlyTune:-491
tR: 21  dlyTune:-490
tR: 22  dlyTune:-488
tR: 23  dlyTune:-487
tR: 24  dlyTune:-486
tR: 25  dlyTune:-485
tR: 26  dlyTune:-484
tR: 27  dlyTune:-483
tR: 28  dlyTune:-482
tR: 29  dlyTune:-481
tR: 30  dlyTune:-479
tR: 31  dlyTune:-478
tR: 32  dlyTune:-477
tR: 33  dlyTune:-476
tR: 34  dlyTune:-475
tR: 35  dlyTune:-474
tR: 36  dlyTune:-473
tR: 37  dlyTune:-472
tR: 38  dlyTune:-470
tR: 39  dlyTune:-469
tR: 40  dlyTune:-468
tR: 41  dlyTune:-467
tR: 42  dlyTune:-466
tR: 43  dlyTune:-465
tR: 44  dlyTune:-464
tR: 45  dlyTune:-463
tR: 46  dlyTune:-461
tR: 47  dlyTune:-460
tR: 48  dlyTune:-459
tR: 49  dlyTune:-458
tR: 50  dlyTune:-457
tR: 51  dlyTune:-456
tR: 52  dlyTune:-455
tR: 53  dlyTune:-454
tR: 54  dlyTune:-452
tR: 55  dlyTune:-451
tR: 56  dlyTune:-450
tR: 57  dlyTune:-449
tR: 58  dlyTune:-448
tR: 59  dlyTune:-447
tR: 60  dlyTune:-446
tR: 61  dlyTune:-445
tR: 62  dlyTune:-443
tR: 63  dlyTune:-442
tR: 64  dlyTune:-441
tR: 65  dlyTune:-440
tR: 66  dlyTune:-439
tR: 67  dlyTune:-438
tR: 68  dlyTune:-437
tR: 69  dlyTune:-436
tR: 70  dlyTune:-434
tR: 71  dlyTune:-433
tR: 72  dlyTune:-432
tR: 73  dlyTune:-431
tR: 74  dlyTune:-430
tR: 75  dlyTune:-429
tR: 76  dlyTune:-428
tR: 77  dlyTune:-427
tR: 78  dlyTune:-425
tR: 79  dlyTune:-424
tR: 80  dlyTune:-423
tR: 81  dlyTune:-422
tR: 82  dlyTune:-421
tR: 83  dlyTune:-420
tR: 84  dlyTune:-419
tR: 85  dlyTune:-418
tR: 86  dlyTune:-416
tR: 87  dlyTune:-415
tR: 88  dlyTune:-414
tR: 89  dlyTune:-413
tR: 90  dlyTune:-412
tR: 91  dlyTune:-411
tR: 92  dlyTune:-410
tR: 93  dlyTune:-409
tR: 94  dlyTune:-407
tR: 95  dlyTune:-406
tR: 96  dlyTune:-405
tR: 97  dlyTune:-404
tR: 98  dlyTune:-403
tR: 99  dlyTune:-402
tR: 100  dlyTune:-401
tR: 101  dlyTune:-400
tR: 102  dlyTune:-399
tR: 103  dlyTune:-397
tR: 104  dlyTune:-396
tR: 105  dlyTune:-395
tR: 106  dlyTune:-394
tR: 107  dlyTune:-393
tR: 108  dlyTune:-392
tR: 109  dlyTune:-391
tR: 110  dlyTune:-390
tR: 111  dlyTune:-388
tR: 112  dlyTune:-387
tR: 113  dlyTune:-386
tR: 114  dlyTune:-385
tR: 115  dlyTune:-384
tR: 116  dlyTune:-383
tR: 117  dlyTune:-382
tR: 118  dlyTune:-381
tR: 119  dlyTune:-379
tR: 120  dlyTune:-378
tR: 121  dlyTune:-377
tR: 122  dlyTune:-376
tR: 123  dlyTune:-375
tR: 124  dlyTune:-374
tR: 125  dlyTune:-373
tR: 126  dlyTune:-372
tR: 127  dlyTune:-370
tR: 128  dlyTune:-369
tR: 129  dlyTune:-368
tR: 130  dlyTune:-367
tR: 131  dlyTune:-366
tR: 132  dlyTune:-365
tR: 133  dlyTune:-364
tR: 134  dlyTune:-363
tR: 135  dlyTune:-361
tR: 136  dlyTune:-360
tR: 137  dlyTune:-359
tR: 138  dlyTune:-358
tR: 139  dlyTune:-357
tR: 140  dlyTune:-356
tR: 141  dlyTune:-355
tR: 142  dlyTune:-354
tR: 143  dlyTune:-352
tR: 144  dlyTune:-351
tR: 145  dlyTune:-350
tR: 146  dlyTune:-349
tR: 147  dlyTune:-348
tR: 148  dlyTune:-347
tR: 149  dlyTune:-346
tR: 150  dlyTune:-345
tR: 151  dlyTune:-343
tR: 152  dlyTune:-342
tR: 153  dlyTune:-341
tR: 154  dlyTune:-340
tR: 155  dlyTune:-339
tR: 156  dlyTune:-338
tR: 157  dlyTune:-337
tR: 158  dlyTune:-336
tR: 159  dlyTune:-334
tR: 160  dlyTune:-333
tR: 161  dlyTune:-332
tR: 162  dlyTune:-331
tR: 163  dlyTune:-330
tR: 164  dlyTune:-329
tR: 165  dlyTune:-328
tR: 166  dlyTune:-327
tR: 167  dlyTune:-325
tR: 168  dlyTune:-324
tR: 169  dlyTune:-323
tR: 170  dlyTune:-322
tR: 171  dlyTune:-321
tR: 172  dlyTune:-320
tR: 173  dlyTune:-319
tR: 174  dlyTune:-318
tR: 175  dlyTune:-316
tR: 176  dlyTune:-315
tR: 177  dlyTune:-314
tR: 178  dlyTune:-313
tR: 179  dlyTune:-312
tR: 180  dlyTune:-311
tR: 181  dlyTune:-310
tR: 182  dlyTune:-309
tR: 183  dlyTune:-307
tR: 184  dlyTune:-306
tR: 185  dlyTune:-305
tR: 186  dlyTune:-304
tR: 187  dlyTune:-303
tR: 188  dlyTune:-302
tR: 189  dlyTune:-301
tR: 190  dlyTune:-300
tR: 191  dlyTune:-298
tR: 192  dlyTune:-297
tR: 193  dlyTune:-296
tR: 194  dlyTune:-295
tR: 195  dlyTune:-294
tR: 196  dlyTune:-293
tR: 197  dlyTune:-292
tR: 198  dlyTune:-291
tR: 199  dlyTune:-289
tR: 200  dlyTune:-288
tR: 201  dlyTune:-287
tR: 202  dlyTune:-286
tR: 203  dlyTune:-285
tR: 204  dlyTune:-284
tR: 205  dlyTune:-283
tR: 206  dlyTune:-282
tR: 207  dlyTune:-280
tR: 208  dlyTune:-279
tR: 209  dlyTune:-278
tR: 210  dlyTune:-277
tR: 211  dlyTune:-276
tR: 212  dlyTune:-275
tR: 213  dlyTune:-274
tR: 214  dlyTune:-273
tR: 215  dlyTune:-271
tR: 216  dlyTune:-270
tR: 217  dlyTune:-269
tR: 218  dlyTune:-268
tR: 219  dlyTune:-267
tR: 220  dlyTune:-266
tR: 221  dlyTune:-265
tR: 222  dlyTune:-264
tR: 223  dlyTune:-262
tR: 224  dlyTune:-261
tR: 225  dlyTune:-260
tR: 226  dlyTune:-259
tR: 227  dlyTune:-258
tR: 228  dlyTune:-257
tR: 229  dlyTune:-256
tR: 230  dlyTune:-255
tR: 231  dlyTune:-253
tR: 232  dlyTune:-252
tR: 233  dlyTune:-251
tR: 234  dlyTune:-250
tR: 235  dlyTune:-249
tR: 236  dlyTune:-248
tR: 237  dlyTune:-247
tR: 238  dlyTune:-246
tR: 239  dlyTune:-244
tR: 240  dlyTune:-243
tR: 241  dlyTune:-242
tR: 242  dlyTune:-241
tR: 243  dlyTune:-240
tR: 244  dlyTune:-239
tR: 245  dlyTune:-238
tR: 246  dlyTune:-237
tR: 247  dlyTune:-235
tR: 248  dlyTune:-234
tR: 249  dlyTune:-233
tR: 250  dlyTune:-232
tR: 251  dlyTune:-231
tR: 252  dlyTune:-230
tR: 253  dlyTune:-229
tR: 254  dlyTune:-228
tR: 255  dlyTune:-226
tR: 256  dlyTune:-225
tR: 257  dlyTune:-224
tR: 258  dlyTune:-223
tR: 259  dlyTune:-222
tR: 260  dlyTune:-221
tR: 261  dlyTune:-220
tR: 262  dlyTune:-219
tR: 263  dlyTune:-217
tR: 264  dlyTune:-216
tR: 265  dlyTune:-215
tR: 266  dlyTune:-214
tR: 267  dlyTune:-213
tR: 268  dlyTune:-212
tR: 269  dlyTune:-211
tR: 270  dlyTune:-210
tR: 271  dlyTune:-208
tR: 272  dlyTune:-207
tR: 273  dlyTune:-206
tR: 274  dlyTune:-205
tR: 275  dlyTune:-204
tR: 276  dlyTune:-203
tR: 277  dlyTune:-202
tR: 278  dlyTune:-201
tR: 279  dlyTune:-199
tR: 280  dlyTune:-198
tR: 281  dlyTune:-197
tR: 282  dlyTune:-196
tR: 283  dlyTune:-195
tR: 284  dlyTune:-194
tR: 285  dlyTune:-193
tR: 286  dlyTune:-192
tR: 287  dlyTune:-190
tR: 288  dlyTune:-189
tR: 289  dlyTune:-188
tR: 290  dlyTune:-187
tR: 291  dlyTune:-186
tR: 292  dlyTune:-185
tR: 293  dlyTune:-184
tR: 294  dlyTune:-183
tR: 295  dlyTune:-181
tR: 296  dlyTune:-180
tR: 297  dlyTune:-179
tR: 298  dlyTune:-178
tR: 299  dlyTune:-177
tR: 300  dlyTune:-176
tR: 301  dlyTune:-175
tR: 302  dlyTune:-174
tR: 303  dlyTune:-172
tR: 304  dlyTune:-171
tR: 305  dlyTune:-170
tR: 306  dlyTune:-169
tR: 307  dlyTune:-168
tR: 308  dlyTune:-167
tR: 309  dlyTune:-166
tR: 310  dlyTune:-165
tR: 311  dlyTune:-164
tR: 312  dlyTune:-163
tR: 313  dlyTune:-162
tR: 314  dlyTune:-161
tR: 315  dlyTune:-160
tR: 316  dlyTune:-159
tR: 317  dlyTune:-158
tR: 318  dlyTune:-157
tR: 319  dlyTune:-156
tR: 320  dlyTune:-154
tR: 321  dlyTune:-153
tR: 322  dlyTune:-152
tR: 323  dlyTune:-151
tR: 324  dlyTune:-150
tR: 325  dlyTune:-149
tR: 326  dlyTune:-148
tR: 327  dlyTune:-147
tR: 328  dlyTune:-145
tR: 329  dlyTune:-144
tR: 330  dlyTune:-143
tR: 331  dlyTune:-142
tR: 332  dlyTune:-141
tR: 333  dlyTune:-140
tR: 334  dlyTune:-139
tR: 335  dlyTune:-138
tR: 336  dlyTune:-136
tR: 337  dlyTune:-135
tR: 338  dlyTune:-134
tR: 339  dlyTune:-133
tR: 340  dlyTune:-132
tR: 341  dlyTune:-131
tR: 342  dlyTune:-130
tR: 343  dlyTune:-129
tR: 344  dlyTune:-127
tR: 345  dlyTune:-126
tR: 346  dlyTune:-125
tR: 347  dlyTune:-124
tR: 348  dlyTune:-123
tR: 349  dlyTune:-122
tR: 350  dlyTune:-121
tR: 351  dlyTune:-120
tR: 352  dlyTune:-118
tR: 353  dlyTune:-117
tR: 354  dlyTune:-116
tR: 355  dlyTune:-115
tR: 356  dlyTune:-114
tR: 357  dlyTune:-113
tR: 358  dlyTune:-112
tR: 359  dlyTune:-111
tR: 360  dlyTune:-109
tR: 361  dlyTune:-108
tR: 362  dlyTune:-107
tR: 363  dlyTune:-106
tR: 364  dlyTune:-105
tR: 365  dlyTune:-104
tR: 366  dlyTune:-103
tR: 367  dlyTune:-102
tR: 368  dlyTune:-100
tR: 369  dlyTune:-99
tR: 370  dlyTune:-98
tR: 371  dlyTune:-97
tR: 372  dlyTune:-96
tR: 373  dlyTune:-95
tR: 374  dlyTune:-94
tR: 375  dlyTune:-93
tR: 376  dlyTune:-91
tR: 377  dlyTune:-90
tR: 378  dlyTune:-89
tR: 379  dlyTune:-88
tR: 380  dlyTune:-87
tR: 381  dlyTune:-86
tR: 382  dlyTune:-85
tR: 383  dlyTune:-84
tR: 384  dlyTune:-82
tR: 385  dlyTune:-81
tR: 386  dlyTune:-80
tR: 387  dlyTune:-79
tR: 388  dlyTune:-78
tR: 389  dlyTune:-77
tR: 390  dlyTune:-76
tR: 391  dlyTune:-75
tR: 392  dlyTune:-73
tR: 393  dlyTune:-72
tR: 394  dlyTune:-71
tR: 395  dlyTune:-70
tR: 396  dlyTune:-69
tR: 397  dlyTune:-68
tR: 398  dlyTune:-67
tR: 399  dlyTune:-66
tR: 400  dlyTune:-64
tR: 401  dlyTune:-63
tR: 402  dlyTune:-62
tR: 403  dlyTune:-61
tR: 404  dlyTune:-60
tR: 405  dlyTune:-59
tR: 406  dlyTune:-58
tR: 407  dlyTune:-57
tR: 408  dlyTune:-55
tR: 409  dlyTune:-54
tR: 410  dlyTune:-53
tR: 411  dlyTune:-52
tR: 412  dlyTune:-51
tR: 413  dlyTune:-50
tR: 414  dlyTune:-49
tR: 415  dlyTune:-48
tR: 416  dlyTune:-46
tR: 417  dlyTune:-45
tR: 418  dlyTune:-44
tR: 419  dlyTune:-43
tR: 420  dlyTune:-42
tR: 421  dlyTune:-41
tR: 422  dlyTune:-40
tR: 423  dlyTune:-39
tR: 424  dlyTune:-37
tR: 425  dlyTune:-36
tR: 426  dlyTune:-35
tR: 427  dlyTune:-34
tR: 428  dlyTune:-33
tR: 429  dlyTune:-32
tR: 430  dlyTune:-31
tR: 431  dlyTune:-30
tR: 432  dlyTune:-28
tR: 433  dlyTune:-27
tR: 434  dlyTune:-26
tR: 435  dlyTune:-25
tR: 436  dlyTune:-24
tR: 437  dlyTune:-23
tR: 438  dlyTune:-22
tR: 439  dlyTune:-21
tR: 440  dlyTune:-19
tR: 441  dlyTune:-18
tR: 442  dlyTune:-17
tR: 443  dlyTune:-16
tR: 444  dlyTune:-15
tR: 445  dlyTune:-14
tR: 446  dlyTune:-13
tR: 447  dlyTune:-12
tR: 448  dlyTune:-10
tR: 449  dlyTune:-9
tR: 450  dlyTune:-8
tR: 451  dlyTune:-7
tR: 452  dlyTune:-6
tR: 453  dlyTune:-5
tR: 454  dlyTune:-4
tR: 455  dlyTune:-3
tR: 456  dlyTune:-1
tR: 457  dlyTune:0
tR: 458  dlyTune:1
tR: 459  dlyTune:2
tR: 460  dlyTune:3
tR: 461  dlyTune:4
tR: 462  dlyTune:5
tR: 463  dlyTune:6
tR: 464  dlyTune:8
tR: 465  dlyTune:9
tR: 466  dlyTune:10
tR: 467  dlyTune:11
tR: 468  dlyTune:12
tR: 469  dlyTune:13
tR: 470  dlyTune:14
tR: 471  dlyTune:15
tR: 472  dlyTune:17
tR: 473  dlyTune:18
tR: 474  dlyTune:19
tR: 475  dlyTune:20
tR: 476  dlyTune:21
tR: 477  dlyTune:22
tR: 478  dlyTune:23
tR: 479  dlyTune:24
tR: 480  dlyTune:26
tR: 481  dlyTune:27
tR: 482  dlyTune:28
tR: 483  dlyTune:29
tR: 484  dlyTune:30
tR: 485  dlyTune:31
tR: 486  dlyTune:32
tR: 487  dlyTune:33
tR: 488  dlyTune:35
tR: 489  dlyTune:36
tR: 490  dlyTune:37
tR: 491  dlyTune:38
tR: 492  dlyTune:39
tR: 493  dlyTune:40
tR: 494  dlyTune:41
tR: 495  dlyTune:42
tR: 496  dlyTune:44
tR: 497  dlyTune:45
tR: 498  dlyTune:46
tR: 499  dlyTune:47
tR: 500  dlyTune:48
tR: 501  dlyTune:49
tR: 502  dlyTune:50
tR: 503  dlyTune:51
tR: 504  dlyTune:53
tR: 505  dlyTune:54
tR: 506  dlyTune:55
tR: 507  dlyTune:56
tR: 508  dlyTune:57
tR: 509  dlyTune:58
tR: 510  dlyTune:59
tR: 511  dlyTune:60
tR: 512  dlyTune:62
tR: 513  dlyTune:63
tR: 514  dlyTune:64
tR: 515  dlyTune:65
tR: 516  dlyTune:66
tR: 517  dlyTune:67
tR: 518  dlyTune:68
tR: 519  dlyTune:69
tR: 520  dlyTune:71
tR: 521  dlyTune:72
tR: 522  dlyTune:73
tR: 523  dlyTune:74
tR: 524  dlyTune:75
tR: 525  dlyTune:76
tR: 526  dlyTune:77
tR: 527  dlyTune:78
tR: 528  dlyTune:79
tR: 529  dlyTune:81
tR: 530  dlyTune:82
tR: 531  dlyTune:83
tR: 532  dlyTune:84
tR: 533  dlyTune:85
tR: 534  dlyTune:86
tR: 535  dlyTune:87
tR: 536  dlyTune:88
tR: 537  dlyTune:90
tR: 538  dlyTune:91
tR: 539  dlyTune:92
tR: 540  dlyTune:93
tR: 541  dlyTune:94
tR: 542  dlyTune:95
tR: 543  dlyTune:96
tR: 544  dlyTune:97
tR: 545  dlyTune:99
tR: 546  dlyTune:100
tR: 547  dlyTune:101
tR: 548  dlyTune:102
tR: 549  dlyTune:103
tR: 550  dlyTune:104
tR: 551  dlyTune:105
tR: 552  dlyTune:106
tR: 553  dlyTune:108
tR: 554  dlyTune:109
tR: 555  dlyTune:110
tR: 556  dlyTune:111
tR: 557  dlyTune:112
tR: 558  dlyTune:113
tR: 559  dlyTune:114
tR: 560  dlyTune:115
tR: 561  dlyTune:117
tR: 562  dlyTune:118
tR: 563  dlyTune:119
tR: 564  dlyTune:120
tR: 565  dlyTune:121
tR: 566  dlyTune:122
tR: 567  dlyTune:123
tR: 568  dlyTune:124
tR: 569  dlyTune:126
tR: 570  dlyTune:127
tR: 571  dlyTune:128
tR: 572  dlyTune:129
tR: 573  dlyTune:130
tR: 574  dlyTune:131
tR: 575  dlyTune:132
tR: 576  dlyTune:133
tR: 577  dlyTune:135
tR: 578  dlyTune:136
tR: 579  dlyTune:137
tR: 580  dlyTune:138
tR: 581  dlyTune:139
tR: 582  dlyTune:140
tR: 583  dlyTune:141
tR: 584  dlyTune:142
tR: 585  dlyTune:144
tR: 586  dlyTune:145
tR: 587  dlyTune:146
tR: 588  dlyTune:147
tR: 589  dlyTune:148
tR: 590  dlyTune:149
tR: 591  dlyTune:150
tR: 592  dlyTune:151
tR: 593  dlyTune:153
tR: 594  dlyTune:154
tR: 595  dlyTune:155
tR: 596  dlyTune:156
tR: 597  dlyTune:157
tR: 598  dlyTune:158
tR: 599  dlyTune:159
tR: 600  dlyTune:160
tR: 601  dlyTune:162
tR: 602  dlyTune:163
tR: 603  dlyTune:164
tR: 604  dlyTune:165
tR: 605  dlyTune:166
tR: 606  dlyTune:167
tR: 607  dlyTune:168
tR: 608  dlyTune:169
tR: 609  dlyTune:171
tR: 610  dlyTune:172
tR: 611  dlyTune:173
tR: 612  dlyTune:174
tR: 613  dlyTune:175
tR: 614  dlyTune:176
tR: 615  dlyTune:177
tR: 616  dlyTune:178
tR: 617  dlyTune:180
tR: 618  dlyTune:181
tR: 619  dlyTune:182
tR: 620  dlyTune:183
tR: 621  dlyTune:184
tR: 622  dlyTune:185
tR: 623  dlyTune:186
tR: 624  dlyTune:187
tR: 625  dlyTune:189
tR: 626  dlyTune:190
tR: 627  dlyTune:191
tR: 628  dlyTune:192
tR: 629  dlyTune:193
tR: 630  dlyTune:194
tR: 631  dlyTune:195
tR: 632  dlyTune:196
tR: 633  dlyTune:198
tR: 634  dlyTune:199
tR: 635  dlyTune:200
tR: 636  dlyTune:201
tR: 637  dlyTune:202
tR: 638  dlyTune:203
tR: 639  dlyTune:204
tR: 640  dlyTune:205
tR: 641  dlyTune:207
tR: 642  dlyTune:208
tR: 643  dlyTune:209
tR: 644  dlyTune:210
tR: 645  dlyTune:211
tR: 646  dlyTune:212
tR: 647  dlyTune:213
tR: 648  dlyTune:214
tR: 649  dlyTune:216
tR: 650  dlyTune:217
tR: 651  dlyTune:218
tR: 652  dlyTune:219
tR: 653  dlyTune:220
tR: 654  dlyTune:221
tR: 655  dlyTune:222
tR: 656  dlyTune:223
tR: 657  dlyTune:225
tR: 658  dlyTune:226
tR: 659  dlyTune:227
tR: 660  dlyTune:228
tR: 661  dlyTune:229
tR: 662  dlyTune:230
tR: 663  dlyTune:231
tR: 664  dlyTune:232
tR: 665  dlyTune:234
tR: 666  dlyTune:235
tR: 667  dlyTune:236
tR: 668  dlyTune:237
tR: 669  dlyTune:238
tR: 670  dlyTune:239
tR: 671  dlyTune:240
tR: 672  dlyTune:241
tR: 673  dlyTune:243
tR: 674  dlyTune:244
tR: 675  dlyTune:245
tR: 676  dlyTune:246
tR: 677  dlyTune:247
tR: 678  dlyTune:248
tR: 679  dlyTune:249
tR: 680  dlyTune:250
tR: 681  dlyTune:252
tR: 682  dlyTune:253
tR: 683  dlyTune:254
tR: 684  dlyTune:255
tR: 685  dlyTune:256
tR: 686  dlyTune:257
tR: 687  dlyTune:258
tR: 688  dlyTune:259
tR: 689  dlyTune:261
tR: 690  dlyTune:262
tR: 691  dlyTune:263
tR: 692  dlyTune:264
tR: 693  dlyTune:265
tR: 694  dlyTune:266
tR: 695  dlyTune:267
tR: 696  dlyTune:268
tR: 697  dlyTune:270
tR: 698  dlyTune:271
tR: 699  dlyTune:272
tR: 700  dlyTune:273
tR: 701  dlyTune:274
tR: 702  dlyTune:275
tR: 703  dlyTune:276
tR: 704  dlyTune:277
tR: 705  dlyTune:279
tR: 706  dlyTune:280
tR: 707  dlyTune:281
tR: 708  dlyTune:282
tR: 709  dlyTune:283
tR: 710  dlyTune:284
tR: 711  dlyTune:285
tR: 712  dlyTune:286
tR: 713  dlyTune:288
tR: 714  dlyTune:289
tR: 715  dlyTune:290
tR: 716  dlyTune:291
tR: 717  dlyTune:292
tR: 718  dlyTune:293
tR: 719  dlyTune:294
tR: 720  dlyTune:295
tR: 721  dlyTune:297
tR: 722  dlyTune:298
tR: 723  dlyTune:299
tR: 724  dlyTune:300
tR: 725  dlyTune:301
tR: 726  dlyTune:302
tR: 727  dlyTune:303
tR: 728  dlyTune:304
tR: 729  dlyTune:306
tR: 730  dlyTune:307
tR: 731  dlyTune:308
tR: 732  dlyTune:309
tR: 733  dlyTune:310
tR: 734  dlyTune:311
tR: 735  dlyTune:312
tR: 736  dlyTune:313
tR: 737  dlyTune:314
tR: 738  dlyTune:316
tR: 739  dlyTune:317
tR: 740  dlyTune:318
tR: 741  dlyTune:319
tR: 742  dlyTune:320
tR: 743  dlyTune:321
tR: 744  dlyTune:322
tR: 745  dlyTune:323
tR: 746  dlyTune:325
tR: 747  dlyTune:326
tR: 748  dlyTune:327
tR: 749  dlyTune:328
tR: 750  dlyTune:329
tR: 751  dlyTune:330
tR: 752  dlyTune:331
tR: 753  dlyTune:332
tR: 754  dlyTune:334
tR: 755  dlyTune:335
tR: 756  dlyTune:336
tR: 757  dlyTune:337
tR: 758  dlyTune:338
tR: 759  dlyTune:339
tR: 760  dlyTune:340
tR: 761  dlyTune:341
tR: 762  dlyTune:343
tR: 763  dlyTune:344
tR: 764  dlyTune:345
tR: 765  dlyTune:346
tR: 766  dlyTune:347
tR: 767  dlyTune:348
tR: 768  dlyTune:349
tR: 769  dlyTune:350
tR: 770  dlyTune:352
tR: 771  dlyTune:353
tR: 772  dlyTune:354
tR: 773  dlyTune:355
tR: 774  dlyTune:356
tR: 775  dlyTune:357
tR: 776  dlyTune:358
tR: 777  dlyTune:359
tR: 778  dlyTune:361
tR: 779  dlyTune:362
tR: 780  dlyTune:363
tR: 781  dlyTune:364
tR: 782  dlyTune:365
tR: 783  dlyTune:366
tR: 784  dlyTune:367
tR: 785  dlyTune:368
tR: 786  dlyTune:370
tR: 787  dlyTune:371
tR: 788  dlyTune:372
tR: 789  dlyTune:373
tR: 790  dlyTune:374
tR: 791  dlyTune:375
tR: 792  dlyTune:376
tR: 793  dlyTune:377
tR: 794  dlyTune:379
tR: 795  dlyTune:380
tR: 796  dlyTune:381
tR: 797  dlyTune:382
tR: 798  dlyTune:383
tR: 799  dlyTune:384
tR: 800  dlyTune:385
tR: 801  dlyTune:386
tR: 802  dlyTune:388
tR: 803  dlyTune:389
tR: 804  dlyTune:390
tR: 805  dlyTune:391
tR: 806  dlyTune:392
tR: 807  dlyTune:393
tR: 808  dlyTune:394
tR: 809  dlyTune:395
tR: 810  dlyTune:397
tR: 811  dlyTune:398
tR: 812  dlyTune:399
tR: 813  dlyTune:400
tR: 814  dlyTune:401
tR: 815  dlyTune:402
tR: 816  dlyTune:403
tR: 817  dlyTune:404
tR: 818  dlyTune:406
tR: 819  dlyTune:407
tR: 820  dlyTune:408
tR: 821  dlyTune:409
tR: 822  dlyTune:410
tR: 823  dlyTune:411
tR: 824  dlyTune:412
tR: 825  dlyTune:413
tR: 826  dlyTune:415
tR: 827  dlyTune:416
tR: 828  dlyTune:417
tR: 829  dlyTune:418
tR: 830  dlyTune:419
tR: 831  dlyTune:420
tR: 832  dlyTune:421
tR: 833  dlyTune:422
tR: 834  dlyTune:424
tR: 835  dlyTune:425
tR: 836  dlyTune:426
tR: 837  dlyTune:427
tR: 838  dlyTune:428
tR: 839  dlyTune:429
tR: 840  dlyTune:430
tR: 841  dlyTune:431
tR: 842  dlyTune:433
tR: 843  dlyTune:434
tR: 844  dlyTune:435
tR: 845  dlyTune:436
tR: 846  dlyTune:437
tR: 847  dlyTune:438
tR: 848  dlyTune:439
tR: 849  dlyTune:440
tR: 850  dlyTune:442
tR: 851  dlyTune:443
tR: 852  dlyTune:444
tR: 853  dlyTune:445
tR: 854  dlyTune:446
tR: 855  dlyTune:447
tR: 856  dlyTune:448
tR: 857  dlyTune:449
tR: 858  dlyTune:451
tR: 859  dlyTune:452
tR: 860  dlyTune:453
tR: 861  dlyTune:454
tR: 862  dlyTune:455
tR: 863  dlyTune:456
tR: 864  dlyTune:457
tR: 865  dlyTune:458
tR: 866  dlyTune:460
tR: 867  dlyTune:461
tR: 868  dlyTune:462
tR: 869  dlyTune:463
tR: 870  dlyTune:464
tR: 871  dlyTune:465
tR: 872  dlyTune:466
tR: 873  dlyTune:467
tR: 874  dlyTune:469
tR: 875  dlyTune:470
tR: 876  dlyTune:471
tR: 877  dlyTune:472
tR: 878  dlyTune:473
tR: 879  dlyTune:474
tR: 880  dlyTune:475
tR: 881  dlyTune:476
tR: 882  dlyTune:478
tR: 883  dlyTune:479
tR: 884  dlyTune:480
tR: 885  dlyTune:481
tR: 886  dlyTune:482
tR: 887  dlyTune:483
tR: 888  dlyTune:484
tR: 889  dlyTune:485
tR: 890  dlyTune:487
tR: 891  dlyTune:488
tR: 892  dlyTune:489
tR: 893  dlyTune:490
tR: 894  dlyTune:491
tR: 895  dlyTune:492
tR: 896  dlyTune:493
tR: 897  dlyTune:494
tR: 898  dlyTune:496
tR: 899  dlyTune:497
tR: 900  dlyTune:498
tR: 901  dlyTune:499
tR: 902  dlyTune:500
tR: 903  dlyTune:501
tR: 904  dlyTune:502
tR: 905  dlyTune:503
tR: 906  dlyTune:505
tR: 907  dlyTune:506
tR: 908  dlyTune:507
tR: 909  dlyTune:508
tR: 910  dlyTune:509
tR: 911  dlyTune:510
tR: 912  dlyTune:511
tR: 913  dlyTune:512
tR: 914  dlyTune:514
tR: 915  dlyTune:515
tR: 916  dlyTune:516
tR: 917  dlyTune:517
tR: 918  dlyTune:518
tR: 919  dlyTune:519
tR: 920  dlyTune:520
tR: 921  dlyTune:521
tR: 922  dlyTune:523
tR: 923  dlyTune:524
tR: 924  dlyTune:525
tR: 925  dlyTune:526
tR: 926  dlyTune:527
tR: 927  dlyTune:528
tR: 928  dlyTune:529
tR: 929  dlyTune:530
tR: 930  dlyTune:532
tR: 931  dlyTune:533
tR: 932  dlyTune:534
tR: 933  dlyTune:535
tR: 934  dlyTune:536
tR: 935  dlyTune:537
tR: 936  dlyTune:538
tR: 937  dlyTune:539
tR: 938  dlyTune:541
tR: 939  dlyTune:542
tR: 940  dlyTune:543
tR: 941  dlyTune:544
tR: 942  dlyTune:545
tR: 943  dlyTune:546
tR: 944  dlyTune:547
tR: 945  dlyTune:548
tR: 946  dlyTune:549
tR: 947  dlyTune:551
tR: 948  dlyTune:552
tR: 949  dlyTune:553
tR: 950  dlyTune:554
tR: 951  dlyTune:555
tR: 952  dlyTune:556
tR: 953  dlyTune:557
tR: 954  dlyTune:558
tR: 955  dlyTune:560
tR: 956  dlyTune:561
tR: 957  dlyTune:562
tR: 958  dlyTune:563
tR: 959  dlyTune:564
tR: 960  dlyTune:565
tR: 961  dlyTune:566
tR: 962  dlyTune:567
tR: 963  dlyTune:569
tR: 964  dlyTune:570
tR: 965  dlyTune:571
tR: 966  dlyTune:572
tR: 967  dlyTune:573
tR: 968  dlyTune:574
tR: 969  dlyTune:575
tR: 970  dlyTune:576
tR: 971  dlyTune:578
tR: 972  dlyTune:579
tR: 973  dlyTune:580
tR: 974  dlyTune:581
tR: 975  dlyTune:582
tR: 976  dlyTune:583
tR: 977  dlyTune:584
tR: 978  dlyTune:585
tR: 979  dlyTune:587
tR: 980  dlyTune:588
tR: 981  dlyTune:589
tR: 982  dlyTune:590
tR: 983  dlyTune:591
tR: 984  dlyTune:592
tR: 985  dlyTune:593
tR: 986  dlyTune:594
tR: 987  dlyTune:596
tR: 988  dlyTune:597
tR: 989  dlyTune:598
tR: 990  dlyTune:599
tR: 991  dlyTune:600
tR: 992  dlyTune:601
tR: 993  dlyTune:602
tR: 994  dlyTune:603
tR: 995  dlyTune:605
tR: 996  dlyTune:606
tR: 997  dlyTune:607
tR: 998  dlyTune:608
tR: 999  dlyTune:609
tR: 1000  dlyTune:610
tR: 1001  dlyTune:611
tR: 1002  dlyTune:612
tR: 1003  dlyTune:614
tR: 1004  dlyTune:615
tR: 1005  dlyTune:616
tR: 1006  dlyTune:617
tR: 1007  dlyTune:618
tR: 1008  dlyTune:619
tR: 1009  dlyTune:620
tR: 1010  dlyTune:621
tR: 1011  dlyTune:623
tR: 1012  dlyTune:624
tR: 1013  dlyTune:625
tR: 1014  dlyTune:626
tR: 1015  dlyTune:627
tR: 1016  dlyTune:628
tR: 1017  dlyTune:629
tR: 1018  dlyTune:630
tR: 1019  dlyTune:632
tR: 1020  dlyTune:633
tR: 1021  dlyTune:634
tR: 1022  dlyTune:635
tR: 1023  dlyTune:636
tR: 1024  dlyTune:637
tR: 1025  dlyTune:638
tR: 1026  dlyTune:639
tR: 1027  dlyTune:641
tR: 1028  dlyTune:642
tR: 1029  dlyTune:643
tR: 1030  dlyTune:644
tR: 1031  dlyTune:645
tR: 1032  dlyTune:646
tR: 1033  dlyTune:647
tR: 1034  dlyTune:648
tR: 1035  dlyTune:650
tR: 1036  dlyTune:651
tR: 1037  dlyTune:652
tR: 1038  dlyTune:653
tR: 1039  dlyTune:654
tR: 1040  dlyTune:655
tR: 1041  dlyTune:656
tR: 1042  dlyTune:657
tR: 1043  dlyTune:659
tR: 1044  dlyTune:660
tR: 1045  dlyTune:661
tR: 1046  dlyTune:662
tR: 1047  dlyTune:663
tR: 1048  dlyTune:664
tR: 1049  dlyTune:665


2017年4月11日 星期二

低成本 頻譜偵測 Arduino 240~930 MHz Spectrum Analyser

2020-10-14 刪除早期版本,以免造成誤解
2018-02-24 <更新>變更參數範圍  訊號偵測CapTime時間內紀錄最大的收訊值預防漏接

使用SI4432模組,快速切換頻率並偵測收訊強度,將指定範圍的信號強度顯示於84×48的LCD畫面上,頻率範圍受限於Sl4432模組可用區間為240~930MHz,晝面顯示為點狀模式時晝面更新較快,但不易讀取訊息,條狀模式易讀取但畫面更新較受限,但成本不到台幣500元,就別太計較了。

單一功能鍵  切換頻譜模式及連續訊號偵測模式。

頻譜模式可調整的有頻率範圍,頻率間隔,信號增益,信號強度範圍,頻率尺規位置。

連續訊號偵測模式可調整的有偵測的頻率,信號增益,偵測的時間間隔。



















/* 

 for Arduino IDE 1.0.6  http://yulie-wu.blogspot.tw/2017/04/arduino-240930-mhz-spectrum-analyser.html
 2018-02-23 debug and 變更參數範圍 改外接天線,預防漏接 偵測CapTime時間內最大的收訊值 
 2017-03-11 add frequency pos 
 2017-03-09 add memory fn & Battery  volt & cus
 2017-03-04 onCase test OK 
 2016-12-23 by yulie~
 */

#include <EEPROM.h>
#include <SPI.h>
//#include <SD.h>
//const int chipSelect = 17;

#include "U8glib.h"
int incomingByte = 0;  // 用來儲存收進來的 data byte
//U8GLIB_PCD8544 u8g(9, 8, 6, 7, 5);    // CLK ,DIN ,CE ,DC ,RST    //for test
U8GLIB_PCD8544 u8g(5, 6, 8, 7, 9);  // CLK ,DIN ,CE ,DC ,RST    //Case OnBoard

#define LINE_MAX 17 
uint8_t line_buf[LINE_MAX] = "U8GLIB Console";
uint8_t line_pos = 0;
// setup a text screen to support scrolling
#define ROW_MAX 6
uint8_t screen[ROW_MAX][LINE_MAX];
uint8_t rows, cols;
uint8_t rssi,keepRssi;
unsigned long t,u,v,y,x;
// line height, which matches the selected font (5x7)
#define LINE_PIXEL_HEIGHT 7
#include <RF22.h>
// Singleton instance of the radio
RF22 rf22;
byte Spectrum_gain = 4; // 預設訊號位準
byte Spectrum_base = 6; // 預設雜訊位準
byte sigDet_gain = 4;   // 預設訊號位準
byte sigDet_base = 16;  // 預設雜訊位準
float sigDet_Frequency = 432.0;
float sigDet_Frequency_1 = 432.0;


byte cus  = 4; // 預設畫面尺規位置 
byte pos  = 40; // 預設 freq target位置
byte j=0;
byte bar=82;//偵測數
byte barW=1;//長條寬度
byte barG=0;//長條圖間隔
byte barT=30;//偵測間隔mS
byte rsi[84];//陣列數量
//int spt[84];//頻譜陣列數

//volatile int encoderPos = 0; // variables changed within interrupts are volatile

String fnStr="spt";
float fScn  = 432.0;          //Step Frequency /MHz
//float fScn1 = 0;
// float fScn = 0.00f;   //Variable to store data read from EEPROM.
//頻譜參數
float fStep=1.0;          //Step Frequency /MHz
float fSta=400.0;         //Start Frequency  /Mhz
float fEnd= fSta + (84 * fStep); 
byte fn,oldFn,sl,sl_1,oldsl = 0;
word CapTime = 200 ;
byte runOne = 0;
//boolean SwMu,SwDn,SwUp = 1;
boolean SwFn = 1;// 不知為何無法整批指定
boolean SwMu = 1;// 不知為何無法整批指定
boolean SwSl = 1;
boolean SwDn = 1;
boolean SwUp = 1;
word oscill = 500 ;

byte val,old_val,count;
byte readrssi;


//rssi 18--> -118dB//rssi 230 --> -2dB
void setup(void) {
  Serial.begin(115200);
  analogReference(INTERNAL);
  pinMode(A0,INPUT_PULLUP);//14 A0 Fn
  pinMode(A1,INPUT_PULLUP);//15 A1 slect
  pinMode(A2,INPUT_PULLUP);//16 A2 up
  pinMode(A3,INPUT_PULLUP);//17 A3 down
  digitalWrite(9,LOW);  
  // digitalWrite(14,LOW);
  if (!rf22.init())
    Serial.println("RF22 init failed");
  rf22.setFrequency(432.0);  // rf22.setModemConfig(RF22::FSK_PN9_Rb2Fd5);
  rf22.setModeRx();  
  delayMicroseconds(200); // Wait for freq to settle    
  for(int i = 0 ; i <= bar ; i++ ){    
    rsi[i]=2;   
  }

  Serial.println("setup ok");
  //    attachInterrupt(1, irRec, HIGH); // encoder pin on interrupt 0 (pin 2)
  //   u8g.setRot180(); for test
       u8g.firstPage(); do {      
       u8g.setFont(u8g_font_6x10);
       u8g.setPrintPos( 0, 7); 
       u8g.print("Easy Spectrum ");
       u8g.setPrintPos( 0, 17); 
       u8g.print("240~930 MHz");
       u8g.setPrintPos( 0, 25); 
       u8g.print("ver 2018-02-24");
       u8g.setPrintPos( 0, 35); 
       u8g.print(" WU YUN CHANG");
       u8g.setPrintPos( 0, 45); 
       u8g.print("Battery:");
       u8g.print(analogRead(A6) * (1.1 / 1024) * 5.51745);
       u8g.print("V"); } 
      while( u8g.nextPage() );
////取得本地設備電池電壓值
// volt = (analogRead(A0) * (1.1 / 1024) * 5.51745) ; // 220K + 48.7k 分壓 , (220 + 48.7)/48.7=5.51745

 delay(5000);
 fn = EEPROM.read(0); 
 // EEPROM.get( eeAddress, fScn );
}

void loop(void) {
  //  if(digitalRead(A0) == 0 && digitalRead(A0) !=  SwMu ){ // 按住連續跑
  if( digitalRead(A0) !=  SwMu ){      //按住 連續跑
    fn++;  if(fn >= 4)fn=0;   SwMu != SwMu; //true 或 false(A0)
    delay(250);
    if( EEPROM.read(0) != fn ){ EEPROM.write(0, fn);}  //設定值改變才會執行 write 一次
  }

  if(millis() - u >= 5000){
    u=millis(); } 

  switch (fn) {
  case 0:{SwFnSpectrum(); Spectrum();} break;  //頻譜 點
  case 1:{SwFnSpectrum(); Spectrum(); } break;   //頻譜 線
  case 2:{SwFnsigDet(); sigDet(); } break; //顯示脈衝訊號 點 
  case 3:{SwFnsigDet(); sigDet(); } break; //顯示脈衝訊號 線
  case 4:{}
  }
}

//================================================================================================================
void Spectrum(){
      float f = fSta;
      fScn = fSta + ((fEnd-fSta)/2);  //for signal  Detect
      fEnd= fSta + (80 * fStep);
      int i=0;
      while( f < fEnd + 1){
        rf22.setFrequency(f);
        delayMicroseconds(1125);//825~1125
       // rsi[i]=(rf22.rssiRead()/gain) - base;
       // if(rsi[i] <= 1)rsi[i] = 1; //2017-03-06 add  
        rsi[i]=constrain(((rf22.rssiRead()/Spectrum_gain) - Spectrum_base), 1,40);
        //  keepRssi=max(keepRssi,rsi[i]);//取得陣列中最大值
        f += fStep;
        i++;
      }
      u8g.firstPage();  
      do {      
 //      u8g.setRot180();
        u8g.setFont(u8g_font_6x10);
        u8g.setPrintPos( 0, 7); 
        if(sl==0){u8g.print("Freq adj:");}
        if(sl==1){u8g.print("Step adj:");u8g.print(fStep);}
        if(sl==2){u8g.print("Gain adj:");u8g.print(Spectrum_gain);}
        if(sl==3){u8g.print("Base adj:");u8g.print(Spectrum_base);}
        if(sl==4){u8g.print("Cus  adj:");u8g.print(cus);}
        if(sl==5){
        u8g.print("Freq:");
        u8g.print(fSta + (pos * fStep),1); 
        u8g.print("MHz");
        for(int j=16;j<40;j+=2)u8g.drawPixel(pos, j ); // Y 軸虛線
      }
      if(sl != 5){
        u8g.setPrintPos( 0, 15); 
        u8g.print(""); 
        u8g.print(fSta,1); 
        u8g.print("~");
        u8g.print(fEnd,1); 
        u8g.print("MHz");}
        for(int j=0;j<84;j+=20)u8g.drawPixel(j, 18 + cus ); 
        for(int j=0;j<84;j+=10)u8g.drawPixel(j, 19 + cus ); 
       // for(int j=13;j<84;j+=20)u8g.drawPixel(j, 19 + cus );
       // u8g.drawFrame(2, 16 , 1, 32); 
       // u8g.drawPixel(0, 18 );u8g.drawPixel(20, 18 );u8g.drawPixel(40, 18 );u8g.drawPixel(60, 18 );u8g.drawPixel(80, 18 );
       // u8g.drawPixel(0, 19 );u8g.drawPixel(20, 19 );u8g.drawPixel(39, 19 );u8g.drawPixel(60, 19 );u8g.drawPixel(80, 19 );
       // u8g.drawPixel(10, 19 );u8g.drawPixel(30, 19 );u8g.drawPixel(50, 19 );u8g.drawPixel(70, 19 );
        if(fn == 0)for(byte i=0;i <= bar -2; i++)u8g.drawPixel(i, 48 - rsi[i]);  //點  時間軸強度(drawPixel 最快)
        if(fn == 1)for(byte i=0;i <= bar -2; i++)u8g.drawFrame((barW + barG) * i, 48 - rsi[i], barW, rsi[i]);  //線 時間軸強度(drawFrame 快 )
        // u8g.drawBox((barW + barG) * i, 48 - rsi[i], barW, rsi[i]);   //時間軸強度(drawBox 普)
        // u8g.drawLine( i, 48 - rsi[i], i, 48);  //時間軸強度(drawLine 慢)
       } 
      while( u8g.nextPage() );
    }

//================================================================================================================
void sigDet(){
  if(sigDet_Frequency != sigDet_Frequency_1){       //設定值改變才執行一次
    sigDet_Frequency_1 = sigDet_Frequency;
    rf22.setFrequency(sigDet_Frequency);
  }  
  if(millis() - x >= CapTime){
//    Serial.println(millis() - x);  //for show real CapTime 
    x = millis();
//-----------------------------------------------------------------------------------------------------------------
    if(CapTime <= 80)rsi[0]=constrain(((rf22.rssiRead()/sigDet_gain) - sigDet_base), 1,40);
    if(rsi[0] <= 2)rsi[0] = 2; //2017-03-06 add 
    for(int i = 0 ; i <= bar ; i++ ){ rsi[ bar - i] = rsi[bar - (i+1)]; }
      u8g.firstPage();  
      do {      
 //       u8g.setRot180();
        u8g.setFont(u8g_font_6x10);
        u8g.setPrintPos( 0, 7); 
        if(sl_1==0){ u8g.print("Freq adj:"); }
        if(sl_1==1){ u8g.print("Step adj:");u8g.print(fStep); }
        if(sl_1==2){ u8g.print("CapT adj:");u8g.print(CapTime); }
        if(sl_1==3){ u8g.print("Gain adj:");u8g.print(sigDet_gain); }
        if(sl_1==4){ u8g.print("Base adj:");u8g.print(sigDet_base); }
        u8g.setPrintPos( 0, 15); 
        u8g.print(" ");
        u8g.print(sigDet_Frequency,1);
        u8g.print("MHz");
        if(fn == 2)for(byte i=0;i <= bar; i++){u8g.drawPixel(i, 48 - rsi[i]);}  //點 時間軸強度
        if(fn == 3)for(byte i=0;i <= bar; i++){u8g.drawFrame((barW + barG) * i, 48 - rsi[i], barW, rsi[i]);}  //線 時間軸強度
      } 
      while( u8g.nextPage() );
//-----------------------------------------------------------------------------------------------------------------

  else {
    //rsi[0]=constrain(((rf22.rssiRead()/sigDet_gain) - sigDet_base), 1,40);
    readrssi=constrain(((rf22.rssiRead()/sigDet_gain) - sigDet_base), 1,40);  
    rsi[0] = max(rsi[0],readrssi);  //預防漏接 偵測CapTime時間內最大的收訊值 
    //Serial.println(rsi[0]);
  }  
}


//================================================================================================================
void SwFnSpectrum(){
       if( digitalRead(A1) !=  SwSl ){      //按住 連續跑
        sl++;     
        if(sl >= 6)sl=0; 
        SwSl != SwSl;                       //true 或 false
        delay(250);
      } 
      switch (sl) {
       case 0:{ //adj freq range
          if(digitalRead(A3) == 0 && digitalRead(A3) !=  SwDn ){   // 按住連續跑
            fSta -= 10 * fStep; SwDn != SwDn; delay(1); }
          if(digitalRead(A2) == 0 && digitalRead(A2) !=  SwUp ){    // 按住連續跑
            fSta += 10 * fStep; SwUp != SwUp; delay(1); }
            fSta = constrain(fSta, 240, 930); } break;
        
       case 1:{ //adj freq step
          if(digitalRead(A3) == 0 && digitalRead(A3) !=  SwDn ){   // 按住連續跑
            fStep-=0.1;  SwDn != SwDn; delay(1);}
          if(digitalRead(A2) == 0 && digitalRead(A2) !=  SwUp ){    // 按住連續跑
            fStep+=0.1; SwUp != SwUp; delay(1); }
            fStep = constrain(fStep, 0.1, 5.0);  } break;

       case 2:{//adj GAIN
          if(digitalRead(A3) == 0 && digitalRead(A3) !=  SwDn ){   // 按住連續跑
            Spectrum_gain++; SwDn != SwDn; delay(1); }
          if(digitalRead(A2) == 0 && digitalRead(A2) !=  SwUp ){    // 按住連續跑
            Spectrum_gain--; SwUp != SwUp; delay(1); }
            Spectrum_gain = constrain(Spectrum_gain, 1, 32);}  break;

      case 3:{//adj base
          if(digitalRead(A3) == 0 && digitalRead(A3) !=  SwDn ){   // 按住連續跑
            Spectrum_base++; SwDn != SwDn; delay(80); }
          if(digitalRead(A2) == 0 && digitalRead(A2) !=  SwUp ){    // 按住連續跑
            Spectrum_base--; SwUp != SwUp; delay(80); }
            Spectrum_base = constrain(Spectrum_base, 1, 64); }  break;
          
      case 4:{//adj cus
          if(digitalRead(A3) == 0 && digitalRead(A3) !=  SwDn ){   // 按住連續跑
            cus++; SwDn != SwDn; delay(5); }
          if(digitalRead(A2) == 0 && digitalRead(A2) !=  SwUp ){    // 按住連續跑
            cus--; SwUp != SwUp; delay(5); }
            cus = constrain(cus, 1, 30); }  break;
          
      case 5:{//adj pos
          if(digitalRead(A3) == 0 && digitalRead(A3) !=  SwDn ){   // 按住連續跑
            pos--; SwDn != SwDn; delay(2);  }
          if(digitalRead(A2) == 0 && digitalRead(A2) !=  SwUp ){    // 按住連續跑
            pos++; SwUp != SwUp; delay(2);  }
            pos = constrain(pos, 0, 81); }  break;
      } 
}

//================================================================================================================
void SwFnsigDet(){
        if( digitalRead(A1) !=  SwSl ){      //按住 連續跑
        sl_1++;     
        if(sl_1 >= 5)sl_1=0; 
        SwSl != SwSl; //true 或 false
        delay(250);
      } 
      switch (sl_1) {
       case 0:{ //adj freq range
          if(digitalRead(A3) == 0 && digitalRead(A3) !=  SwDn ){   // 按住連續跑
            sigDet_Frequency -=  fStep; SwDn != SwDn; delay(200); }
          if(digitalRead(A2) == 0 && digitalRead(A2) !=  SwUp ){    // 按住連續跑
            sigDet_Frequency +=  fStep; SwUp != SwUp; delay(200); }
            sigDet_Frequency = constrain(sigDet_Frequency, 240, 960); } break;

       case 1:{ //adj freq step
          if(digitalRead(A3) == 0 && digitalRead(A3) !=  SwDn ){   // 按住連續跑
            fStep-=0.1; SwDn != SwDn; delay(100);}
          if(digitalRead(A2) == 0 && digitalRead(A2) !=  SwUp ){    // 按住連續跑
            fStep+=0.1; SwUp != SwUp; delay(100);}
            fStep = constrain(fStep, 0.1, 5.0);      }  break;
        
       case 2:{ //adj cap time
          if(digitalRead(A3) == 0 && digitalRead(A3) !=  SwDn ){   // 按住連續跑
            if(CapTime <= 10 && CapTime >= 1 ) CapTime-= 1;
            if(CapTime <= 100 && CapTime >= 20 ) CapTime-= 10;
            if(CapTime >= 200 )  CapTime-= 100;
            SwDn != SwDn;  delay(100); }
          if(digitalRead(A2) == 0 && digitalRead(A2) !=  SwUp ){    // 按住連續跑
            if(CapTime >= 100 )  CapTime+= 100;
            if(CapTime <= 100 && CapTime >= 10 ){CapTime+= 10;}
            if(CapTime <= 9 && CapTime >= 1 ) CapTime+= 1;
            SwUp != SwUp; delay(100); }
            CapTime = constrain(CapTime, 1, 5000); }  break;

       case 3:{//adj GAIN
          if(digitalRead(A3) == 0 && digitalRead(A3) !=  SwDn ){   // 按住連續跑
            sigDet_gain++; SwDn != SwDn; delay(100); }
          if(digitalRead(A2) == 0 && digitalRead(A2) !=  SwUp ){    // 按住連續跑
            sigDet_gain--; SwUp != SwUp; delay(100); }
            sigDet_gain = constrain(sigDet_gain, 1, 32);  } break;

       case 4:{//adj base
          if(digitalRead(A3) == 0 && digitalRead(A3) !=  SwDn ){    // 按住連續跑+
            sigDet_base++; SwDn != SwDn; delay(80); }               // 連續速率
          if(digitalRead(A2) == 0 && digitalRead(A2) !=  SwUp ){    // 按住連續跑-
            sigDet_base--; SwUp != SwUp; delay(80); }               // 連續速率
            sigDet_base = constrain(sigDet_base, 1, 80);  } break;
      } 
}