Здравствуйте. Я хочу измерить ВАХ на батарейке и построить график с помощью ардуино уно. Нашла программы, которые написал человек, чтобы построить ВАХ подключив к ардуино солнечную батарею. Попробовала применить эти программы в моем варианте - работает. Но, непонятно как... Когда включен монитор порта результаты выдает, вроде все хорошо. Но оно выдает результаты даже в том случае, когда к входу А1, который указан в коде, ничего не подключено. График должен строиться в программе processing 3.3.7, но там открывается только пустое окно (с осями, но без графика). Кто знает, что может быть не так и как можно эту программу адаптировать к обычной батарейке? С программированием очень тяжело, на данный момент. Буду рада помощи. Программа для ардуино: Код (C++): #define axisY A1 int x=0; void setup() { pinMode(axisY, INPUT); Serial.begin(9600); } void loop() { int Y = analogRead(axisY); if(x<=1000) {x=x+1;} else { x=1000; } int B=15; Serial.print(Y); Serial.print(","); Serial.print(x); Serial.print(","); Serial.print(B); delay(100); } Программа для processing: Код (C++): import processing.serial.*; Serial myPort; float xn,yn,yk,xk; int reset, axisX, axisY; void setup() { size(1000,500); stroke(255,0,0); line (0, height/2, width, height/2); line(0,499,0,0); line(0,499,1000,499); line(999,499,999,0); line(0,0,999,0); line(500,499,500,0); stroke (255,250,100); line(100,499,100,0); line(200,499,200,0); line(300,499,300,0); line(400,499,400,0); line(600,499,600,0); line(700,499,700,0); line(800,499,800,0); line(900,499,900,0); line(0,200,1000,200); line(0,100,1000,100); line(0,300,1000,300); line(0,400,1000,400); println(Serial.list()); String portName = Serial.list()[0]; myPort = new Serial(this, portName, 9600); myPort.bufferUntil('\n'); } void serialEvent(Serial myPort) { String inputString = myPort.readStringUntil('\n'); inputString = trim (inputString); int axises[] = int (split(inputString, ',')); if(axises.length == 3) { axisY = axises[0]; axisX = axises[1]; reset = axises[2]; } } void draw() { fill(#5fffff); noStroke(); rect (900,350,980,370); fill (255,0,0); text ("X="+axisX*0.005,910,380); text ("Y="+axisY*5.0/1024,910,420); text ("Z="+reset,910,460); text("0",3,490); text("0.5",110,490); text("1",210,490); text("1.5",310,490); text("2",410,490); text("2.5",510,490); text("3",610,490); text("3.5",710,490); text("4",810,490); text("4.5",910,490); text("1",3,390); text("2",3,290); text("3",3,190); text("4",3,90); fill(#5fffff); rect (400,5,200,20); fill (255,0,0); text("********* ГРАФИК F(x,y) *********", 410,20); float yn =500-(axisY*5.0/1024)*100; float xn =axisX; float xk =xn+2; float yk =yn+1; stroke (0); line (xn, yn, xk, yk); }
так и должно быть, когда к порту ничего не подключено, он выдает случайные значения. Покажите схему, как вы подключили батарейку к Ардуино
https://www.arduino.cc/reference/en/language/functions/analog-io/analogread/ - цитата оттуда: Вопросы? З.Ы. Нет, это бесполезно - никто никогда не читает доку. Куда катится мир...
на фото негры грузят уголь темной ночью - крайне мало видно... Насколько я понял, у вас просто батаейка подключена к порту. И какой график вы надеетесь так построить? В первом приближении должна получится прямая горизонтальная линия. У вас батарейке не подключено никакой нагрузки, а значит напряжение на ней практически постоянно... саморазряд занимает месяцы и даже годы и так вы его не заметите. Для замера ВАХ нужно подключить к батарейке заранее рассчитанную нагрузку и наблюдать процесс разряда батарейки.
угумс В таких случаях тренируются на кошках. Берётся конденсатор известной емкости (в первом приближении можно замерить тестером. Абсолютно все новые конденсаторы укладываются в свои 20%. Впрочем, китаяйский тестер даёт схожую погрешность), заряжается. Впоследствии снимается ВАХ с разряда конденсатора. И не надо ждать, пока котята внуки подрастут. Потом делаются расчеты. Если расчеты не делаются, то к чему вся эта канитель?