現在、私はArduino、粒子光子、および基本的な電気工学のセットアップを使用してメトロノームを構築するプロジェクトに取り組んでいます。Q:ポテンショメーターからanalogReadを使用しています。
このプロジェクトの目標は、ポテンショメータの調整/回転とOLEDスクリーンからの現在のBPMの表示によって、テンポを調整することです。しかし、問題は、ポテンショメータを回転させると、何かによってテンポの値が変わることではないということです。ブザーが鳴っていないので、私はこのことを知っているし、OLEDは、私は私のブレッドボード/光子にプログラムをフラッシュするたびに、現在のBPMが0
// This #include statement was automatically added by the Particle IDE.
#include "SparkFunMicroOLED/SparkFunMicroOLED.h"
#define PIN_RESET D7
#define PIN_DC D6
#define PIN_CS A2
MicroOLED oled(MODE_SPI, PIN_RESET, PIN_DC, PIN_CS);
int speakerPin = D2;
int potenMeter = A4;
void setup() {
pinMode(speakerPin, OUTPUT);
pinMode(potenMeter, INPUT);
oled.begin();
oled.clear(ALL);
}
void loop() {
oled.clear(PAGE);
oled.setFontType(0);
oled.setCursor(20,0);
int bpm = (analogRead(potenMeter)/4095) * 180;
tone(speakerPin, 50, 100);
delay(bpm);
oled.printf("BPM: %d", bpm);
oled.display();
}
であることを読み込み、OLEDは常にbpm
が0に等しいことを表示します。 ..私はそれを調整しても。私は、すべてを別々にテストしたので、エレクトロニクスに何も問題はないと確信しています。
のようだ: 'int型BPM =(analogRead(potenMeter)* 180)/ 4095; @EttoreBarattelliが言っている何' –
は正しいです。また、訂正したいことがあるかもしれません。どのArduinoを使用していますか? – dubafek
私はまた、Ettoreに同意します。さらに、Arduinos私は10ビットのADC、1024の値の範囲(0 .. 1023)を提供します。だから私は* 180UL/1024を計算するだろう。 – datafiddler