「ホタログ2」の編集履歴(バックアップ)一覧に戻る

ホタログ2 - (2007/07/03 (火) 23:07:18) のソース

**2007.7.3 
-&bold(){呼吸が速くなると、REDが赤色に変色するプログラム}
プログラムは書け、コンパイルは通ったけどまだ動作確認はしてない。先日回路を確認する際に、マイコンの接続等を全部ばらしたので、元に戻すのに時間がかかる。とりあえずドライバーが見当たらない。明日来て動作確認する。
もはや、見るのが億劫なほど長くなってしまったプログラム・・・。184行。まだましか。

以下、未確認プログラム。メモ。確認したら消す。
#highlight(c){{
/***
  呼吸-LED2
  pwmを用いた
  ***/

//sekibun
  int i = 0;
  int ad;
  int valS[101];
  long sum = 0;
  int heikin1, heikin2;
  int now;

//maxx
  int maxx;
  int widthh[4] = { 8, 8, 8, 8};
  char line1, line2;
  long t = 0;
  long time1, time2;
  long widadd = 8;

//黄色LED
  int ledPin3 = 11;   // LED connected to digi-pin 11
  int YPW1 = 1;
  int YPW2 = 4;
  int k1 = 0;
  
//赤色LED
  int ledPin2 = 12;   // LED connected to digi-pin 12
  int RPW1 = 1000;
  int RPW2 = 4000;
  int RPW3 = 100;
  int k2 = 0;

//その他

  
//確認用
  long r = 0;
  long u = 0; 
  int ledPin = 13;          // LED connect 13
  int previousMillis = 0;   // LED fu? modificado
  int value = LOW;          // Estado anterior del LED
  int interval = 1000;      // Intervalo de parpadeo


void setup()
{
  Serial.begin(9600);
  pinMode(ledPin3, OUTPUT);      // Yellow pin as output
  pinMode(ledPin2, OUTPUT);      // Red pin as output
  // 確認用
  pinMode(ledPin, OUTPUT);
}
 
void loop()
{
  sum = 0;
  heikin1 = heikin2;
  r++;
  // ここで100幅分の平均値を計算
  for(i=0 ; i<100 ; i++){
      ad = analogRead(0);
      valS[i] = ad;
      sum += valS[i];
      
  //LED_Yellow   
      if(k1 == 1){ // 下向きのベクトルのとき(温度下降時)
        YPW1 = 1;
        if(YPW2 <= 20){
           YPW2 = YPW2 + 1 ; // LEDだんだん明るく
        }
        if(YPW2 > 20){
           YPW1 = 0;
        }
      }
      if(k1 == 0){ // 上向きのベクトルのとき(温度上昇時)
         YPW1 = 1;
         if(YPW2 >= 1){
           YPW2 = YPW2 - 1;// LEDだんだん明るく
         }
      }
      // pwm操作
      digitalWrite(ledPin3, HIGH);   // sets the LED on
      delay(YPW1);                  // wait 
      digitalWrite(ledPin3, LOW);    // sets the LED off
      delay(YPW2);                  // wait
      
  //LED_Red   
      if(k2 == 1){ // 下向きのベクトルのとき(温度下降時)
        RPW1 = 1;
        if(RPW2 <= 20){
           RPW2 = RPW2 + RPW3 ; // LEDだんだん明るく
        }
        if(RPW2 > 20){
           RPW1 = 0;
        }
      }
      if(k2 == 0){ // 上向きのベクトルのとき(温度上昇時)
         RPW1 = 1;
         if(RPW2 >= 1){
           RPW2 = RPW2 - RPW3;// LEDだんだん明るく
         }
      }
      // pwm操作
      digitalWrite(ledPin2, HIGH);   // sets the LED on
      delayMicroseconds(RPW1);       // wait 
      digitalWrite(ledPin2, LOW);    // sets the LED off
      delayMicroseconds(RPW2);       // wait
    }
    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[0] = time2 - time1;      // 振幅
     line1 = line2;
    line2 = 'D';   
    k1 = 1;
    }
    else if(line1 == 'F' && line2 == 'F'){
      line1 = line2;
      line2 = 'D'; 
      k1 = 1;
    }
    else{
      line1 = line2;
      line2 = 'F';
    }
  }

  //* Widthh for Red LED *//
  widthh[3] = widthh[2];
  widthh[2] = widthh[1];
  widthh[1] = widthh[0];
  widadd = (widthh[1] + widthh[2] + widthh[3])/3;
  
  if(widthh[1] > widthh[2]){
    k2 = 1;
    RPW3 += 100;
  }
  else if(widthh[1] < widthh[2]){
    k2 = 0;
    RPW3 -= 100;
  }

  //* 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';
      k1 = 0;
    }
    else{
      line1 = line2;
      line2 = 'F';
    }
  }
  
  //* Flat *//
  else {
    line1 = line2;
    line2 = 'F';
  }

  // 確認用
    if (millis() - previousMillis > interval) {
    previousMillis = millis();   
    // Recuerda la ?ltima LED cambi?
    if (value == LOW)            
    // Si el LED est? apagado lo enciende y viceversa.
      value = HIGH;
    else
      value = LOW;
    digitalWrite(ledPin, value);
    Serial.println(i);
  }
}

}}



 
>&bold(){コメント} 
#comment(vsize=2,nsize=20,size=40)



----
**2007.7.2 
-&bold(){今日は就活?みたいな感じで}
何も進んでない2。 これはまずい。
でもホームページを作っている。ほぼ一息ついた。

明日は色をつけるプログラムを書く予定だったけど、
明後日のゼミが明日に移動になったので…、どうにか何とかしよう。


 
>&bold(){コメント} 
#comment(vsize=2,nsize=20,size=40)



----
----
today: &counter(today)
yesterday: &counter(yesterday)