自動サンシェードV2を備えたバス停の建築モデル
コンポーネントと消耗品
> |
| × | 1 | |||
| × | 1 | ||||
| × | 2 | ||||
| × | 1 | ||||
| × | 6 | ||||
| × | 3 | ||||
| × | 1 | ||||
| × | 27 | ||||
| × | 2 | ||||
| × | 2 | ||||
| × | 1 | ||||
| × | 1 |
このプロジェクトについて
これは前のプロジェクト(V 1.0)のアップグレードです
V1.0からの主な変更点は次のとおりです。
- 建築モデルのサイズ。サイズは1.5mx1mです
- サンシェードの重量、それがSG99マイクロサーボをMG995に変更する理由です
- MG995が機能するように、外部電源を追加しました
- サンシェードを伸縮させるための2つの異なるメカニズムを試しました。廃棄されたものは、2番目のビデオに示されています。最後に使用したものを3番目に示します。ビデオ。
- VarSpeedServoライブラリを使用するようにスケッチを変更します
- サンシェード状態の1つでの小さな論理エラーを修正しました(Gurneet1928に感謝)
V1.0は、次のリンクにあります。モデルバージョン1.0
<コード> 動画:
回路の作成
建築モデルの作成
コード
- コード
コード C / C ++
#includeVarSpeedServoサーボ; inteasternLight =0; int WesternLight =0; int rainSensed =0; int sunshadePosition =0; int rainThreshold =512; int sunshadeExpanded =120; int sunshadeContracted =60; intambientLighting =0; int turnOnLightsOn =150; int ledIntensity =0; int ledPower =0; intservoSpeed =20; booldebugging =false; // TRUEに設定すると、シリアルコンソールへのデバッグが有効になりますvoid setup(){pinMode(A4、OUTPUT); //バス停の室内照明pinMode(A5、OUTPUT); //街路灯pinMode(A1、INPUT); //ウエスタンライトpinMode(A2、INPUT); //イースタンライトpinMode(A3、INPUT); //レインセンサーアナログpinMode(2、INPUT); //レインセンサーデジタルservo.attach(A0); //サーボservo.write(sunshadeContracted、servoSpeed、true); if(デバッグ){Serial.begin(9600); Serial.println( "***デバッグ開始***"); Serial.println( "-------------------------"); }} void oya_mydebug(String text、int value =NULL){//外部ライブラリが持つ可能性のあるデバッグ機能でクラッシュを回避する方法として//「oya_」を追加しました。 Oyaは、私の会社のOfficeYAの名前の省略形です。if(debugging){Serial.print(text); if(value){Serial.print( "="); Serial.println(value); } else {Serial.println( ""); }}} void Expand_collapse(int easternLight、int WesternLight){if(easternLight <=WesternLight){//日の出ですoya_mydebug( "日の出です"); if(sunshadePosition!=sunshadeExpanded){servo.write(sunshadeExpanded、servoSpeed、true); oya_mydebug( "サンシェード拡張"); }} if(easternLight> WesternLight){//ダウンしていますoya_mydebug( "Sun is goind down"); if(sunshadePosition!=sunshadeContracted){servo.write(sunshadeContracted、servoSpeed、true); oya_mydebug( "Sunshade Contracted"); }}} void loop(){//センサー値を取得easternLight =analogRead(A2); WesternLight =analogRead(A1); rainSensed =analogRead(A3); sunshadePosition =servo.read(); AmbientLighting =((easternLight + WesternLight)/ 2); //東と西の明るさを平均しますoya_mydebug( "easternLight"、easternLight); oya_mydebug( "westernLight"、westernLight); oya_mydebug( "rainSensed"、rainSensed); oya_mydebug( "sunshadePosition"、sunshadePosition); oya_mydebug( "ambientLighting"、ambientLighting); //雨が降っているかどうか調べますか? if(rainSensed
回路図
製造プロセス