#include <Servo.h>
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h> // Required for 16 MHz Adafruit Trinket
#endif
#define NEOPIN 53
#define NEORINGNUM 33
//#define NEORINGNUM 16
Adafruit_NeoPixel pixels (NEORINGNUM, NEOPIN, NEO_GRB + NEO_KHZ800);
Servo Motor;
const int poti1 = A0;
const int poti2 = A1;
int potiWert1 = 0;
int potiWert2 = 0;
float potiWertAnzeige1 = 0;
float potiWertAnzeige2 = 0;
int servoPosition = 0;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pixels.begin(); //initializing Neopixel libary
pixels.setBrightness(100);
pixels.show();
Motor.attach(45); // Servo Pin
}
void loop() {
// put your main code here, to run repeatedly:
potiWert1 = analogRead(poti1); //Gas
potiWert2 = analogRead(poti2); //Baterie
int potiwertneu = 0;
// Code Servo
if ( potiWert2 != potiwertneu)
{
potiwertneu = round(potiWert2);
servoPosition = map(float(potiwertneu), 0, 1023, 0, 90);
Motor.write(servoPosition); // Motor zur Position bewegen
delay (15);
}
//Code Neopixel
int pixels_p1_neu = 0;
int pixels_p2_neu = 0;
int pixels_p1 = (NEORINGNUM/1023.0)*potiWert1;
int pixels_p2 = (NEORINGNUM/1023.0)*potiWert2;
if(pixels_p1 > pixels_p2)
{
pixels_p1 = pixels_p2;
}
pixels.setPixelColor(pixels_p1, 0, 155, 0);
if(pixels_p1_neu != pixels_p1) //Blau
{
pixels_p1_neu = pixels_p1;
for (int x=0; x < pixels_p1_neu ; x++)
{
pixels.setPixelColor(x, 0, 0, 155);
}
delay(5);
}
;
if(pixels_p2_neu != pixels_p2) //Rot
{
pixels_p2_neu = pixels_p2;
for (int x=NEORINGNUM; x >= pixels_p2_neu ; x--)
{
pixels.setPixelColor(x, 155, 0, 0);
}
if(pixels_p2_neu == 0)
pixels.setPixelColor(0, 155, 155, 0);
delay(5);
pixels.show();
}
for (int x=0; x < NEORINGNUM ; x++)
{
pixels.setPixelColor(x, 155, 155, 155);
}
//Code Poti
if(potiWert1 >= potiWert2)
{
potiWert1 = potiWert2;
}
potiWertAnzeige1 = ((float)potiWert1/1023.0) * 5.0; //Umerechnung in die Richtige Spannung
potiWertAnzeige2 = ((float)potiWert2/1023.0) * 5.0;
//Anzeige
/*
Serial.println("Poti_1 Bit");
Serial.println(potiWert1); //Bit Wert Porti1
Serial.println("Poti_1 Volt");
Serial.println(potiWertAnzeige1);
delay(1000);
Serial.println("Poti_2 Bit");
Serial.println(potiWert1); //Bit Wert Porti2
Serial.println("Poti_2 Volt");
Serial.println(potiWertAnzeige2);
delay(1000);
*/
}