Variablenübergabe klappt nicht

  • Loisl_der_Imker
  • Autor
  • Offline
  • Junior Member
  • Junior Member
Mehr
22 Apr 2019 15:14 #568 von Loisl_der_Imker
Loisl_der_Imker erstellte das Thema Variablenübergabe klappt nicht
Hallo

Ich habe ein Problem woran ich verzweifle - vermutlich ist es aber nur eine Kleinigkeit die ich ändern muss ;)

Der Wert einer Variable soll gesichert werden bevor er mit den neuen Wert überschrieben wird mit:
BattV = Batt;
Batt = analogRead (A0)*1.655;
in der Variable BattV steht aber immer 0 - was mach ich da Falsch?

Für eine PV-Inselanlage möchte ich eine Lastregelung erstellen. Dafür brauch ich die Tendenz ob die Batteriespannung steigt oder sinkt. Je nach dem wird ein Zyklus Zähler hoch oder runter gezählt. Wenn ich mit If - Abfrage direkt je nach Spannungswert Aktionen machen lass verursacht jeder kleine Ausreißer bei den gemessenen Werten gleich ein zu und weg schalten. Daher die Variante mit den Zyklus Zähler und anschließend über Switch Case je nach Zyklus Zähler Wert die entsprechende Aktion.
Das nachfolgende Programm ist vereinfacht um nur das Wesentliche zu zeigen. Über ein Poti 0-3,3V auf A0 kann es einfach simuliert werden.

Dankte für die Hilfe

PS: ich habe mir C über die Beispiele selber angeeignet - hab aber Vorkenntnisse im Programmieren in Basic und von der Elektronikerausbildung in SPS - liegt aber schon einige Zeit zurück ;)

// Variablen als Globale Variablen festlegen
int Batt =0; // Batterie Spannung (was ist wenn Regler Last aus schaltet?)
int BattV =0; // Batterie Spg beim letzen Zyklus
int Zyklus=100;


void setup() {
Serial.begin (9600);
}

void loop() {
Serial.print ("A0 ==> ");
BattV = Batt; // vorherigen Wert sichern für Tendenz ==> warum klappt das nicht?
Batt = analogRead (A0)*1.655;
Serial.print (Batt);
Serial.print (" ");
Serial.print (BattV);
Serial.print (" Zyklus:");
Serial.print (Zyklus);
Serial.println (" ");

delay(100); // kleine Pause bei jeden Zyklus
if (Batt > BattV) {
if (Batt >1200) {
Zyklus++;
}
if (Zyklus > 250 && Batt < 1300){ // solange 13 V nicht überschritten sind keine weiteren Maßnahmen
Zyklus--;
}
}
// gleichbleibende Werte
if (Batt = BattV){
// nix machen
}
// fallende Spannungswerte
if (Batt < BattV){
Zyklus--;
}
if (Zyklus >700) {Zyklus = 700;}
if (Zyklus <10) {Zyklus =10;}

// je Zykluswert Schaltvorgänge
int x=Zyklus/100;
switch(x) {
case 1: // Pumpe Aus Batterie muss erst auf über 13V
// hier steht der Code für den Fall
break;
case 2: // Pumpe Ein ab 200 in Zyklus

break;
case 3: // zusätzliche Last ein

break;
case 4: // ein PV-Modul weg schalten
break;
case 5: // zwei PV-Module weg schalten

break;
case 6: // drei PV-Module weg schalten

break;
case 7: // alle PV-Module weg schalten

break;
default: // kann das Passieren?
Serial.println (" Switch-Case lief auf default!");
break;
}

}

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
24 Apr 2019 13:47 #569 von supporter
Variablenübergabe klappt nicht
if (Batt = BattV){

muss sein:
if (Batt == BattV){
Folgende Benutzer bedankten sich: Loisl_der_Imker

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • Loisl_der_Imker
  • Autor
  • Offline
  • Junior Member
  • Junior Member
Mehr
14 Mai 2019 19:32 #572 von Loisl_der_Imker
Variablenübergabe klappt nicht
danke Supporter - genau das war mein Fehler :blink:

jetzt hab ich wieder ein neues Problem was ähnlich gestrickt ist ... mache dafür ein neunen Beitrag

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Powered by Kunena Forum