Ардуинщики всех стран - объединяйтесь! В этом форуме, конечно.
Ответить

АС voltmeter na Arduino и NOKIA 5110

Пн мар 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.

Заранее спасибо.

Re: АС voltmeter na Arduino и NOKIA 5110

Пн мар 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 вольт
Ответить