Weird behavior in my code and I have no idea whats causing it, help please :)

So Im developing code for a variable gain op amp which receives square wave from an IR sensing diode

Sometimes the code will have to deal with a offset in the voltage so that sometimes the trough of the square wave may not be at zero, so im developing a sketch which will detect the peak and the trough of the wave and set the low threshold so as to be able to differentiate between the high and the low and thus give a peak to peak value.

//setting the clock divider for faster ADC operation
#define FASTADC 1
// defines for setting and clearing register bits
#ifndef cbi
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#endif
#ifndef sbi
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#endif

int ThreshArray[200];
int Peak = 0;
int Trough = 1023;
float High = 0;
float Low = 0;
int Threshold = 0;

void setup() {
  Serial.begin(250000);
  #if FASTADC
 // set prescale to 16
 sbi(ADCSRA,ADPS2) ;
 cbi(ADCSRA,ADPS1) ;
 cbi(ADCSRA,ADPS0) ;
#endif
}

void loop(){
  //200 reads of a 2KHz square wave
    for(int i = 0; i < 200; i++){
      ThreshArray [i]  =  analogRead(0);
      Serial.println(ThreshArray [i]);
    }
  //check each value to find peak and trough
    for (int i = 0; 1 < 200; i++){
      
      if (ThreshArray[i] < Trough){
        Trough = ThreshArray[i];
        Serial.print("Trough    ");
        Serial.println(Trough);
      }

      if (ThreshArray[i] > Peak){
        Peak = ThreshArray[i];
        Serial.print("Peak    ");
        Serial.println(Peak);
      }
    }   
}

I have the whittled down to where the error is occuring, note im not setting the threshold or giving a peak to peak value, just finding the trough and peak of the wave. This actually works fine but its what the serial print shows after the correct values are chosen which is giving me a headache

792
179
180
796
179
796
179
795
179
795
179
179
795
179
795
179
796
179
796
179
179
796
179
796
179
796
179
796
179
179
796
179
796
179
796
179
798
796
179
796
180
797
179
797
179
796
796
179
796
179
796
179
796
179
406
798
180
798
180
797
179
798
179
179
796
180
796
180
796
179
796
179
180
797
179
796
179
797
179
797
179
179
796
179
796
179
796
179
798
796
179
796
179
796
179
796
179
796
795
179
796
179
796
179
796
179
179
796
179
796
179
796
179
796
179
180
796
179
796
179
796
179
796
179
179
796
179
797
179
797
179
797
182
179
797
179
796
179
796
179
796
796
179
796
180
798
180
798
179
798
798
180
798
179
796
179
796
179
643
796
179
796
179
797
179
798
179
179
797
179
796
179
796
179
796
179
179
796
179
796
179
796
179
796
179
179
796
180
796
179
795
179
795
796
179
795
179
795
179
796
Trough    792
Peak    792
Trough    179
Peak    796
Peak    798
Trough    0
Peak    1000
Peak    14336
Peak    14647
Peak    29268
Trough    -32768
Peak    30319
Peak    31027
Peak    31539
Peak    31795
Peak    31854
Peak    31946
Peak    31974
Peak    31989
Peak    31990
Peak    31992
Peak    31994
Peak    31996
Peak    31998
Peak    32001
Peak    32003
Peak    32005
Peak    32006
Peak    32008
Peak    32010
Peak    32012
Peak    32014
Peak    32016
Peak    32018
Peak    32107
Peak    32108
Peak    32110
Peak    32112
Peak    32114
Peak    32116
Peak    32118
Peak    32120
Peak    32122
Peak    32124
Peak    32126
Peak    32129
Peak    32131
Peak    32133
Peak    32135
Peak    32136
Peak    32138
Peak    32140
Peak    32142
Peak    32144
Peak    32146
Peak    32148
Peak    32150
Peak    32152
Peak    32154
Peak    32156
Peak    32158
Peak    32160
Peak    32162
Peak    32164
Peak    32165
Peak    32167
Peak    32169
Peak    32172
Peak    32174
Peak    32176
Peak    32178
Peak    32180
Peak    32182
Peak    32184
Peak    32186
Peak    32188
Peak    32190
Peak    32192
Peak    32194
Peak    32195
Peak    32197
Peak    32199
Peak    32201
Peak    32203
Peak    32205
Peak    32207
Peak    32209
Peak    32211
Peak    32214
Peak    32216
Peak    32218
Peak    32220
Peak    32222
Peak    32224
Peak    32225
Peak    32227
Peak    32229
Peak    32231
Peak    32233
Peak    32235
Peak    32237
Peak    32239
Peak    32241
Peak    32243
Peak    32245
Peak    32247
Peak    32249
Peak    32251
Peak    32253
Peak    32254
Peak    32257
Peak    32259
Peak    32261
Peak    32263
Peak    32265
Peak    32267
Peak    32269
Peak    32271
Peak    32273
Peak    32275
Peak    32277
Peak    32279
Peak    32281
Peak    32283
Peak    32284
Peak    32286
Peak    32288
Peak    32290
Peak    32292
Peak    32294
Peak    32296
Peak    32299
Peak    32301
Peak    32303
Peak    32305
Peak    32307
Peak    32309
Peak    32311
Peak    32313
Peak    32314
Peak    32316
Peak    32318
Peak    32320
Peak    32322
Peak    32324
Peak    32326
Peak    32328
Peak    32330
Peak    32332
Peak    32334
Peak    32336
Peak    32338
Peak    32340
Peak    32343
Peak    32344
Peak    32346
Peak    32348
Peak    32350
Peak    32352
Peak    32354
Peak    32356
Peak    32358
Peak    32360
Peak    32362
Peak    32364
Peak    32366
Peak    32368
Peak    32370
Peak    32372
Peak    32373
Peak    32375
Peak    32377
Peak    32379
Peak    32381
Peak    32384
Peak    32386
Peak    32388
Peak    32390
Peak    32392
Peak    32394
Peak    32396
Peak    32398
Peak    32400
Peak    32402
Peak    32403
Peak    32405
Peak    32407
Peak    32409
Peak    32411
Peak    32413
Peak    32415
Peak    32417
Peak    32419
Peak    32421
Peak    32423
Peak    32425
Peak    32428
Peak    32430
Peak    32431
Peak    32433
Peak    32435
Peak    32437
Peak    32439
Peak    32441
Peak    32443
Peak    32445
Peak    32447
Peak    32449
Peak    32451
Peak    32453
Peak    32455
Peak    32457
Peak    32459
Peak    32460
Peak    32462
Peak    32464
Peak    32466
Peak    32468
Peak    32471
Peak    32473
Peak    32475
Peak    32477
Peak    32479
Peak    32481
Peak    32483
Peak    32485
Peak    32487
Peak    32489
Peak    32490
Peak    32492
Peak    32494
Peak    32496
Peak    32498
Peak    32500
Peak    32502
Peak    32504
Peak    32506
Peak    32508
Peak    32510
Peak    32513
Peak    32515
Peak    32517
Peak    32519
Peak    32520
Peak    32522
Peak    32524
Peak    32526
Peak    32528
Peak    32530
Peak    32532
Peak    32534
Peak    32536
Peak    32538
Peak    32540
Peak    32542
Peak    32544
Peak    32546
Peak    32548
Peak    32549
Peak    32551
Peak    32553
Peak    32556
Peak    32558
Peak    32560
Peak    32562
Peak    32564
Peak    32566
Peak    32568
Peak    32570
Peak    32572
Peak    32574
Peak    32576
Peak    32578
Peak    32579
Peak    32581
Peak    32583
Peak    32585
Peak    32587
Peak    32589
Peak    32591
Peak    32593
Peak    32595
Peak    32598
Peak    32600
Peak    32602
Peak    32604
Peak    32606
Peak    32608
Peak    32609
Peak    32611
Peak    32613
Peak    32615
Peak    32617
Peak    32619
Peak    32621
Peak    32623
Peak    32625
Peak    32627
Peak    32629
Peak    32631
Peak    32633
Peak    32635
Peak    32637
Peak    32638
Peak    32641
Peak    32643
Peak    32645
Peak    32647
Peak    32649
Peak    32651
Peak    32653
Peak    32655
Peak    32657
Peak    32659
Peak    32661
Peak    32663
Peak    32665
Peak    32667
Peak    32668
Peak    32670
Peak    32672
Peak    32674
Peak    32676
Peak    32678
Peak    32680
Peak    32683
Peak    32685
Peak    32687
Peak    32689
Peak    32691
Peak    32693
Peak    32695
Peak    32697
Peak    32698
Peak    32700
Peak    32702
Peak    32704
Peak    32706
Peak    32708
Peak    32710
Peak    32712
Peak    32714
Peak    32716
Peak    32718
Peak    32720
Peak    32722
Peak    32724
Peak    32727
Peak    32728
Peak    32730
Peak    32732
Peak    32734
Peak    32736
Peak    32738
Peak    32740
Peak    32742
Peak    32744
Peak    32746
Peak    32748
Peak    32750
Peak    32752
Peak    32754
Peak    32756
Peak    32757
Peak    32759
Peak    32761
Peak    32763
Peak    32765
Peak    32767

these are the results I got on the com, you'll see it takes the readings finds the correct peak and trough and goes away off on a mad one, also the code stops there it dosnt repeat which has me baffled. Any insight into what I may be doing wrong or how to fix the issue would be very much appreciated

And that, children, is one reason why using i as a variable name is not a good idea.

Doh!!!

easily done and hard to spot, for me anyways Im the kinda guy who couldnt me nose even though its attached to me face

thanks guys, Ill correct the code and let you know if it works

UKHeliBob:
And that, children, is one reason why using i as a variable name is not a good idea.

+5

I normally use 'n' in FOR loops

..R

Robin2:
+5

I normally use 'n' in FOR loops

..R

The one that bites me most often is using "=" when it should be "==".

yep worked at treat thanks Delta_G

taught me a lesson in trying to have a more thoughtful look at the code when something goes wrong