ich derzeit an einem Projekt arbeitete mit einem Metronom mit Arduino, Partikel Photon zu bauen, und ein basisches Elektrotechnik eingerichtet.Q: Mit analogRead von einem Potentiometer
für dieses Projekt Mein Ziel ist es durch das Einstellen/Drehen des Potentiometers und Anzeige der aktuelle BPM off einen OLED-Bildschirm, um es einfach zu justieren, das Tempo zu machen. Das Problem ist jedoch, dass wenn ich das Potentiometer drehe, es den Wert des Tempos durch nichts ändert. Das weiß ich, weil der Summer nicht piept und die OLED liest, dass der aktuelle 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();
}
ist Jedes Mal, wenn ich das Programm auf meinem Steckbrett/Photon blinken, zeigt das OLED immer, dass bpm
-0 gleich ist. .. Auch wenn ich es einstelle. Ich bin mir ziemlich sicher, dass mit der Elektronik nichts falsch ist, da ich alles separat getestet habe.
Versuchen, um die Multiplikation vor der Teilung auszuführen: 'int bpm = (analogRead (potenMeter) * 180)/4095;' –
Was @EttoreBarattelli sagt, ist richtig . Es gibt auch andere Dinge, die Sie vielleicht korrigieren möchten. Welchen Arduino verwendest du? – dubafek
stimme ich auch mit Ettore, zusätzlich: die Arduinos I khow bieten nur 10-Bit-ADC, eine Reihe von 1024 Werte (0 .. 1023). Also würde ich * 180UL/1024 berechnen. – datafiddler