light test (success).
This commit is contained in:
parent
41dead1da1
commit
c4ef5348a6
2 changed files with 77 additions and 16 deletions
|
@ -12,5 +12,5 @@
|
||||||
platform = teensy
|
platform = teensy
|
||||||
board = teensy41
|
board = teensy41
|
||||||
framework = arduino
|
framework = arduino
|
||||||
|
upload_protocol = teensy-cli
|
||||||
upload_protocol = teensy-cli
|
lib_deps = adafruit/Adafruit NeoPixel@^1.10.1
|
||||||
|
|
89
src/main.cpp
89
src/main.cpp
|
@ -1,4 +1,5 @@
|
||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
|
#include <Adafruit_NeoPixel.h>
|
||||||
#include "Motor.h"
|
#include "Motor.h"
|
||||||
|
|
||||||
// Vertical motor top
|
// Vertical motor top
|
||||||
|
@ -33,6 +34,13 @@
|
||||||
#define HORZ_CNT_INNER 35
|
#define HORZ_CNT_INNER 35
|
||||||
#define HORZ_CNT_OUTER 36
|
#define HORZ_CNT_OUTER 36
|
||||||
|
|
||||||
|
// Lights
|
||||||
|
#define LED_FRONT 41
|
||||||
|
#define LED_COUNT_FRONT 26
|
||||||
|
|
||||||
|
#define LED_BACK 14
|
||||||
|
#define LED_COUNT_BACK 72
|
||||||
|
|
||||||
volatile int32_t hor_pos;
|
volatile int32_t hor_pos;
|
||||||
volatile int32_t vert_pos;
|
volatile int32_t vert_pos;
|
||||||
|
|
||||||
|
@ -46,6 +54,15 @@ Motor vert_down(VERT_DOWN_PWM, VERT_DOWN_AIN1, VERT_DOWN_AIN2);
|
||||||
Motor horz_left(HORZ_LEFT_PWM, HORZ_LEFT_AIN1, HORZ_LEFT_AIN2);
|
Motor horz_left(HORZ_LEFT_PWM, HORZ_LEFT_AIN1, HORZ_LEFT_AIN2);
|
||||||
Motor horz_right(HORZ_RIGHT_PWM, HORZ_RIGHT_AIN1, HORZ_RIGHT_AIN2);
|
Motor horz_right(HORZ_RIGHT_PWM, HORZ_RIGHT_AIN1, HORZ_RIGHT_AIN2);
|
||||||
|
|
||||||
|
Adafruit_NeoPixel led_front(LED_COUNT_FRONT, LED_FRONT, NEO_GBRW + NEO_KHZ800);
|
||||||
|
Adafruit_NeoPixel led_back(LED_COUNT_BACK, LED_BACK, NEO_GBRW + NEO_KHZ800);
|
||||||
|
|
||||||
|
bool back;
|
||||||
|
bool led_on;
|
||||||
|
int led_n;
|
||||||
|
u_int8_t brightness;
|
||||||
|
u_int8_t color;
|
||||||
|
|
||||||
int32_t count(int pinA, int pinB) {
|
int32_t count(int pinA, int pinB) {
|
||||||
if (digitalRead(pinA)) return digitalRead(pinB) ? -1 : 1;
|
if (digitalRead(pinA)) return digitalRead(pinB) ? -1 : 1;
|
||||||
else return digitalRead(pinB) ? 1 : -1;
|
else return digitalRead(pinB) ? 1 : -1;
|
||||||
|
@ -59,6 +76,23 @@ void vert_count() {
|
||||||
vert_pos += count(VERT_CNT_INNER, VERT_CNT_OUTER);
|
vert_pos += count(VERT_CNT_INNER, VERT_CNT_OUTER);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Generic motor control (full speed). Call every 10us for good results.
|
||||||
|
*/
|
||||||
|
void mot_control(Motor mot1, Motor mot2, int32_t pos, int32_t aim) {
|
||||||
|
if (pos < aim) {
|
||||||
|
mot1.run(255, false);
|
||||||
|
mot2.run(127, false);
|
||||||
|
} else if (vert_pos > vert_aim) {
|
||||||
|
mot2.run(255, true);
|
||||||
|
mot1.run(127, true);
|
||||||
|
} else {
|
||||||
|
mot1.stop(false);
|
||||||
|
mot2.stop(false);
|
||||||
|
// vert_aim = (vert_aim == 50) ? 0 : 50;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
|
|
||||||
|
@ -94,24 +128,51 @@ void setup() {
|
||||||
// attachInterrupt(digitalPinToInterrupt(HORZ_CNT_OUTER), hor_count, CHANGE);
|
// attachInterrupt(digitalPinToInterrupt(HORZ_CNT_OUTER), hor_count, CHANGE);
|
||||||
attachInterrupt(digitalPinToInterrupt(VERT_CNT_INNER), vert_count, CHANGE);
|
attachInterrupt(digitalPinToInterrupt(VERT_CNT_INNER), vert_count, CHANGE);
|
||||||
// attachInterrupt(digitalPinToInterrupt(VERT_CNT_OUTER), vert_count, CHANGE);
|
// attachInterrupt(digitalPinToInterrupt(VERT_CNT_OUTER), vert_count, CHANGE);
|
||||||
|
|
||||||
|
back = true;
|
||||||
|
led_on = true;
|
||||||
|
|
||||||
|
brightness = 0;
|
||||||
|
color = 0;
|
||||||
|
|
||||||
|
led_back.begin();
|
||||||
|
led_back.show();
|
||||||
|
|
||||||
|
led_front.begin();
|
||||||
|
led_front.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
void loop() {
|
void loop() {
|
||||||
|
// led_front.setPixelColor(led_n, 0, 0, 0, led_on ? 255 : 0);
|
||||||
if (vert_pos < vert_aim) {
|
uint32_t c = led_back.Color((color == 0 || color == 1 || color == 2 || color == 9) ? brightness : 0,
|
||||||
vert_down.run(255, false);
|
(color == 2 || color == 3 || color == 4 || color == 8) ? brightness : 0,
|
||||||
vert_up.run(127, false);
|
(color == 4 || color == 5 || color == 6 || color == 9) ? brightness : 0,
|
||||||
} else if (vert_pos > vert_aim) {
|
(color == 6 || color == 7 || color == 0 || color == 8) ? brightness : 0);
|
||||||
vert_up.run(255, true);
|
if (back) {
|
||||||
vert_down.run(127, true);
|
led_back.fill(c);
|
||||||
|
led_back.show();
|
||||||
} else {
|
} else {
|
||||||
vert_up.stop(false);
|
led_front.fill(c);
|
||||||
vert_down.stop(false);
|
led_front.show();
|
||||||
vert_aim = (vert_aim == 50) ? 0 : 50;
|
}
|
||||||
delay(100);
|
delay(10);
|
||||||
|
|
||||||
|
if (led_on && (brightness < 255)) {
|
||||||
|
brightness++;
|
||||||
|
} else if (!led_on && (brightness > 0)) {
|
||||||
|
brightness--;
|
||||||
|
} else {
|
||||||
|
if (!led_on) {
|
||||||
|
if (color < 9) color++;
|
||||||
|
else {
|
||||||
|
color = 0;
|
||||||
|
back = !back;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
led_on = !led_on;
|
||||||
}
|
}
|
||||||
|
|
||||||
Serial.printf("hor_count %i | \t vert_count %i | \t vert_aim %i \n", hor_pos, vert_pos, vert_aim);
|
if (brightness % 8 == 0) {
|
||||||
|
Serial.printf("hor_pos %i | \t vert_pos %i \n", hor_pos, vert_pos);
|
||||||
delayMicroseconds(10);
|
}
|
||||||
}
|
}
|
Loading…
Reference in a new issue