bin der Werner und 63 Jahre alt und habe aktuell grade echts ein Brett vor dem Kopf.
Es geht darum das ich ein bestehendes Programm auf meine Bedürfnisse umbaue muss und da ist ein Punkt an dem sich alles aufhängt,
ich komme mit diesem Klammern Salt einfach nicht vorwärts denn Klammerrechnen hab ich mal ganz anders gelernt und auch unter Basic angewandt, leider komme ich nur alle 6 Monate mal dazu was zu schreiben und das gestaltet sich normalerweise nicht so kompliziert.
Ich verstehe einfach nicht den Sinn der Klammersetzung !
Die Rechnung ist allerdings ganz einfach, am Ende benötige ich ein (*true+) oder ein (false) um mit ( If ) und ( else ) weiter machen zu können.
Ich hab die Original Zeile drin gelassen welche ich allerdings um die Variable rssiC erweitern muss, hier gelistet ist nur der letzte versuch das ding anzupassen, ich hab mehrere Varianten erfolglos durchgespielt.
Das sketch mal als Text weil ich noch nichts hochladen darf, ich bruch jetzt echt Schützenhilfe.
Gruß
Werner
//##################################################################
void setup() {
// put your setup code here, to run once:
Serial.begin (19200);
//
int rssiA = 50;
int rssiB = 50;
int rssiC = 50;
int DIVERSITY_CUTOVER = 5;
Danke für den Hinweis.. ich bin nicht mehr so fit und war es auch nie wirklich richtig. das ist alles Learning by doing... und manchmal verfluche ich auch die Arduino IDE..
Ich werde mir das mal zu Gemüte führen allerdings war die Aussage eine ganz klare !
" Entschuldige, neue Benutzer dürfen keine Anhänge hochladen."
Test:
void setup() {
// put your setup code here, to run once:
Serial.begin (19200);
//
int rssiA = 50;
int rssiB = 50;
int rssiC = 50;
int DIVERSITY_CUTOVER = 5;
// if((int)abs((float)(((float)rssiA - (float)rssiB) / (float)rssiB) * 100.0) >= DIVERSITY_CUTOVER) // ## Orginal ##
if((int)abs((float)((float)rssiA - (((float)rssiB) / (float)rssiB))-((float)rssiC) / (float)rssiC))) * 100.0) >= DIVERSITY_CUTOVER)
{
Serial.print (" ungleich ");
}
else{
Serial.print (" alle gleich ");
}
}
void loop() {
// put your main code here, to run repeatedly:
}
Nicht Anhang.
Wenn Du einen Beitrag verfasst, dann in der IDE BEARBEITEN - FÜR FORUM KOPIEREN und dann mit der Maus in den Post geklickt und mit der rechten Maustaste einfügen oder mit Strg-V
Geht auch bei neuen Usern
Mir reichen die 2 Tage die ich damit zugebracht habe das ding anpassen zu wollen.. ich bin einfach zu alt für sowas und im Zeitalter von Foren sollte es doch möglich sein schnell eine Abhilfe zu bekommen.
Das in der Formel was nicht stimmt ist mir schon klar. es war nur ein weiter unnützer versuch.
Vielleicht schreibst Du die Formel erst mal ohne die ganzen float Casts... Wenn die wirklich notwendig sein sollten (warum auch immer), kannst Du die als Letztes einfügen.
In deinem Beispiel fehlt zumindest mal die "{" Klammer der If Bedingung.
Das ist richtig, aber die Divisionen sind Dein Problem.
Im Gegensatz zu einer Tabellkalkulation oder einem Taschenrechner wird ohne explizite Angabe immer mit ganzen Zahlen gerechnet. Alle Deine Nachkommastellen würden also unter den Tisch fallen.
Dafür ist das casten auf float gedacht.
Man könnte natürlich auch die drei Zahlen von vornherein schon als float einplanen udn hätte den ganzen Unfug nicht.
Könnte dann so aussehen:
void setup()
{
// put your setup code here, to run once:
Serial.begin (19200);
//
float rssiA = 50.0;
float rssiB = 50.0;
float rssiC = 50.0;
int DIVERSITY_CUTOVER = 5;
// if((int)abs((float)(((float)rssiA - (float)rssiB) / (float)rssiB) * 100.0) >= DIVERSITY_CUTOVER) // ## Orginal ##
if (abs((rssiA - rssiB / rssiB - rssiC / rssiC) * 100.0) >= DIVERSITY_CUTOVER)
{
Serial.print (" ungleich ");
}
else
{
Serial.print (" alle gleich ");
}
}
void loop()
{
// put your main code here, to run repeatedly:
}
Da ich nicht weiss, was die Formel machen soll, nur auf gut glück.
Klammer vor Punktrechnung vor Strichrechnung.
Mach was draus.
Ich hab die drei Variablen die gemappt sind. sollte rssiA 5 % ( DIVERSITY_CUTOVER) unterschreiten soll das ( if ) zum Einsatz kommen, ansonsten wird keine Zustandsänderung eingeleitet im Programm.
Ich verstehe es überhaupt nicht.. den ich komme mit den Klammern nicht klar.. die Prozedur ist für mich LOGISCH und sie funktioniert ja auch unter Verwendung von der Original Zeile die ich drin belassen habe.
ich glaube ich mach da an besten eine separate abfrage von rssiC.. wäre noch das einfachste.. allerdings hab ich im Flash nur noch 150 byte frei und ich bin noch nicht fertig mit dem umschreiben.