migration repo
All checks were successful
/ Build (push) Successful in 3m37s
/ Release (push) Successful in 8s

This commit is contained in:
FCS
2025-12-01 17:55:44 +01:00
commit ed83354dfb
13 changed files with 719 additions and 0 deletions

82
lib/winde/tacho.cpp Normal file
View 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
View 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