工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

Arduinoアナログパネルメータークロック

コンポーネントと消耗品

>
Arduino Nano R3
× 1
Maxim Integrated DS3231M-±5ppm、I2Cリアルタイムクロック
× 1
1mAアンペアメーター
× 3
5kOhm抵抗
× 3
抵抗10kオーム
× 2
SparkFunプッシュボタンスイッチ12mm
× 2

アプリとオンラインサービス

>
Arduino IDE

このプロジェクトについて

ArduinoNanoと1mAの電流計を使ってこの見栄えの良い木製のアナログスタイルの時計を作りました。ここからアイデアが浮かびました。秒を表示するために、コードの一部が追加されています。また、実行時にゼロから最大までのスケール全体を通過する部分も追加されます。校正目的の値。使用するアンペアメーターに応じて、5k抵抗の値は異なる場合があります。すべてのメーターがわずかに異なるため、PWM値は設計に基づいて調整する必要があります。特に私のメーターで動作するように設定されているため、いくつかの値を変更する必要があります。

コード

  • コード
コード Arduino
 / *アナログパネルメーター-クロックのみのモードInstructablesリンク:http://www.instructables.com/id/Analog-VU-meter-and-Clock-Arduino-Powered/クレジット:bildr-DS1307 RTCコードhttp: //bildr.org/2011/03/ds1307-arduino/ _____________________配線は次のようになります:-USB赤線(5v)からVCC-USB黒線からGND-ボタン-左/下からデジタル2(arduinoチュートリアルに従ってください:http ://arduino.cc/en/uploads/Tutorial/button.png)-右/デジタル3まで-DS1307 RTC-SDAからアナログ4-SCLからアナログ5-左アナログメーターからデジタル5(PWM)-右アナログMeter to Digital 6(PWM)_- Seconds Analog Meter to Digital 9_(PWM)_____________________注:すべてのメーターはわずかに異なるため、PWM値は設計に基づいて調整する必要があります。私のコードを自由に使用してください。ただし、私のメーターで特に機能するように設定されているため、いくつかの値を変更する必要があります。 * /#include "Wire.h" #define DS1307_ADDRESS 0x68byte zero =0x00; //問題#527の回避策int downButton =2; //プッシュボタンを押し下げて時間を調整します(ピン2)int upButton =3; //プッシュボタンを押して時間を調整します(ピン3)int hours =0; int minutes =0; int seconds =0; int lastMinute =0; int lastSecond =0; int leftMeter =5; //左のメーター(時間)はピン5に接続されていますint rightMeter =6; //右メーター(分)はピン6に接続されていますint secMeter =9; //秒メーター(秒)はピン9に接続されていますvoid setup(){Wire.begin(); Serial.begin(9600); //シリアルモニターで時間を表示pinMode(leftMeter、OUTPUT); //出力と入力を初期化しますpinMode(rightMeter、OUTPUT); pinMode(secMeter、OUTPUT); digitalWrite(leftMeter、HIGH); //起動時にメーターをテストしますdigitalWrite(rightMeter、HIGH); digitalWrite(secMeter、HIGH); digitalWrite(13、HIGH);遅延(1000); digitalWrite(leftMeter、LOW); digitalWrite(rightMeter、LOW); digitalWrite(secMeter、LOW); digitalWrite(13、LOW); delay(1000);} void loop(){printDate(); delay(75); //ボタンで時間を変更するif(digitalRead(downButton)==HIGH){byte second =seconds; //混乱しないでください:秒は秒と同じではありませんバイト分=分; //混乱しないでください:分は分と同じではありませんbyte hour =hours; //混乱しないでください:hourはhoursif(minutes> 0){-minute;と同じではありません} else {分=59; if(hours> 0){-時間; } else {hour =23;}} Wire.beginTransmission(DS1307_ADDRESS); Wire.write(ゼロ); //オシレーターを停止しますWire.write(decToBcd(second)); Wire.write(decToBcd(minute)); Wire.write(decToBcd(hour)); Wire.write(ゼロ); // Wire.endTransmission();}を開始しますif(digitalRead(upButton)==HIGH){byte second =0;バイト分=分; //混乱しないでください:分は分と同じではありませんbyte hour =hours; //混乱しないでください:時間はhoursif(minutes <59){++ minute;と同じではありません} else {分=0; if(hours <23){++ hour; } else {hour =0;}} Wire.beginTransmission(DS1307_ADDRESS); Wire.write(ゼロ); //オシレーターを停止しますWire.write(decToBcd(second)); Wire.write(decToBcd(minute)); Wire.write(decToBcd(hour)); Wire.write(ゼロ); // start Wire.endTransmission();}} byte decToBcd(byte val){//通常の10進数を2進化10進数に変換return((val / 10 * 16)+(val%10));} byte bcdToDec(byte val){// 2進化10進数を通常の10進数に変換return((val / 16 * 10)+(val%16));} void printDate(){//レジスタポインタをリセットWire.beginTransmission(DS1307_ADDRESS); Wire.write(ゼロ); Wire.endTransmission(); Wire.requestFrom(DS1307_ADDRESS、7);秒=bcdToDec(Wire.read());分=bcdToDec(Wire.read());時間=bcdToDec(Wire.read()&0b111111); // 24時間制//日付を出力Serial.print(hours); //コメントを外してシリアルモニターで時間を表示Serial.print( ":"); // Serial.println(minutes); //上記の「voidsetup」の「Serial.begin」のコメントを外すことを忘れないでください// 1時間ごとの特定のメーターレベル//これらの値を調整する必要があります//取得するまで値を試してみてくださいあなたが欲しいもの。 if(lastMinute!=minutes){if(hours ==1 || hours ==13){analogWrite(leftMeter、0); //左(時間)メーターレベルを調整します} if(hours ==2 || hours ==14){analogWrite(leftMeter、29); //左(時間)メーターレベルを調整します} if(hours ==3 || hours ==15){analogWrite(leftMeter、52); //左(時間)メーターレベルを調整します} if(hours ==4 || hours ==16){analogWrite(leftMeter、75); //左(時間)メーターレベルを調整します} if(hours ==5 || hours ==17){analogWrite(leftMeter、98); //左(時間)メーターレベルを調整します} if(hours ==6 || hours ==18){analogWrite(leftMeter、130); //左(時間)メーターレベルを調整します} if(hours ==7 || hours ==19){analogWrite(leftMeter、152); //左(時間)メーターレベルを調整します} if(hours ==8 || hours ==20){analogWrite(leftMeter、172); //左(時間)メーターレベルを調整します} if(hours ==9 || hours ==21){analogWrite(leftMeter、192); //左(時間)メーターレベルを調整します} if(hours ==10 || hours ==22){analogWrite(leftMeter、213); //左(時間)メーターレベルを調整します} if(hours ==11 || hours ==23){analogWrite(leftMeter、234); //左(時間)メーターレベルを調整します} if(hours ==0 || hours ==12){analogWrite(leftMeter、255); //左(時間)メーターレベルを調整します} if(minutes * 4.75 <255){// PWM値を毎分4.75ずつ増やしますanalogWrite(rightMeter、minutes * 4.75); //メーターで4.75を使用して、正確に真上を指すように30分を取得する必要がありました} else {// 4.25 * 60 =255 analogWrite(rightMeter、255); } lastMinute =分; if(seconds * 4.25 <255){analogWrite(secMeter、seconds * 4.25); } else {analogWrite(secMeter、255); } lastSecond =秒; }} 

回路図


製造プロセス

  1. Arduinoハメ撮りビジョンクロック
  2. Simple Word Clock(Arduino)
  3. イスラムの祈りの時間とArduino時計
  4. マスタークロック
  5. 花-ArduinoNano、CrazyCircuits、DFRobot
  6. アナログスタイルのLEDPOVクロック
  7. FlightGearアナログトリムタブホイール
  8. Arduino Nano:ジョイスティックで2つのステッピングモーターを制御
  9. パネルメーターは設計を簡素化します
  10. デジタルとアナログのパネルの選択
  11. パネルメーターとは何ですか?