Adruino Coding

Hat jemand eine Ahnung, wozu dieses Programm sein soll?

#include <EEPROM.h> //EEPROM Speicher einbeziehen
const int LED_PIN=7; //Pin 7 für LED

const int R_PIN=A0;
const int G_PIN=A1;
const int B_PIN=A2;

const int DATEN_PIN=8;
const int TAKT_PIN=10;
const int SPEICHERN_PIN=9;

const int TASTER_PIN=2;

const int LED_RT=0x10;
const int LED_GE=0x08;
const int LED_GN=0x04;
const int LED_BL=0x02;
const int LED_WS=0x01;

const int R_REF_ADR=0;
const int G_REF_ADR=2;
const int B_REF_ADR=4;

const int WS_GRENZE=10;

const int MAX_GRENZE=40;
const int MIN_GRENZE=0;

int Leds=0;

int R_Spg;
int G_Spg;
int B_Spg;

int R_Ref;
int G_Ref;
int B_Ref;

int R_Map1, R_Map2;
int G_Map1, G_Map2;
int B_Map1, B_Map2;

int Max_Wert;
int Min_Wert;

int RG_Dif;
int RB_Dif;
int GB_Dif;

bool Taster;

void setup() {
pinMode(LED_PIN,OUTPUT); //Pin 7 als Ausgang setzen
pinMode(DATEN_PIN,OUTPUT);
pinMode(TAKT_PIN,OUTPUT);
pinMode(SPEICHERN_PIN,OUTPUT);
pinMode(TASTER_PIN,INPUT_PULLUP);

digitalWrite(DATEN_PIN,LOW); //Pin 8 wird bei Einschalten auf Low gesetzt (Pulldown)
digitalWrite(TAKT_PIN,LOW);
digitalWrite(SPEICHERN_PIN,HIGH);
zeigeLeds(0);

digitalWrite(LED_PIN,LOW);
delay(500);
Serial.begin(9600);
Serial.println("Fruehjahr 2020");
}

void loop() {
eingabe();
verarbeitung();
ausgabe();
}

void eingabe(void) {
R_Spg=0; G_Spg=0; B_Spg=0;
for (int i=0; i<5; i++) {
R_Spg=R_Spg+analogRead(R_PIN);
G_Spg=G_Spg+analogRead(G_PIN);
B_Spg=B_Spg+analogRead(B_PIN);
delay(1);
}
R_Spg=R_Spg/5;
G_Spg=G_Spg/5;
B_Spg=B_Spg/5;
Taster=digitalRead(TASTER_PIN);
}

void verarbeitung(void) {
readRef();

R_Map1=map(R_Spg,0,R_Ref,0,100);
G_Map1=map(G_Spg,0,G_Ref,0,100);
B_Map1=map(B_Spg,0,B_Ref,0,100);

Max_Wert=max(R_Map1,max(G_Map1,B_Map1));
Min_Wert=min(R_Map1,min(G_Map1,B_Map1));
if (Min_Wert==Max_Wert) Min_Wert--;

R_Map2=map(R_Map1,Min_Wert,Max_Wert,0,100);
G_Map2=map(G_Map1,Min_Wert,Max_Wert,0,100);
B_Map2=map(B_Map1,Min_Wert,Max_Wert,0,100);

Leds=0;
if (Max_Wert>=MAX_GRENZE) {
if (Max_Wert-Min_Wert<=WS_GRENZE) {
Leds=LED_WS;
} else if (R_Map2==100) {
if (G_Map2==0) Leds=LED_RT; else Leds=LED_GE;
} else if (G_Map2==100) {
Leds=LED_GN;
} else if (B_Map2==100) {
Leds=LED_BL;
}
}
}

void ausgabe(void) {
static int Zeile=0;
zeigeLeds(Leds);
if(Taster==LOW) writeRef();
delay(200);
}

void zeigeLeds(int Leds) {
digitalWrite(SPEICHERN_PIN,LOW);
delay(1);
for (int i=0; i<5; i++) {
digitalWrite(DATEN_PIN,bitRead(Leds,i));
delay(1);
digitalWrite(TAKT_PIN,HIGH);
delay(1);
digitalWrite(TAKT_PIN,LOW);
delay(1);
}
digitalWrite(DATEN_PIN,LOW);
delay(1);
digitalWrite(SPEICHERN_PIN,HIGH);
}

void readRef(void) {
EEPROM.get(R_REF_ADR,R_Ref);
EEPROM.get(G_REF_ADR,G_Ref);
EEPROM.get(B_REF_ADR,B_Ref);
}

void writeRef(void) {
EEPROM.put(R_REF_ADR,R_Spg);
EEPROM.put(G_REF_ADR,G_Spg);
EEPROM.put(B_REF_ADR,B_Spg);
}

Nö, Adruino hat mit Arduino nichts gemein.
Für Code gibt es Codetags -> </>

Hat jemand eine Ahnung, wozu dieses Programm sein soll?

Man könnte es als abschreckendes Beispiel verwenden.

Basissoftware für einen Fluxkompensator !

Ulli

combie:
Man könnte es als abschreckendes Beispiel verwenden.

Du meinst für's persönliche Horrorkabinett? :wink:
Grüße Uwe

combie:
Man könnte es als abschreckendes Beispiel verwenden.

Dem Vorschlag würde ich mich anschließen. Und im Horrorkabinett ist es sicher gut aufgehoben 8) .

@ Johnnyb124
Wenn Du so blöd fragst dann wirst Du nur blöde Antworten bekommen.
Ich blockiere mal diesen Post solange bis Du mir per PM erklährst was Du willst.
Grüße Uwe