Ардуинщики всех стран - объединяйтесь! В этом форуме, конечно.
Пн мар 04, 2024 21:26:47
Добрый день! Понадобился регулятор переменки с вольтметром. С регулятором проблем нет, в вот вольтметр сделал на Ардуине и сначала на дисплее LCD1602, а затем и на НОКИА 5110. На 1602 все работает, на Нокиа выводит только заголовок, текущее напряжение не показывает. Прошу помочь в чем у меня проблема, какую команду в программе я не отразил.
Программа:
/* ЖК дисплей Nokia 5110 || RST CE DC DIn Clk Vcc BL Gnd
Ардуино (DIGITAL) || 7 6 5 4 3 +5V +5V GND */
//----------
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>
Adafruit_PCD8544 display = Adafruit_PCD8544(3, 4, 5, 6, 7);
void setup(void) {
display.begin();
display.clearDisplay();
display.display();
display.setContrast(50); // установка контраста
delay(1000);
display.setTextSize(1.9); // установка размера шрифта -->> 1.9 - MAX размер
display.setTextColor(BLACK); // установка цвета текста
display.setCursor(0,0); // установка позиции курсора
display.println("RMS Voltage:");
display.display();
analogReference(INTERNAL); // set ADC positive reference voltage to 1.1V (internal)
}
// get maximum reading value
uint16_t get_max() {
uint16_t max_v = 0;
for(uint8_t i = 0; i < 100; i++) {
uint16_t r = analogRead(A3); // read from analog channel 3 (A3)
if(max_v < r) max_v = r;
delayMicroseconds(200);
}
return max_v;
}
// main loop
void loop() {
char buf[10];
// get amplitude (maximum - or peak value)
uint32_t v = get_max();
// get actual voltage (ADC voltage reference = 1.1V)
v = v * 1100/1023;
// calculate the RMS value ( = peak/√2 )
v /= sqrt(2);
sprintf(buf, "%03u Volts", v);
display.setCursor(0, 1);
display.print(buf);
display.display();
delay(100);
}
// end of code.
Заранее спасибо.
Пн мар 11, 2024 21:59:49
конец скетча
topol72 писал(а):display.setCursor(0, 1);
display.print(buf);
display.display();
delay(100);
}
строку
display.setCursor(0, 1);
замените например на
display.setCursor(0, 10);
и будет вам счастье
да и питание дисплея лучше посадить на 3.3 вольта, а не на 5 вольт