Arduino:自動階段照明

Arduinoプラットフォームの可能性を探り続け、カントリーハウスの階段を強調することにしました。



まず、インターネットで同様のプロジェクトを研究し、 優れた仕事 Rimidalwを見つけました。 他の人の経験を分析し、自信を得た後、私は自分のプロジェクトの実施に進みました。



目的:



「暗闇での自動階段照明」





タスク:




1) 制御回路の組み立て







2) 回路基板の回路とハウジングの製造


彼は素早く設計することを学び、多くのCADプログラムを試しました。最も便利なのはEAGLEでした。 そして、 製造方法の 1つは、このトピックが好きな友人によって説明され、実証されました。 ファイル(brd、sch)









装置全体はコネクタ付きの別のユニットで作られているため、故障または近代化が発生した場合、制御モジュールまたは作業体を変更することができます。





はgetinaxのを作りました。 彼は不要なデバイスからコネクターを引きちぎり、冷間溶接に接着しました。






3) プログラムを書く


コードはここに隠れています>>
int DS_Pin = 11; //pin 14 DS/SDI on the 75HC595   int ST_Pin = 8; //pin 12 ST_CP/RCLK on the 75HC595   int SH_Pin = 12; //pin 11 SH_CP/SRCLK on the 75HC595   const int PIR1 = 5;//  - const int PIR2 = 6;//  - int sensorPin = A0;//  // ****** int OverTime =15000; //      () const int N=14; //-  int Qck_tm = 300; //     int Wt_tm = 2000; //      int L=30; //    // ****** int a1,a2; //     long pM=0; //  millis() long pM1=0; //  millis() long pM10=0; //  millis() unsigned int sensorValue = 0; //    int registers[N+1]; //   boolean b2=false; //     boolean b3=false; //       void setup(){ pinMode(PIR1, INPUT); pinMode(PIR2, INPUT); pinMode(DS_Pin, OUTPUT); pinMode(ST_Pin, OUTPUT); pinMode(SH_Pin, OUTPUT); Serial.begin(9600); clearRegisters(); writeRegisters(); } //    void clearRegisters(){ for(int i = N; i >= 0; i--){ registers[i] = LOW; } } //  void writeRegisters(){ digitalWrite(ST_Pin, LOW); for(int i = N; i >= 0; i--){ digitalWrite(SH_Pin, LOW); int val = registers[i]; digitalWrite(DS_Pin, val); digitalWrite(SH_Pin, HIGH); } digitalWrite(ST_Pin, HIGH); } //     void setRegister(int index, int value){ registers[index] = value; } //   void LightON(boolean a){ b2=true; if(a) for (int k=0;k<=N;) { a1=digitalRead(PIR1); if ( a1==HIGH && millis() - pM1 > 1000) { pM1 = millis(); } if (millis() - pM > Qck_tm) { pM = millis(); setRegister(k, HIGH); writeRegisters(); k++; } } else for (int k=N;k>=0;) { a2=digitalRead(PIR2); if ( a2 == HIGH && millis() - pM1 > 1000) { pM1 = millis(); } if (millis() - pM > Qck_tm) { pM = millis(); setRegister(k, HIGH); writeRegisters(); k--; } } } //   void LightOFF(boolean a){ b2=false; if(a){ int k=0; while(k<=N) { a1=digitalRead(PIR1); if (a1== HIGH){ LightON(true); break; } if (millis() - pM > Qck_tm){ pM = millis(); setRegister(k, LOW); writeRegisters(); k++; }}} else { int k=N; while(k>=0) { a2=digitalRead(PIR2); if (a2 == HIGH){ LightON(false); break; } if (millis() - pM > Qck_tm){ pM = millis(); setRegister(k, LOW); writeRegisters(); k--; }}} } void loop(){ sensorValue = analogRead(sensorPin); //     Serial.println(sensorValue, DEC); if (sensorValue < L){ a1=digitalRead(PIR1); if ( a1 == HIGH && a2== LOW)//     { pM=millis(); LightON(true); while (b2) { a2=digitalRead(PIR2); if (a2 == HIGH && millis() - pM10 > 1000 || (millis() - pM > OverTime)) { pM10 = millis(); LightOFF(true); }}} a2=digitalRead(PIR2); if (a2 == HIGH && a1 == LOW) { pM=millis(); LightON(false); while (b2) { a1=digitalRead(PIR1); if (a1== HIGH && millis() - pM10 > 1000 || (millis() - pM > OverTime)) { pM10 = millis(); LightOFF(false); }}}}}
      
      





アクセスラダーがなかったので、マイクロバルブのモデルで実験しなければなりませんでしたが、残念ながら彼女は記事を書く段階まで生きていませんでした。



4) 階段に設置する


最も時間のかかる退屈な作業段階であるため 、40mのケーブルを敷設し、約80本の導体をはんだ付けする必要がありました。

階段の下に置かれた制御機器。





ケーブルチャンネルのワイヤが取り外されています。

センサーは上下の最初のステップの下に隠れており、それらの配置は実験的であり、主なタスクは、無駄に階段をオンにしないように視野角を制限することです。

階段の中央にフォトトランジスタが設置されていますが、最悪の場合は光のある場所であるため、曇天では階段は正常に機能します。

LEDストリップは 、階段の後ろに接着されているため、登るときに目に当たらないようになっています。 テープは異なる会社とIPのものであったため、私はステップを介してそれらを交互にしなければなりませんでした。





すべての機器を完全に設置するのに3日かかりましたが、まだ設計上の欠陥があります:




5) コストを計算する






***ビデオ***












6) 結論:


それは私が想像したよりもさらに良くなった。 一般に、プロジェクトは無期限にファイナライズできますが、ベータバージョンの段階では、プロジェクトは安定して確実に動作します。

当然、この装置はアメリカを開くものではありませんが、頭からのアイデアが光の中に生まれ、機能し始めたとき、確かにクールです。 皆さんの幸運と尽きることのない創造的なインスピレーション!


7) プロジェクトを今すぐ開始した場合、異なる方法でそれを行うには?





All Articles