Software & Apps

Software und Apps sind aus unserem Alltag nicht mehr wegzudenken; von Musik- und Videobearbeitung, Antiviren-Tools, VPN-Clients bis hin zu Office und gewissen Alternativen - hier dreht sich alles um Software & Apps für Deinen PC.
67.431 Beiträge

Ask Me Anything: Blickwechsel

Du stellst die Fragen, ein außergewöhnlicher Nutzer antwortet! Begegne mit Deinen Fragen anderen Menschen hautnah und persönlich.

Ask Me Anything: Themenspecials

Im gutefrage Themenspecial beantworten Verbände, Organisationen und Personen des öffentlichen Lebens Deine Fragen zu aktuellen Themen.
Ersatz für delay(); in einem Arduino Nano gesucht?

ich benötige einen Ersatz für Delay, der die Ausführung von Subroutinen nicht behindert.

Es geht mir dabei nicht um das Blinken einer LED, sondern um die exakte Taktung mit der void loop() wiederholt wird.

hat hier jemand eine schlaue Idee

void loop() {
DateTime now = rtc.now();


// Delay-Ausgleich für den Countdown
if (Timer == 0) {
  Timer = Countdown;
  }
if (timeshift < 4)
  {
  timeshift++;
  }
else
  {
 timeshift = 0; 
 Timer--;
  }
Temperatur = rtc.getTemperature();
Temperatur = (float)Temperatur;


//Sonnenrichtungssensoren auslesen
LDR_up = analogRead(A0) + 20; // Sensorkalibrierung
LDR_west = analogRead(A2) + 45;  // Sensorkalibrierung
LDR_east = analogRead(A3); 
LDR_down = analogRead(A3);
Gesamtwert = LDR_up + LDR_west + LDR_east + LDR_down; // Gesamtmenge Licht

if (Helligkeitsglaettung > 0)
  {
  smooth_lumen();
  }
else
  {
  GM_Lumen = round(Gesamtwert / 10)*10;
  }

//Zeitformatierung Countdown
hours = floor(Timer/3600);
minutes = floor(Timer/60-(hours*60));
seconds = floor(Timer-((hours*3600)+(minutes*60)));

//Potiprozent berechnen
Potentiometerwert = analogRead(A6);
Potentiometerdifferenz = Potentiometerwert - Potentiometerminimum;
Potentiometerproz = 50.0 / Potentiometermax * Potentiometerdifferenz;
Potentiometeranz = 100 - (int)Potentiometerproz;

// Hinweise zur Richtungssteuerung:
 // digitalWrite(RELAISX, HIGH); // LOW = nach Osten HIGH = nach Westen
 // digitalWrite(RELAISZ, LOW); // LOW = nach Oben / HIGH = nach Unten

//  digitalWrite(RELAIS_PowerX, LOW); // LOW = Power On / HIGH = Power off
//  digitalWrite(RELAIS_PowerZ, LOW); //LOW Power On / HIGH = Power off

anemometer(); // Anemometer auswerten

// Wetter- und Lichtabhängiger Algorithmus für die Solarsteuerung
if (now.hour() == 3 && now.minute() == 0 && now.second() == 0) // Zeitpunkt für Korrektur der horizontalen 0-Position
  {
  angel_reset = 1;
  }
if (Temperatur > Mindesttemperatur)
  {
  if (Windmaximum < rpm)
    {
    storm_protection();
    }
  else if(angel >= -30 && angel_reset == 1)
    {
    angle_reset();
    }  
  else if (GM_Lumen < Mindesthelligkeit) 
    {// zu wenig Licht - die Anlage soll in die Neutralstellung fahren
    neutral_position();
    }
  else // Nachfuehrung im Normalbetrieb
    {
    solar_move();
    }
  }
// Anzeige für HD44780 2004 LCD (i2c) Display formatieren
show_display();
delay(200);
}
Java Programmier Hilfe?

Hey, mir war neulich langweilig und da habe ich mir etwas für ein Spiel, welches ich öfters spiele ausgedacht um mir mein Leben ein Stück weit einfacher zu machen:
Es gibt in dem Spiel Charaktere mit Eigenschaften, (Damage, Cool down, Range).
Diese können mit "Traits" verändert werden: z.B. ein Trait mit einem "namen" verändert den Schaden um 10%.

Jetzt wollte ich mir ein Rechner bauen in dem ich sozusagen vorher sagen kann, wie genau sich meine Stats am ende verändern.

Ich hab nach ein Paar Versuchen einen kleinen Rechner gebaut, wobei ich leider immer eine neue Methode für ein jeweiliges Trait gebaut habe.

Jetzt hab ich mir Gedanken gemacht und bin auf die Idee gekommen, dass ich anstatt für jedes Trait eine eigene Methode zu bauen doch einfach die im Rechner benutzen Werte mit den jeweiligen Traits verändern kann, z.B. so:

System.out.println(dpsCalc(DPS,CD,PlacementCap,"trait"));

wobei bei "trait" das jeweilige Trait einfach eingesetzt wird und somit die Werte mit "trait" verändert werden (damage, cool down, range).
Ich hab zuerst an Objekte gedacht und mir überlegt, ob ich nicht einfach ein Objekt von dem Typ "Trait" benutzen kann bei dem vorher festgelegt wurde, was es für Eigenschaften (dmgAmplifier, cdAmplifier, rangeAmplifier) hat, die am Ende in der Rechnung eingesetzt werden.

Jetzt bin ich leider an meine Grenzen als Anfänger gekommen und wollte fragen, wie genau ich das Problem löse bzw. ob es überhaupt geht.
--> Ein "trait" als Übergabe Wert einer Funktion die aufgerufen werden kann um die Rechnung in Abhängigkeit des Traits zu verändern.