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,
|
"ext_port": 1111,
|
||||||
"profiles": {
|
"profiles": {
|
||||||
"mcopy": {
|
"mcopy": {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "mcopy-app",
|
"name": "mcopy-app",
|
||||||
"version": "1.8.50",
|
"version": "1.8.51",
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "mcopy-app",
|
"name": "mcopy-app",
|
||||||
"version": "1.8.50",
|
"version": "1.8.51",
|
||||||
"description": "GUI for the mcopy small gauge film optical printer platform",
|
"description": "GUI for the mcopy small gauge film optical printer platform",
|
||||||
"main": "main.js",
|
"main": "main.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"version": "1.8.50",
|
"version": "1.8.51",
|
||||||
"ext_port": 1111,
|
"ext_port": 1111,
|
||||||
"profiles": {
|
"profiles": {
|
||||||
"mcopy": {
|
"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",
|
"name": "mcopy",
|
||||||
"version": "1.8.50",
|
"version": "1.8.51",
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "mcopy",
|
"name": "mcopy",
|
||||||
"version": "1.8.50",
|
"version": "1.8.51",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"arduino": "file:app/lib/arduino",
|
"arduino": "file:app/lib/arduino",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "mcopy",
|
"name": "mcopy",
|
||||||
"version": "1.8.50",
|
"version": "1.8.51",
|
||||||
"description": "Small gauge film optical printer platform",
|
"description": "Small gauge film optical printer platform",
|
||||||
"main": "build.js",
|
"main": "build.js",
|
||||||
"directories": {
|
"directories": {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"version": "1.8.50",
|
"version": "1.8.51",
|
||||||
"ext_port": 1111,
|
"ext_port": 1111,
|
||||||
"profiles": {
|
"profiles": {
|
||||||
"mcopy": {
|
"mcopy": {
|
||||||
|
|
Loading…
Reference in New Issue