migration repo
This commit is contained in:
82
lib/winde/tacho.cpp
Normal file
82
lib/winde/tacho.cpp
Normal file
@@ -0,0 +1,82 @@
|
||||
#include "../windentelemetry.h"
|
||||
#include "tacho.h"
|
||||
#include <ESP32Servo.h>
|
||||
#include <Adafruit_NeoPixel.h>
|
||||
Servo myservo;
|
||||
Adafruit_NeoPixel pixels(NUMPIXELS, NEOPIN, NEO_GRB + NEO_KHZ800);
|
||||
void init_servo(void)
|
||||
{
|
||||
myservo.setPeriodHertz(50);
|
||||
myservo.attach(servoPin);
|
||||
set_tacho(0, 70, 150);
|
||||
}
|
||||
|
||||
void set_tacho(int speed, int speed_min, int speed_max)
|
||||
{
|
||||
int val = map(speed, -25, 220, 0, 155);
|
||||
#ifdef DEBUG
|
||||
Serial.print("Tacho Mapping: ")
|
||||
Serial.println(val);
|
||||
#endif
|
||||
myservo.write(val);
|
||||
pixels.clear();
|
||||
// normal speed
|
||||
if ((speed >= speed_min) && (speed <= speed_max))
|
||||
{
|
||||
int n;
|
||||
for (n = speed_min + 5; n < speed_max - 5; n = n + 10)
|
||||
{
|
||||
int i = map(n, 0, 220, 1, 12);
|
||||
pixels.setPixelColor(setoffsetpixel(i), pixels.Color(0, 150, 0));
|
||||
}
|
||||
}
|
||||
// knapp am minimum
|
||||
if ((speed <= speed_min + 5) && (speed >= speed_min))
|
||||
{
|
||||
int i = map(speed, 0, 220, 1, 12);
|
||||
pixels.setPixelColor(setoffsetpixel(i - 1), pixels.Color(150, 150, 0));
|
||||
}
|
||||
// knapp über max
|
||||
if ((speed <= speed_max) && (speed >= speed_max - 5))
|
||||
{
|
||||
int i = map(speed, 0, 220, 1, 12);
|
||||
pixels.setPixelColor(setoffsetpixel(i), pixels.Color(150, 0, 0));
|
||||
}
|
||||
// kleiner minimium
|
||||
if ((speed < speed_min) && (speed > 20))
|
||||
{
|
||||
int n;
|
||||
for (n = 0; n < speed_min; n = n + 10)
|
||||
{
|
||||
int i = map(n, 0, 220, 1, 12);
|
||||
pixels.setPixelColor(setoffsetpixel(i - 1), pixels.Color(150, 150, 0));
|
||||
}
|
||||
}
|
||||
// größer max
|
||||
if (speed > speed_max)
|
||||
{
|
||||
int n;
|
||||
for (n = speed_max; n <= 220; n = n + 10)
|
||||
{
|
||||
int i = map(n, 0, 220, 1, 12);
|
||||
pixels.setPixelColor(setoffsetpixel(i), pixels.Color(150, 0, 0));
|
||||
}
|
||||
}
|
||||
pixels.show();
|
||||
}
|
||||
|
||||
void init_pixel(void)
|
||||
{
|
||||
pixels.begin();
|
||||
}
|
||||
|
||||
int setoffsetpixel(int pixel)
|
||||
{
|
||||
int newpixel;
|
||||
newpixel = pixel + pixeloffset;
|
||||
if (newpixel >= NUMPIXELS)
|
||||
{
|
||||
newpixel = newpixel - NUMPIXELS;
|
||||
}
|
||||
return newpixel;
|
||||
}
|
||||
15
lib/winde/tacho.h
Normal file
15
lib/winde/tacho.h
Normal file
@@ -0,0 +1,15 @@
|
||||
#ifndef WINDENTELEMETRY_TACHO_H
|
||||
#define WINDENTELEMETRY_TACHO_H
|
||||
#include "../windentelemetry.h"
|
||||
|
||||
void init_servo(void);
|
||||
/*!
|
||||
@brief Set die Geschwidigkeit des Tachos über den Servo
|
||||
@param speed die Geschwindigkeit als int in km/h, kt oder m/s je nach Tacho
|
||||
*/
|
||||
void set_tacho(int speed, int speed_min, int speed_max);
|
||||
|
||||
void init_pixel(void);
|
||||
|
||||
int setoffsetpixel(int pixel);
|
||||
#endif
|
||||
Reference in New Issue
Block a user