Powermeasurement
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using Phidgets;
|
||||
using System.Threading;
|
||||
|
||||
namespace ebbits.Robots {
|
||||
public abstract class AbstractRobot {
|
||||
protected AdvancedServo servo;
|
||||
protected int cservos;
|
||||
protected string name;
|
||||
private Thread t;
|
||||
protected void init(int id) {
|
||||
servo = new AdvancedServo();
|
||||
servo.open(id);
|
||||
Logger.Info("Waiting for Servo \"" + id + "\" is attached");
|
||||
servo.waitForAttachment();
|
||||
if(!servo.Attached) { throw new AccessViolationException("Robot not Found"); }
|
||||
}
|
||||
public abstract void run();
|
||||
protected void setPosition(int[] pos, int speed) {
|
||||
for(int i = 0; i < cservos; i++) {
|
||||
if(pos[i] != -1) {
|
||||
AdvancedServoServo s = servo.servos[i+ 5 - cservos];
|
||||
s.Acceleration = speed;
|
||||
s.Position = pos[i];
|
||||
}
|
||||
}
|
||||
|
||||
bool waiting = true;
|
||||
while(waiting) {
|
||||
waiting = false;
|
||||
for(int i = 0; i < cservos; i++) {
|
||||
if(pos[i] != -1) {
|
||||
AdvancedServoServo s = servo.servos[i + 5 - cservos];
|
||||
s.Position = pos[i];
|
||||
try {
|
||||
if(Math.Abs(s.Position - pos[i]) > 0.01) {
|
||||
waiting = true;
|
||||
}
|
||||
} catch(PhidgetException) {
|
||||
Logger.Warn("Exeption!");
|
||||
s.Position = pos[i];
|
||||
}
|
||||
Thread.Sleep(10);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
protected void setStartPosition(int[] positions, int sleep) {
|
||||
for(int i = 0; i < cservos; i++) {
|
||||
AdvancedServoServo s = servo.servos[i + 5 - cservos];
|
||||
s.Type = ServoServo.ServoType.TOWERPRO_MG90;
|
||||
s.Acceleration = 10000;
|
||||
s.VelocityLimit = 200;
|
||||
s.Position = positions[i];
|
||||
s.Engaged = true;
|
||||
}
|
||||
Thread.Sleep(sleep);
|
||||
}
|
||||
protected void shutdownServo() {
|
||||
for(int i = 0; i < cservos; i++) {
|
||||
servo.servos[i + 5 - cservos].Engaged = false;
|
||||
}
|
||||
if(t.IsAlive) {
|
||||
t.Abort();
|
||||
}
|
||||
}
|
||||
|
||||
protected void startPowerMess() {
|
||||
this.t = new System.Threading.Thread(current_runnter);
|
||||
t.Start();
|
||||
}
|
||||
|
||||
private void current_runnter(object obj) {
|
||||
DateTime t = DateTime.Now;
|
||||
double current = 0;
|
||||
while(true) {
|
||||
double c = 0;
|
||||
for(int i = 0; i < 5; i++) {
|
||||
c += this.servo.servos[0].Current;
|
||||
}
|
||||
current += (c * 12 * (DateTime.Now.Ticks - t.Ticks)) / 1000000;
|
||||
t = DateTime.Now;
|
||||
Logger.Info(this.name+" Watt: " + current.ToString());
|
||||
System.Threading.Thread.Sleep(100);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace ebbits.Robots {
|
||||
class GlassBot : AbstractRobot {
|
||||
public GlassBot(int id) {
|
||||
init(id);
|
||||
this.cservos = 5;
|
||||
base.name = "Glas";
|
||||
}
|
||||
public override void run() {
|
||||
base.startPowerMess();
|
||||
setStartPosition(new int[] { 20, 68, 175, 175, 20 }, 500);
|
||||
|
||||
setPosition(new int[] { 20, 68, 160, 162, 20 }, 400);
|
||||
setPosition(new int[] { -1, 154, 88, 88, -1 }, 400);
|
||||
setPosition(new int[] { -1, -1, 86, 116, 42 }, 200);
|
||||
setPosition(new int[] { -1, -1, 77, -1, 48 }, 50);
|
||||
setPosition(new int[] { 160, -1, -1, -1, -1 }, 200);
|
||||
setPosition(new int[] { -1, -1, 85, -1, -1 }, 20);
|
||||
setPosition(new int[] { -1, -1, -1, 106, -1 }, 200);
|
||||
setPosition(new int[] { -1, -1, 118, 122, 174 }, 200);
|
||||
|
||||
setPosition(new int[] { -1, 13, -1, -1, -1 }, 300);
|
||||
setPosition(new int[] { -1, -1, 90, 100, 20 }, 200);
|
||||
|
||||
setPosition(new int[] { -1, -1, 82, 97, 25 }, 20); // Fine Settings
|
||||
System.Threading.Thread.Sleep(1000);
|
||||
setPosition(new int[] { -1, -1, 90, 90, 20 }, 20); // Fine Lift
|
||||
|
||||
setPosition(new int[] { -1, -1, 103, 105, 80 }, 150);
|
||||
setPosition(new int[] { -1, -1, -1, -1, 174 }, 300);
|
||||
setPosition(new int[] { -1, 154, 118, 122, -1 }, 300);
|
||||
setPosition(new int[] { -1, -1, 86, 102, 42 }, 300);
|
||||
setPosition(new int[] { -1, -1, 81, 113, 48 }, 100);
|
||||
setPosition(new int[] { -1, -1, -1, 117, -1 }, 20);
|
||||
setPosition(new int[] { 20, -1, 78, -1, -1 }, 150);
|
||||
setPosition(new int[] { -1, -1, 81, 111, -1 }, 20);
|
||||
setPosition(new int[] { -1, -1, 90, -1, -1 }, 100);
|
||||
|
||||
setPosition(new int[] { 20, 68, 160, 162, 20 }, 400);
|
||||
setPosition(new int[] { 20, 68, 175, 175, 20 }, 400);
|
||||
|
||||
shutdownServo();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using ebbits.Arduino;
|
||||
|
||||
namespace ebbits.Robots {
|
||||
class LaserBot : AbstractRobot {
|
||||
private Arduino.MainArduino Arduino;
|
||||
public LaserBot(int id, MainArduino a) {
|
||||
init(id);
|
||||
base.cservos = 4;
|
||||
this.Arduino = a;
|
||||
base.name = "Laser";
|
||||
}
|
||||
|
||||
override public void run() {
|
||||
base.startPowerMess();
|
||||
|
||||
base.setStartPosition(new int[] {77, 175, 155, 84 }, 500);
|
||||
|
||||
base.setPosition(new int[] { 77, 157, 134, 84 }, 400);
|
||||
base.setPosition(new int[] { 83, 97, 116, 44 }, 200);
|
||||
Arduino.setLaser(MainArduino.ON);
|
||||
base.setPosition(new int[] { 102, 90, 108, 42 }, 20);
|
||||
base.setPosition(new int[] { 98, 79, 90, 48 }, 20);
|
||||
base.setPosition(new int[] { 83, 82, 95, -1 }, 20);
|
||||
base.setPosition(new int[] { 83, 97, 116, 44 }, 20);
|
||||
Arduino.setLaser(MainArduino.OFF);
|
||||
base.setPosition(new int[] { 77, 157, 134, 84 }, 400);
|
||||
base.setPosition(new int[] { 77, 175, 155, 84 }, 400);
|
||||
|
||||
base.shutdownServo();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using ebbits.Arduino;
|
||||
|
||||
namespace ebbits.Robots {
|
||||
class PaintBot : AbstractRobot {
|
||||
private MainArduino Arduino;
|
||||
public PaintBot(int id, MainArduino a) {
|
||||
init(id);
|
||||
this.cservos = 4;
|
||||
this.Arduino = a;
|
||||
base.name = "Paint";
|
||||
}
|
||||
public override void run() {
|
||||
base.startPowerMess();
|
||||
setStartPosition(new int[] {87, 175, 160, 92 }, 500);
|
||||
|
||||
setPosition(new int[] {87, 153, 138, 92 }, 400);
|
||||
setPosition(new int[] {44, 111, 161, 63 }, 200);
|
||||
Arduino.setColor(MainArduino.RED);
|
||||
setPosition(new int[] {90, -1, -1, -1 }, 50);
|
||||
Arduino.setColor(MainArduino.OFF);
|
||||
setPosition(new int[] {-1, 140, -1, -1 }, 200);
|
||||
setPosition(new int[] {-1, 71, 55, 110 }, 200);
|
||||
setPosition(new int[] {-1, 43, 42, 175 }, 200);
|
||||
Arduino.setColor(MainArduino.RED);
|
||||
setPosition(new int[] {60, 33, 22, -1 }, 50);
|
||||
Arduino.setColor(MainArduino.OFF);
|
||||
setPosition(new int[] {-1, 63, 45, 150 }, 200);
|
||||
setPosition(new int[] {50, 68, 76, 132 }, 200);
|
||||
Arduino.setColor(MainArduino.WHITE);
|
||||
setPosition(new int[] {-1, -1, -1, 160 }, 100);
|
||||
setPosition(new int[] {60, -1, -1, 172 }, 100);
|
||||
setPosition(new int[] {-1, -1, -1, 144 }, 100);
|
||||
setPosition(new int[] {70, -1, -1, 150 }, 100);
|
||||
setPosition(new int[] {-1, -1, -1, 175 }, 100);
|
||||
setPosition(new int[] {80, -1, -1, -1 }, 100);
|
||||
setPosition(new int[] {-1, -1, -1, 155 }, 100);
|
||||
setPosition(new int[] {90, 74, 84, 148 }, 100);
|
||||
setPosition(new int[] {-1, -1, -1, 175 }, 100);
|
||||
setPosition(new int[] {100, -1, -1, 166 }, 100);
|
||||
setPosition(new int[] {-1, -1, -1, 146 }, 100);
|
||||
Arduino.setColor(MainArduino.OFF);
|
||||
setPosition(new int[] { -1, -1, 100, -1, -1 }, 200);
|
||||
setPosition(new int[] { 0, 87, 175, 160, 92 }, 400);
|
||||
|
||||
shutdownServo();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user