Відповісти

Введіть повідомлення і натисніть Надіслати
Параметри

Назад

Огляд теми (нові повідомленні вгорі)

Anastasiia
2018-06-06 17:00:57

Здравствуйте. Я хочу измерить ВАХ на батарейке и построить график с помощью ардуино уно.

Нашла программы, которые написал человек, чтобы построить ВАХ подключив к ардуино солнечную батарею. Попробовала применить эти программы в моем варианте - работает. Но, непонятно как... Когда включен монитор порта результаты выдает, вроде все хорошо. Но оно выдает результаты даже в том случае, когда к входу А1, который указан в коде, ничего не подключено.

График должен строиться в программе processing 3.3.7, но там открывается только пустое окно (с осями, но без графика).
Кто знает, что может быть не так и как можно эту программу адаптировать к обычной батарейке? С программированием очень тяжело, на данный момент. Буду рада помощи.

Программа для ардуино:

#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:

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);
   
}

Підвал форуму