Piece off homing code into its own script.
This commit is contained in:
parent
cf1514f53e
commit
0cf147d185
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"version": "1.8.50",
|
||||
"version": "1.8.51",
|
||||
"ext_port": 1111,
|
||||
"profiles": {
|
||||
"mcopy": {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "mcopy-app",
|
||||
"version": "1.8.50",
|
||||
"version": "1.8.51",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "mcopy-app",
|
||||
"version": "1.8.50",
|
||||
"version": "1.8.51",
|
||||
"description": "GUI for the mcopy small gauge film optical printer platform",
|
||||
"main": "main.js",
|
||||
"scripts": {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"version": "1.8.50",
|
||||
"version": "1.8.51",
|
||||
"ext_port": 1111,
|
||||
"profiles": {
|
||||
"mcopy": {
|
||||
|
|
|
@ -0,0 +1,200 @@
|
|||
0, 0, 0
|
||||
1, 1, 0
|
||||
2, 0, 0
|
||||
3, 0, 0
|
||||
4, 0, 0
|
||||
5, 0, 0
|
||||
6, 0, 2
|
||||
7, 0, 0
|
||||
8, 0, 0
|
||||
9, 2, 0
|
||||
10, 0, 0
|
||||
11, 0, 0
|
||||
12, 0, 0
|
||||
13, 13, 0
|
||||
14, 51, 0
|
||||
15, 60, 0
|
||||
16, 198, 0
|
||||
17, 354, 0
|
||||
18, 276, 0
|
||||
19, 300, 0
|
||||
20, 155, 0
|
||||
21, 492, 0
|
||||
22, 497, 0
|
||||
23, 47, 0
|
||||
24, 118, 0
|
||||
25, 9, 0
|
||||
26, 29, 0
|
||||
27, 3, 0
|
||||
28, 2, 0
|
||||
29, 0, 0
|
||||
30, 0, 0
|
||||
31, 0, 0
|
||||
32, 0, 0
|
||||
33, 0, 0
|
||||
34, 0, 0
|
||||
35, 0, 0
|
||||
36, 0, 0
|
||||
37, 0, 0
|
||||
38, 0, 0
|
||||
39, 0, 1
|
||||
40, 0, 0
|
||||
41, 0, 0
|
||||
42, 0, 0
|
||||
43, 0, 0
|
||||
44, 0, 0
|
||||
45, 0, 0
|
||||
46, 0, 0
|
||||
47, 0, 0
|
||||
48, 0, 0
|
||||
49, 0, 0
|
||||
50, 0, 0
|
||||
51, 0, 0
|
||||
52, 0, 0
|
||||
53, 0, 0
|
||||
54, 0, 0
|
||||
55, 0, 0
|
||||
56, 0, 0
|
||||
57, 0, 0
|
||||
58, 0, 0
|
||||
59, 0, 0
|
||||
60, 0, 0
|
||||
61, 0, 0
|
||||
62, 0, 0
|
||||
63, 0, 0
|
||||
64, 0, 0
|
||||
65, 0, 0
|
||||
66, 0, 0
|
||||
67, 0, 0
|
||||
68, 0, 0
|
||||
69, 0, 0
|
||||
70, 0, 0
|
||||
71, 0, 0
|
||||
72, 0, 0
|
||||
73, 0, 0
|
||||
74, 0, 0
|
||||
75, 0, 0
|
||||
76, 0, 0
|
||||
77, 0, 0
|
||||
78, 0, 0
|
||||
79, 0, 0
|
||||
80, 0, 0
|
||||
81, 0, 0
|
||||
82, 2, 0
|
||||
83, 0, 0
|
||||
84, 0, 0
|
||||
85, 1, 0
|
||||
86, 0, 0
|
||||
87, 0, 0
|
||||
88, 0, 0
|
||||
89, 0, 0
|
||||
90, 0, 0
|
||||
91, 0, 0
|
||||
92, 0, 0
|
||||
93, 0, 2
|
||||
94, 0, 0
|
||||
95, 0, 0
|
||||
96, 0, 0
|
||||
97, 0, 0
|
||||
98, 0, 0
|
||||
99, 0, 0
|
||||
100, 0, 0
|
||||
101, 0, 0
|
||||
102, 0, 0
|
||||
103, 0, 0
|
||||
104, 0, 0
|
||||
105, 0, 0
|
||||
106, 0, 0
|
||||
107, 0, 1
|
||||
108, 0, 0
|
||||
109, 0, 0
|
||||
110, 0, 0
|
||||
111, 0, 0
|
||||
112, 0, 0
|
||||
113, 0, 0
|
||||
114, 0, 0
|
||||
115, 0, 0
|
||||
116, 0, 0
|
||||
117, 0, 0
|
||||
118, 0, 0
|
||||
119, 0, 0
|
||||
120, 0, 0
|
||||
121, 0, 0
|
||||
122, 0, 0
|
||||
123, 0, 1
|
||||
124, 0, 0
|
||||
125, 1, 0
|
||||
126, 0, 0
|
||||
127, 0, 0
|
||||
128, 0, 0
|
||||
129, 0, 0
|
||||
130, 0, 0
|
||||
131, 0, 0
|
||||
132, 0, 0
|
||||
133, 0, 0
|
||||
134, 0, 0
|
||||
135, 0, 1
|
||||
136, 0, 0
|
||||
137, 0, 0
|
||||
138, 0, 0
|
||||
139, 0, 0
|
||||
140, 0, 0
|
||||
141, 0, 0
|
||||
142, 0, 0
|
||||
143, 0, 0
|
||||
144, 0, 0
|
||||
145, 0, 0
|
||||
146, 0, 0
|
||||
147, 0, 0
|
||||
148, 0, 0
|
||||
149, 0, 0
|
||||
150, 0, 0
|
||||
151, 0, 0
|
||||
152, 0, 0
|
||||
153, 0, 0
|
||||
154, 0, 0
|
||||
155, 0, 0
|
||||
156, 0, 0
|
||||
157, 1, 0
|
||||
158, 1, 0
|
||||
159, 0, 0
|
||||
160, 0, 0
|
||||
161, 0, 0
|
||||
162, 0, 0
|
||||
163, 0, 0
|
||||
164, 0, 0
|
||||
165, 0, 1
|
||||
166, 0, 0
|
||||
167, 0, 0
|
||||
168, 0, 0
|
||||
169, 0, 0
|
||||
170, 0, 0
|
||||
171, 0, 2
|
||||
172, 0, 1
|
||||
173, 0, 0
|
||||
174, 0, 0
|
||||
175, 0, 0
|
||||
176, 0, 0
|
||||
177, 0, 0
|
||||
178, 0, 0
|
||||
179, 0, 0
|
||||
180, 0, 0
|
||||
181, 0, 0
|
||||
182, 0, 4
|
||||
183, 0, 87
|
||||
184, 0, 360
|
||||
185, 0, 903
|
||||
186, 0, 262
|
||||
187, 0, 92
|
||||
188, 0, 122
|
||||
189, 0, 180
|
||||
190, 0, 198
|
||||
191, 0, 157
|
||||
192, 0, 72
|
||||
193, 0, 36
|
||||
194, 0, 8
|
||||
195, 0, 1
|
||||
196, 0, 0
|
||||
197, 0, 0
|
||||
198, 0, 0
|
||||
199, 0, 0
|
|
|
@ -0,0 +1,206 @@
|
|||
#include <AccelStepper.h>
|
||||
|
||||
#define TAKEUP_DIR_PIN 3
|
||||
#define TAKEUP_STEP_PIN 2
|
||||
|
||||
#define FEED_DIR_PIN 7
|
||||
#define FEED_STEP_PIN 6
|
||||
|
||||
#define TAKEUP_SETTINGS_A 4
|
||||
#define TAKEUP_SETTINGS_B 5
|
||||
|
||||
#define FEED_SETTINGS_A 8
|
||||
#define FEED_SETTINGS_B 9
|
||||
|
||||
#define TAKEUP_EMITTER 17
|
||||
#define TAKEUP_RECEIVER A8
|
||||
#define FEED_EMITTER 18
|
||||
#define FEED_RECEIVER A9
|
||||
|
||||
AccelStepper _takeup(AccelStepper::DRIVER, TAKEUP_STEP_PIN, TAKEUP_DIR_PIN);
|
||||
AccelStepper _feed(AccelStepper::DRIVER, FEED_STEP_PIN, FEED_DIR_PIN);
|
||||
|
||||
uint32_t _motorSteps = 200;
|
||||
uint8_t _mode = 1;
|
||||
|
||||
long _feedSamples[200];
|
||||
long _takeupSamples[200];
|
||||
|
||||
const float _speed = 2000.0;
|
||||
|
||||
void setup () {
|
||||
Serial.begin(57600);
|
||||
|
||||
_takeup.setMaxSpeed(_speed);
|
||||
_takeup.setSpeed(_speed);
|
||||
_takeup.setAcceleration(1000.0);
|
||||
|
||||
_feed.setMaxSpeed(_speed);
|
||||
_feed.setSpeed(_speed);
|
||||
_feed.setAcceleration(1000.0);
|
||||
|
||||
pinMode(TAKEUP_SETTINGS_A, OUTPUT);
|
||||
pinMode(TAKEUP_SETTINGS_B, OUTPUT);
|
||||
pinMode(FEED_SETTINGS_A, OUTPUT);
|
||||
pinMode(FEED_SETTINGS_B, OUTPUT);
|
||||
|
||||
pinMode(TAKEUP_RECEIVER, INPUT);
|
||||
pinMode(FEED_RECEIVER, INPUT);
|
||||
|
||||
digitalWrite(TAKEUP_SETTINGS_A, LOW);
|
||||
digitalWrite(TAKEUP_SETTINGS_B, LOW);
|
||||
digitalWrite(FEED_SETTINGS_A, LOW);
|
||||
digitalWrite(FEED_SETTINGS_B, LOW);
|
||||
|
||||
delay(2000);
|
||||
home();
|
||||
}
|
||||
|
||||
void loop () {
|
||||
|
||||
}
|
||||
|
||||
long readVcc() {
|
||||
long result;
|
||||
// Read 1.1V reference against AVcc
|
||||
ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
|
||||
delay(2); // Wait for Vref to settle
|
||||
ADCSRA |= _BV(ADSC); // Convert
|
||||
while (bit_is_set(ADCSRA,ADSC));
|
||||
result = ADCL;
|
||||
result |= ADCH<<8;
|
||||
result = 1125300L / result; // Back-calculate AVcc in mV
|
||||
return result;
|
||||
}
|
||||
|
||||
long analogReadAccurate (uint8_t pin) {
|
||||
double Vcc = readVcc() / 1000.0;
|
||||
double ADCValue = analogRead(pin);
|
||||
return (ADCValue / 1024.0) * Vcc;
|
||||
}
|
||||
|
||||
long analogReadAccurateAverage (uint8_t pin) {
|
||||
uint8_t count = 3;
|
||||
double sum = 0.0;
|
||||
for (uint8_t i = 0; i < count; i++) {
|
||||
sum += analogReadAccurate(pin);
|
||||
delay(1);
|
||||
}
|
||||
return sum / (double) count;
|
||||
}
|
||||
|
||||
uint16_t findPeak(long (&arr)[200], uint16_t &steps) {
|
||||
uint16_t maxI = 0;
|
||||
long max = 0;
|
||||
for (uint16_t i = 0; i < steps; i++) {
|
||||
if (arr[i] > max) {
|
||||
maxI = i;
|
||||
max = arr[i];
|
||||
}
|
||||
}
|
||||
return maxI;
|
||||
}
|
||||
|
||||
void home () {
|
||||
uint16_t steps = _motorSteps * _mode;
|
||||
uint16_t quarter = steps / 4;
|
||||
uint16_t eighth = quarter / 2;
|
||||
uint16_t takeupPeak = 0;
|
||||
uint16_t feedPeak = 0;
|
||||
uint16_t takeupOffset = 0;
|
||||
uint16_t feedOffset = 0;
|
||||
long takeupReading = 0.0;
|
||||
long feedReading = 0.0;
|
||||
|
||||
Serial.println("home()");
|
||||
|
||||
delay(10);
|
||||
|
||||
for (uint16_t i = 0; i < steps; i++) {
|
||||
takeupReading = analogReadAccurateAverage(TAKEUP_RECEIVER);
|
||||
feedReading = analogReadAccurateAverage(FEED_RECEIVER);
|
||||
_takeupSamples[i] = takeupReading;
|
||||
_feedSamples[i] = feedReading;
|
||||
if (i < steps - 1) {
|
||||
_takeup.move(1);
|
||||
_feed.move(1);
|
||||
_takeup.runToPosition();
|
||||
_feed.runToPosition();
|
||||
}
|
||||
}
|
||||
|
||||
for (uint16_t i = 0; i < steps; i++) {
|
||||
Serial.print(i);
|
||||
Serial.print(", ");
|
||||
Serial.print(_takeupSamples[i]);
|
||||
Serial.print(", ");
|
||||
Serial.println(_feedSamples[i]);
|
||||
}
|
||||
|
||||
takeupPeak = findPeak(_takeupSamples, steps);
|
||||
feedPeak = findPeak(_feedSamples, steps);
|
||||
Serial.print(" takeup peak: ");
|
||||
Serial.println(takeupPeak);
|
||||
Serial.print(" feed peak: ");
|
||||
Serial.println(feedPeak);
|
||||
|
||||
takeupOffset = abs(steps - takeupPeak);
|
||||
feedOffset = abs(steps - feedPeak);
|
||||
|
||||
Serial.print("takeup offset: ");
|
||||
Serial.println(takeupOffset);
|
||||
Serial.print(" feed offset: ");
|
||||
Serial.println(feedOffset);
|
||||
|
||||
if (takeupOffset > 0) {
|
||||
for (uint16_t i = 0; i < takeupOffset; i++) {
|
||||
_takeup.move(-1);
|
||||
_takeup.runToPosition();
|
||||
}
|
||||
}
|
||||
if (feedOffset > 0) {
|
||||
for (uint16_t i = 0; i < feedOffset; i++) {
|
||||
_feed.move(-1);
|
||||
_feed.runToPosition();
|
||||
}
|
||||
}
|
||||
/*
|
||||
for (uint16_t i = 0; i < eighth; i++) {
|
||||
_takeup.move(-1);
|
||||
_feed.move(-1);
|
||||
_takeup.runToPosition();
|
||||
_feed.runToPosition();
|
||||
}
|
||||
|
||||
for (uint16_t i = 0; i < quarter; i++) {
|
||||
takeupReading = analogReadAccurateAverage(TAKEUP_RECEIVER);
|
||||
feedReading = analogReadAccurateAverage(FEED_RECEIVER);
|
||||
_takeupSamples[i] = takeupReading;
|
||||
_feedSamples[i] = feedReading;
|
||||
if (i < steps - 1) {
|
||||
_takeup.move(1);
|
||||
_feed.move(1);
|
||||
_takeup.runToPosition();
|
||||
_feed.runToPosition();
|
||||
}
|
||||
}
|
||||
|
||||
takeupPeak = findPeak(_takeupSamples, quarter);
|
||||
feedPeak = findPeak(_feedSamples, quarter);
|
||||
takeupOffset = abs(quarter - takeupPeak);
|
||||
feedOffset = abs(quarter - feedPeak);
|
||||
|
||||
if (takeupOffset > 0) {
|
||||
for (uint16_t i = 0; i < takeupOffset; i++) {
|
||||
_takeup.move(-1);
|
||||
_takeup.runToPosition();
|
||||
}
|
||||
}
|
||||
if (feedOffset > 0) {
|
||||
for (uint16_t i = 0; i < feedOffset; i++) {
|
||||
_feed.move(-1);
|
||||
_feed.runToPosition();
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
|
@ -1,12 +1,12 @@
|
|||
{
|
||||
"name": "mcopy",
|
||||
"version": "1.8.50",
|
||||
"version": "1.8.51",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "mcopy",
|
||||
"version": "1.8.50",
|
||||
"version": "1.8.51",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"arduino": "file:app/lib/arduino",
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "mcopy",
|
||||
"version": "1.8.50",
|
||||
"version": "1.8.51",
|
||||
"description": "Small gauge film optical printer platform",
|
||||
"main": "build.js",
|
||||
"directories": {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"version": "1.8.50",
|
||||
"version": "1.8.51",
|
||||
"ext_port": 1111,
|
||||
"profiles": {
|
||||
"mcopy": {
|
||||
|
|
Loading…
Reference in New Issue