Programmierung

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen

Programmcode

//----------------------------------------------//
//         Speedy-Tempomessgerät                //
//           Projektarbeit                      //
//       Justin Frommberger & Jonas Gerke       //
//          Stand: 29.11.2022                   //
//--------------------------------------------- //


#include <FastLED.h>

#define LED_PIN     7
#define NUM_LEDS    257

CRGB leds[NUM_LEDS];

int DELAYVAL = 400;                           // Initalisierung 


int v,vmax, ontime, offtime;
int pin = 3;
int max = 0;
int speedarray[10];


void setup() {
  FastLED.addLeds<WS2812B, LED_PIN, GRB>(leds, NUM_LEDS);
  Serial.begin(115200);
  pinMode(pin, INPUT);
}

void loop() {
{unsigned long T;                             // Periodendauer in us
 int f;                                       // Frequenz in MHz 
 vmax=0;                                      

 for(int i = 0; i <=9; i++) {
 
 ontime = pulseIn(pin, HIGH);                // Umwandlung vom PWM zur Geschwindigkeit
 offtime = pulseIn(pin, LOW);
 T = ontime + offtime;
 f= 1000000/T;           // f=1/T   
 v=f/44.0;     // 24 GHz Radar
 speedarray[i] = v;

 }
 for(int i = 0; i <= 9; i++) {                // Schleife und Array zum filtern der falschen Werte
   if(speedarray[i] > max) 
   {
      max = speedarray[i];
    delay(100);
    Serial.print(max);
    Serial.println("KM/H");
   } 
 }
 delay(500);


                                          // LED ausführen
  switchCase(); 
  FastLED.show();
  delay(DELAYVAL);
 }
}

void switchCase() {                       // LEDS anschalten
int LINKS = 0;
int RECHTS = 0;
int Rot  = 150;
int Gruen = 0;

LINKS  = max/10;                          // Berechnung der Link und Rechten Zahl 
RECHTS = max%10;

 for(int i=0; i<=255; i++) 
    {
    leds[i] = CRGB(0, 0, 0);
    }
    
if(LINKS <= 3 && RECHTS <= 9)            // Bestimmung der Farbe
{
  Rot  =   0;
  Gruen = 150;
 }
if(LINKS >=3 && RECHTS >= 0)
 {
  Rot  = 150;
  Gruen =   0;
 }

 switch (LINKS) {                       // Linke Zahl
  case 0:
     for(int i=0; i<=55; i++)
     {
     leds[i] = CRGB(0, 0, 0);    
     } 
     for(int i=72; i<=125; i++) 
     {
     leds[i] = CRGB(0, 0, 0);
     } 
      break;
  case 1:
     for(int i=88; i<=125; i++)
     {
     leds[i] = CRGB(Rot, Gruen, 0);    
     } 
      break;
  case 2:
     for(int i=10; i<=29; i++)
     {
     leds[i] = CRGB(Rot, Gruen, 0);   
     } 
     for(int i=40; i<=86; i++) 
     {
     leds[i] = CRGB(Rot, Gruen, 0);
     }
     for(int i=97; i<=115; i++) 
     {
     leds[i] = CRGB(Rot, Gruen, 0);
     } 
      break;
  case 3:
     for(int i=40; i<=86; i++) 
     {
     leds[i] = CRGB(Rot, Gruen, 0);
     } 
     for(int i=87; i<=125; i++) 
     {
     leds[i] = CRGB(Rot, Gruen, 0);
     } 
      break;
  case 4:
     for(int i=0; i<=9; i++) 
     {
     leds[i] = CRGB(Rot, Gruen, 0);
     }
      for(int i=30; i<=39; i++)
     {
     leds[i] = CRGB(Rot, Gruen, 0);    
     } 
     for(int i=56; i<=71; i++) 
     {
     leds[i] = CRGB(Rot, Gruen, 0);
     }
     for(int i=88; i<=125; i++) 
     {
     leds[i] = CRGB(Rot, Gruen, 0);
     }  
      break;
  case 5:
       for(int i=0; i<=9; i++) 
     {
     leds[i] = CRGB(Rot, Gruen, 0);
     }
      for(int i=30; i<=87; i++)
     {
     leds[i] = CRGB(Rot, Gruen, 0);    
     } 
     for(int i=88; i<=96; i++) 
     {
     leds[i] = CRGB(Rot, Gruen, 0);
     }
     for(int i=116; i<=125; i++) 
     {
     leds[i] = CRGB(Rot, Gruen, 0);
     } 
      break;
   case 6:
     for(int i=0; i<=96; i++)
     {
     leds[i] = CRGB(Rot, Gruen, 0);    
     } 
     for(int i=116; i<=125; i++) 
     {
     leds[i] = CRGB(Rot, Gruen, 0);
     } 
      break;
   case 7:
     for(int i=40; i<=55; i++)
     {
     leds[i] = CRGB(Rot, Gruen, 0);    
     } 
     for(int i=88; i<=125; i++) 
     {
     leds[i] = CRGB(Rot, Gruen, 0);
     } 
      break;
    case 8:
       for(int i=0; i<=125; i++)
     {
     leds[i] = CRGB(Rot, Gruen, 0);    
     } 
      break;
   case 9:
     for(int i=0; i<=9; i++) 
     {
     leds[i] = CRGB(Rot, Gruen, 0);
     }
      for(int i=30; i<=39; i++)
     {
     leds[i] = CRGB(Rot, Gruen, 0);    
     } 
     for(int i=40; i<=125; i++) 
     {
     leds[i] = CRGB(Rot, Gruen, 0);
     }
      break;
  }


switch (RECHTS) {                                 // Rechte Zahl
  case 0:
     for(int i=127; i<=182; i++)
     {
     leds[i] = CRGB(Rot, Gruen, 0);    
     } 
     for(int i=199; i<=254; i++) 
     {
     leds[i] = CRGB(Rot, Gruen, 0);
     } 
      break;
  case 1:
     for(int i=215; i<=254; i++)
     {
     leds[i] = CRGB(Rot, Gruen, 0);    
     } 
      break;
  case 2:
     for(int i=137; i<=156; i++)
     {
     leds[i] = CRGB(Rot, Gruen, 0);   
     } 
     for(int i=167; i<=213; i++) 
     {
     leds[i] = CRGB(Rot, Gruen, 0);
     }
     for(int i=225; i<=244; i++) 
     {
     leds[i] = CRGB(Rot, Gruen, 0);
     } 
      break;
  case 3:
     for(int i=167; i<=213; i++) 
     {
     leds[i] = CRGB(Rot, Gruen, 0);
     } 
     for(int i=214; i<=254; i++) 
     {
     leds[i] = CRGB(Rot, Gruen, 0);
     } 
      break;
  case 4:
     for(int i=127; i<=136; i++) 
     {
     leds[i] = CRGB(Rot, Gruen, 0);
     }
      for(int i=157; i<=166; i++)
     {
     leds[i] = CRGB(Rot, Gruen, 0);    
     } 
     for(int i=183; i<=198; i++) 
     {
     leds[i] = CRGB(Rot, Gruen, 0);
     }
     for(int i=215; i<=254; i++) 
     {
     leds[i] = CRGB(Rot, Gruen, 0);
     }  
      break;
  case 5:
       for(int i=127; i<=136; i++) 
     {
     leds[i] = CRGB(Rot, Gruen, 0);
     }
      for(int i=157; i<=214; i++)
     {
     leds[i] = CRGB(Rot, Gruen, 0);    
     } 
     for(int i=215; i<=224; i++) 
     {
     leds[i] = CRGB(Rot, Gruen, 0);
     }
     for(int i=245; i<=254; i++) 
     {
     leds[i] = CRGB(Rot, Gruen, 0);
     } 
      break;
   case 6:
     for(int i=127; i<=224; i++)
     {
     leds[i] = CRGB(Rot, Gruen, 0);    
     } 
     for(int i=245; i<=254; i++) 
     {
     leds[i] = CRGB(Rot, Gruen, 0);
     } 
      break;
   case 7:
     for(int i=167; i<=182; i++)
     {
     leds[i] = CRGB(Rot, Gruen, 0);    
     } 
     for(int i=215; i<=254; i++) 
     {
     leds[i] = CRGB(Rot, Gruen, 0);
     } 
      break;
    case 8:
       for(int i=127; i<=254; i++)
     {
     leds[i] = CRGB(Rot, Gruen, 0);    
     } 
      break;
   case 9:
     for(int i=127; i<=136; i++) 
     {
     leds[i] = CRGB(Rot, Gruen, 0);
     }
      for(int i=157; i<=166; i++)
     {
     leds[i] = CRGB(Rot, Gruen, 0);    
     } 
     for(int i=167; i<=254; i++) 
     {
     leds[i] = CRGB(Rot, Gruen, 0);
     }
      break;
  }
  delay(500);
  max = 0;              //zurücksetzen der max Zahl
}