/*
This file is part of JOP, the Java Optimized Processor
see <http://www.jopdesign.com/>
Copyright (C) 2007, Peter Hilber and Alexander Dejaco
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package lego;
import lego.lib.*;
import java.io.*;
import joprt.RtThread;
/*
* Typical deviations @ full speed
* 450 450 450 452 450 553 ~450
* 300 440 360 405 339 290 160-467
*
* Deviations | Avg @ 0 speed
* 3500
* 3500
*
* Deviations | Avg @ full speed
* 4500
* 3600-4250
*
* Longer buffer:
*
* Deviations | Avg @ 1 speed (bug w/ 0)
* 0 -16
* 4801
*
* Deviations | Avg @ full speed
* 0 -6
* 0 -6
*/
public class BackEMFAvgDeviation
{
/**
* @param args
*/
public static void main(String[] args) throws IOException
{
while (true)
{
System.out.println("Starting...");
Motor m0 = new Motor(0);
m0.setMotorPercentage(Motor.STATE_FORWARD, true, 1);
RtThread.busyWait(10000 * 1000);
final int VALUE_COUNT = 1000;
int[][] values = new int[VALUE_COUNT][2];
for (int i = 0; i < VALUE_COUNT; i++)
{
RtThread.busyWait(10000);
values[i] = m0.readNormalizedBackEMF();
}
int avg[] = new int[] {0,0};
for (int i = 0; i < VALUE_COUNT; i++)
for (int j = 0; j < 2; j++)
avg[j] += values[i][j];
for (int j = 0; j < 2; j++)
avg[j] /= VALUE_COUNT;
int dev[] = new int[] {0,0};
for (int i = 0; i < VALUE_COUNT; i++)
for (int j = 0; j < 2; j++)
dev[j] += Math.abs(values[i][j] - avg[j]);
for (int j = 0; j < 2; j++)
System.out.println("Sum of deviations: " + dev[j] + " Avg: " + avg[j]);
m0.setState(Motor.STATE_OFF);
}
}
}