「ホタログ8」の編集履歴(バックアップ)一覧はこちら

ホタログ8」(2007/08/23 (木) 23:21:29) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

**2007.8.18 -&bold(){色変えるプログラム} デキター! キタコレ! 泣きそう。 #hightlight(c){{ /*** 呼吸-LED1 pwmを用いない → 赤/青LEDだけ用いる 平均値の出し方を随時に変えてみたバージョン LEDは2色だけ b_led_re_re4_noheikin_redをpwm用いないように書き換えた b_led_re_re4_noheikin_red1を参考にした(←LED1個verの)。 b_led_re_re4_noheikin_red2の、pwmを[赤/青LEDだけ]に変更 b_led_re_re4_noheikin_red3に、how_to_38kHzの赤外線LED追加 ***/ //sekibun int i = 0; int h[70] = { 0 }; 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; int widadd = 8; //Yellow_LED int ledPin3 = 11; // LED connected to digital pin 11 // int YPW1 = 1; int YPW2 = 4; int k1 = 0; //Red_LED int ledPin2 = 12; // LED connected to digital pin 12 int RPW1 = 0; int RPW2 = 1; // int k2 = 0; int k3 = 0; //Blue_LED int ledPin1 = 10; // LED connected to digital pin 10 int BPW1 = 0; int BPW2 = 1; //赤外線LED int IRPin = 2; int pulsos[] = {1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}; int cont = 0; int cont2 = 0; //赤外線受信モジュール int sekimoju; //同期LED int ledPin4 = 9; int douki = 0; //LEDその他 int sokudo = 0; /* k1, k2, k3 について * ** k1 ** * k1 = 0 // 上向きのベクトルのとき(温度上昇時) * k1 = 1 // 下向きのベクトルのとき(温度下降時) * ** k2 ** * k2 = 0 // 振幅が350(基準値)より小のとき * k2 = 1 // 振幅が350(基準値)より大のとき * ** k3 ** * k3 = 0 // 連続で出るYPW2=150の、150が最初に出たとき * k3 = 1 // 2個目以降の150のとき */ void setup() { Serial.begin(9600); pinMode(ledPin1, OUTPUT); pinMode(ledPin2, OUTPUT); pinMode(ledPin3, OUTPUT); pinMode(ledPin4, OUTPUT); pinMode(IRPin, OUTPUT); } void loop() { sum = 0; heikin1 = heikin2; // ここで70幅分の平均値をずらしながら計算 for(i=69 ; i>=1 ; i--){ h[i] = h[i-1]; sum += h[i]; } h[0] = analogRead(0); sum += h[0]; heikin2 = sum/70; t++; if(t >= 2147483647){ t = 0; } //LED_Yellow and Red if(k1 == 1){ // 下向きのベクトルのとき(温度下降時) if(YPW2 > 1){ YPW2 = YPW2 - 2 ; // LEDだんだん暗く } if(YPW2 <= 1){ YPW2 = 1; } } if(k1 == 0){ // 上向きのベクトルのとき(温度上昇時) if(YPW2 < 150){ k3 = 0; YPW2 = YPW2 + 2;// LEDだんだん明るく } if(YPW2 >= 150){ YPW2 = 150; if(k3 == 0){ //要はLEDがmaxのとき time1 = time2; time2 = t; widthh[0] = time2 - time1; // 振幅 if(widthh[0] >= 400){           // 振幅が増加するとき だんだん青に if(sokudo >= -4) sokudo++; } else if(widthh[0] <= 250){           // 振幅が減少するとき だんだん赤に if(sokudo <= 4) sokudo--; } else if(widthh[0]>250 && widthh[0]<400){           // 振幅基準値 if(sokudo >= 1) sokudo--; if(sokudo <= -1) sokudo++; } k3 = 1; } //赤外線LED for(cont=0;cont<28;cont++){ if(pulsos[cont]==1){ for(cont2=0;cont2<38;cont2++){ digitalWrite(IRPin,HIGH); delayMicroseconds(13); digitalWrite(IRPin, LOW); delayMicroseconds(13); } }else{ digitalWrite(IRPin, LOW); delay(1); } } } } analogWrite(ledPin3, YPW2); // sets the LED on //LED_Red and Blue if(sokudo <= 1 && sokudo >= -1){ // 振幅基準値 (LED黄色) // LED明るさ0に RPW1 = BPW1 = 0; RPW2 = BPW2 = 1; } if(sokudo == 2){ // 振幅が増加するとき だんだん青に RPW1 = 0; RPW2 = 1; BPW1 = 1; BPW2 = 10; } if(sokudo == 3){ // 振幅が増加するとき だんだん青に RPW1 = 0; RPW2 = 1; BPW1 = 1; BPW2 = 5; } if(sokudo == 4){ // 振幅が増加するとき だんだん青に RPW1 = 0; RPW2 = 1; BPW1 = 2; BPW2 = 4; } if(sokudo == 5){ // 振幅が増加するとき だんだん青に RPW1 = 0; RPW2 = 1; BPW1 = 2; BPW2 = 1; } // if(sokudo == -2){ // 振幅が増加するとき だんだん赤に RPW1 = 1; RPW2 = 10; BPW1 = 0; BPW2 = 1; } if(sokudo == -3){ // 振幅が増加するとき だんだん赤に RPW1 = 1; RPW2 = 5; BPW1 = 0; BPW2 = 1; } if(sokudo == -4){ // 振幅が増加するとき だんだん赤に RPW1 = 2; RPW2 = 4; BPW1 = 0; BPW2 = 1; } if(sokudo == -5){ // 振幅が増加するとき だんだん赤に RPW1 = 2; RPW2 = 1; BPW1 = 0; BPW2 = 1; } // Red LED digitalWrite(ledPin2, HIGH); // sets the LED on Red delay(RPW1); digitalWrite(ledPin2, LOW); // sets the LED off Red delay(RPW2); // Blue LED digitalWrite(ledPin1, HIGH); // sets the LED on Blue delay(BPW1); digitalWrite(ledPin1, LOW); // sets the LED off Blue delay(BPW2); //* Down *// if(heikin1 > heikin2){ if((line1 == 'U' && line2 == 'F') ||     (line1 == 'F' && line2 == 'U') ||     (line1 == 'U' && line2 == 'U')){ line1 = line2; line2 = 'D'; k1 = 1; } else if(line1 == 'F' && line2 == 'F'){ line1 = line2; line2 = 'D'; k1 = 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'; k1 = 0; } else{ line1 = line2; line2 = 'F'; } } //* Flat *// else { line1 = line2; line2 = 'F'; } //* 赤外線受信モジュール *// sekimoju = analogRead(1); if(sekimoju <= 1 && k3 == 0){ for(i=0 ; i<=10 || douki>=250 ; i++){ douki = douki + 4; analogWrite(ledPin4, douki); } }else{ douki = 0; analogWrite(ledPin4, douki); } Serial.println(heikin2); } }} 振幅(赤と青に変わる程度)の値は要検討。 >&bold(){コメント} #comment(vsize=2,nsize=20,size=40) ---- ---- today: &counter(today) yesterday: &counter(yesterday)
**2007.8.18 -&bold(){色変えるプログラム} デキター! キタコレ! 泣きそう。 #highlight(c){{ /*** 呼吸-LED1 pwmを用いない → 赤/青LEDだけ用いる 平均値の出し方を随時に変えてみたバージョン LEDは2色だけ b_led_re_re4_noheikin_redをpwm用いないように書き換えた b_led_re_re4_noheikin_red1を参考にした(←LED1個verの)。 b_led_re_re4_noheikin_red2の、pwmを[赤/青LEDだけ]に変更 b_led_re_re4_noheikin_red3に、how_to_38kHzの赤外線LED追加 ***/ //sekibun int i = 0; int h[70] = { 0 }; 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; int widadd = 8; //Yellow_LED int ledPin3 = 11; // LED connected to digital pin 11 // int YPW1 = 1; int YPW2 = 4; int k1 = 0; //Red_LED int ledPin2 = 12; // LED connected to digital pin 12 int RPW1 = 0; int RPW2 = 1; // int k2 = 0; int k3 = 0; //Blue_LED int ledPin1 = 10; // LED connected to digital pin 10 int BPW1 = 0; int BPW2 = 1; //赤外線LED int IRPin = 2; int pulsos[] = {1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}; int cont = 0; int cont2 = 0; //赤外線受信モジュール int sekimoju; //同期LED int ledPin4 = 9; int douki = 0; //LEDその他 int sokudo = 0; /* k1, k2, k3 について * ** k1 ** * k1 = 0 // 上向きのベクトルのとき(温度上昇時) * k1 = 1 // 下向きのベクトルのとき(温度下降時) * ** k2 ** * k2 = 0 // 振幅が350(基準値)より小のとき * k2 = 1 // 振幅が350(基準値)より大のとき * ** k3 ** * k3 = 0 // 連続で出るYPW2=150の、150が最初に出たとき * k3 = 1 // 2個目以降の150のとき */ void setup() { Serial.begin(9600); pinMode(ledPin1, OUTPUT); pinMode(ledPin2, OUTPUT); pinMode(ledPin3, OUTPUT); pinMode(ledPin4, OUTPUT); pinMode(IRPin, OUTPUT); } void loop() { sum = 0; heikin1 = heikin2; // ここで70幅分の平均値をずらしながら計算 for(i=69 ; i>=1 ; i--){ h[i] = h[i-1]; sum += h[i]; } h[0] = analogRead(0); sum += h[0]; heikin2 = sum/70; t++; if(t >= 2147483647){ t = 0; } //LED_Yellow and Red if(k1 == 1){ // 下向きのベクトルのとき(温度下降時) if(YPW2 > 1){ YPW2 = YPW2 - 2 ; // LEDだんだん暗く } if(YPW2 <= 1){ YPW2 = 1; } } if(k1 == 0){ // 上向きのベクトルのとき(温度上昇時) if(YPW2 < 150){ k3 = 0; YPW2 = YPW2 + 2;// LEDだんだん明るく } if(YPW2 >= 150){ YPW2 = 150; if(k3 == 0){ //要はLEDがmaxのとき time1 = time2; time2 = t; widthh[0] = time2 - time1; // 振幅 if(widthh[0] >= 400){           // 振幅が増加するとき だんだん青に if(sokudo >= -4) sokudo++; } else if(widthh[0] <= 250){           // 振幅が減少するとき だんだん赤に if(sokudo <= 4) sokudo--; } else if(widthh[0]>250 && widthh[0]<400){           // 振幅基準値 if(sokudo >= 1) sokudo--; if(sokudo <= -1) sokudo++; } k3 = 1; } //赤外線LED for(cont=0;cont<28;cont++){ if(pulsos[cont]==1){ for(cont2=0;cont2<38;cont2++){ digitalWrite(IRPin,HIGH); delayMicroseconds(13); digitalWrite(IRPin, LOW); delayMicroseconds(13); } }else{ digitalWrite(IRPin, LOW); delay(1); } } } } analogWrite(ledPin3, YPW2); // sets the LED on //LED_Red and Blue if(sokudo <= 1 && sokudo >= -1){ // 振幅基準値 (LED黄色) // LED明るさ0に RPW1 = BPW1 = 0; RPW2 = BPW2 = 1; } if(sokudo == 2){ // 振幅が増加するとき だんだん青に RPW1 = 0; RPW2 = 1; BPW1 = 1; BPW2 = 10; } if(sokudo == 3){ // 振幅が増加するとき だんだん青に RPW1 = 0; RPW2 = 1; BPW1 = 1; BPW2 = 5; } if(sokudo == 4){ // 振幅が増加するとき だんだん青に RPW1 = 0; RPW2 = 1; BPW1 = 2; BPW2 = 4; } if(sokudo == 5){ // 振幅が増加するとき だんだん青に RPW1 = 0; RPW2 = 1; BPW1 = 2; BPW2 = 1; } // if(sokudo == -2){ // 振幅が増加するとき だんだん赤に RPW1 = 1; RPW2 = 10; BPW1 = 0; BPW2 = 1; } if(sokudo == -3){ // 振幅が増加するとき だんだん赤に RPW1 = 1; RPW2 = 5; BPW1 = 0; BPW2 = 1; } if(sokudo == -4){ // 振幅が増加するとき だんだん赤に RPW1 = 2; RPW2 = 4; BPW1 = 0; BPW2 = 1; } if(sokudo == -5){ // 振幅が増加するとき だんだん赤に RPW1 = 2; RPW2 = 1; BPW1 = 0; BPW2 = 1; } // Red LED digitalWrite(ledPin2, HIGH); // sets the LED on Red delay(RPW1); digitalWrite(ledPin2, LOW); // sets the LED off Red delay(RPW2); // Blue LED digitalWrite(ledPin1, HIGH); // sets the LED on Blue delay(BPW1); digitalWrite(ledPin1, LOW); // sets the LED off Blue delay(BPW2); //* Down *// if(heikin1 > heikin2){ if((line1 == 'U' && line2 == 'F') ||     (line1 == 'F' && line2 == 'U') ||     (line1 == 'U' && line2 == 'U')){ line1 = line2; line2 = 'D'; k1 = 1; } else if(line1 == 'F' && line2 == 'F'){ line1 = line2; line2 = 'D'; k1 = 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'; k1 = 0; } else{ line1 = line2; line2 = 'F'; } } //* Flat *// else { line1 = line2; line2 = 'F'; } //* 赤外線受信モジュール *// sekimoju = analogRead(1); if(sekimoju <= 1 && k3 == 0){ for(i=0 ; i<=10 || douki>=250 ; i++){ douki = douki + 4; analogWrite(ledPin4, douki); } }else{ douki = 0; analogWrite(ledPin4, douki); } Serial.println(heikin2); } }} 振幅(赤と青に変わる程度)の値は要検討。 >&bold(){コメント} #comment(vsize=2,nsize=20,size=40) ---- ---- today: &counter(today) yesterday: &counter(yesterday)

表示オプション

横に並べて表示:
変化行の前後のみ表示: