Господа. Суть такая. Значит имеется I2C дисплей, аккум на 3.7 вольта от сотового на 2900 и зарядка от повер банка (такая простятская китайская) на аккум 18650 (по моему на мини ЮСБ). Так вот скетч #include <SPI.h> #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define OLED_RESET 4 Adafruit_SSD1306 display(OLED_RESET); void setup() { // initialize serial communication at 9600 bits per second: display.begin(SSD1306_SWITCHCAPVCC, 0x3C); display.clearDisplay(); } // the loop routine runs over and over again forever: void loop() { // read the input on analog pin 0: display.setCursor(55,10); display.setTextSize(3); display.clearDisplay(); display.setTextColor(WHITE); int sensorValue = analogRead(A0); // Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V): float voltage = sensorValue * (5.0 / 1023.0); // print out the value you read: display.println(voltage); display.setCursor(0,0); display.setTextSize(1); display.println("VOLTMETER_BANK"); display.display(); } проблема такая: LCD кажет на выходе 5 вольт ровно, а на A0 надо подавать напряжение для того что бы LCD показывал напряжение. Тестором тукаю во всех точках не более 3.7 вольт. Какого Хуанхе? What in mistik? Дополню отзыв: Подключил напряжение с внешнего источника питания - всё измеряет.
// Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V): float voltage = sensorValue * (5.0 / 1023.0); Если ардуино включена от аккум на 3.7 вольта, то нужно исправить напряжение в формуле
Нет, немного не так, Извините! Питание ардуино от 5V? На схеме контакт измерения A0 подключен по схеме монтажного “И” т.е пока ключ VCC не замкнут, то замыкание ключа out+ не имеет значения, а при замыкании ключа VCC на контакт измерения A0 поступает напряжение питания arduino, тогда при замыкании ключа out+ и меньшего напряжения на контакт A0 будет напряжение питания arduino.
Питание контроллера идет от 3.7 - 4.3 вольта (аккумулятор). ТО есть из OUT выходит плавающее напряжение. Откуда 5 вольт так и не понял. Я делаю POWER BANK и хочу видеть остаток напряжения на аккуме.
Хотите измерять напряжение от которого сама питается ардуино? http://mk90.blogspot.com/2009/06/vcc.html
В верхней строке напряжение ардуино. В нижней строке напряжение на пин A0 Измеряемое напряжение на пин A0 не может быть больше, чем питание ардуино Код (C++): #include <SPI.h> #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define OLED_RESET 4 Adafruit_SSD1306 display(OLED_RESET); void setup() { display.begin(SSD1306_SWITCHCAPVCC, 0x3C); display.display(); } long readpowerVcc() { ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1); delay(50); ADCSRA |= _BV(ADSC); while (bit_is_set(ADCSRA, ADSC)); uint8_t low = ADCL; uint8_t high = ADCH; long result = (high << 8) | low; result = 1125300L / result; return result; } void loop() { float powerVCC; // read the power on VCC powerVCC = readpowerVcc(); powerVCC *= 0.001; // read the input on analog pin 0: int sensorValue = analogRead(A0); // Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - VCC): float voltage = sensorValue * (powerVCC / 1023.0); display.clearDisplay(); display.setTextColor(WHITE); display.setCursor(35, 10); display.setTextSize(3); display.println(powerVCC); display.setCursor(35, 40); display.setTextSize(3); display.println(voltage); display.display(); }