/***
  呼吸-LED1
  pwmを用いた
  ***/
 
//sekibun
  int i = 0;
  int ad;
  int valS[101];
  long sum = 0;
  int heikin1, heikin2;
  int now;
//maxx
  int maxx;
  int widthh;
  char line1, line2;
  long t = 0;
  long time1, time2;
 
//LED
  int ledPin3 = 11; // LED connected to digital pin 11
  int ledVal = 1;
  int PW1 = 1;
  int PW2 = 4;
  int k = 0;
 
//その他
  int k1 = 0;
  int k2 = 0;
 
void setup()
{
  Serial.begin(9600);
  // sets the digital pin as output
  pinMode(ledPin3, OUTPUT);  
}
 
void loop()
{
  sum = 0;
  heikin1 = heikin2;
  // ここで100幅分の平均値を計算
  for(i=0 ; i<100 ; i++){
      ad = analogRead(0);
      valS[i] = ad;
      sum += valS[i];
 
      if(k == 1){ // 下向きのベクトルのとき(温度下降時)
        PW1 = 1;
        if(PW2 <= 20){
           PW2 = PW2 + 1 ; // LEDだんだん明るく
        }
        if(PW2 > 20){
           PW1 = 0;
        }
      }
      if(k == 0){ // 上向きのベクトルのとき(温度上昇時)
         PW1 = 1;
         if(PW2 >= 1){
           PW2 = PW2 - 1;// LEDだんだん明るく
         }
      }
      // pwm操作
      digitalWrite(ledPin3, HIGH);  // sets the LED on
      delay(PW1);                  // waits for 10-PW 
      digitalWrite(ledPin3, LOW);  // sets the LED off
      delay(PW2);      // waits for PW (PW=1000 -> 1sec)
    }
    heikin2 = sum/100;
  }
 
  //* Down *//
  if(heikin1 > heikin2){
    if((line1 == 'U' && line2 == 'F') 
    || (line1 == 'F' && line2 == 'U') 
    || (line1 == 'U' && line2 == 'U')){
      maxx = heikin1;  // 極大値の更新
      time1 = time2;
      time2 = t;
      widthh = time2 - time1;      // 振幅
    line1 = line2;
    line2 = 'D';
 
    k = 1;
    }
 
    else if(line1 == 'F' && line2 == 'F'){
      line1 = line2;
      line2 = 'D';
 
      k = 1;
    }
    else{
      line1 = line2;
      line2 = 'F';
    }
}
 
  //* Up *//
  else if(heikin1 < heikin2){
    if((line1 == 'D' && line2 == 'F') 
    || (line1 == 'F' && line2 == 'D') 
    || (line1 == 'D' && line2 == 'D') 
    || (line1 == 'F' && line2 == 'F')){
      line1 = line2;
      line2 = 'U';
 
      k = 0;
    }
    else{
      line1 = line2;
      line2 = 'F';
    }
  }
 
  //* Flat *//
  else {
    line1 = line2;
    line2 = 'F';
  }
  Serial.println(line2);
}
 
 
----
 
最終更新:2007年06月25日 19:43