Fehlermeldung, brauche bitte Hilfe

Hello,
kann mir jemand bitte helfen und sagen, warum ich die unten beigefügte Fehlermeldung bekomme?
Viele Grüße

/*
LED pattern:
	6		13
	5	9	12
A1	4	8	11
A0	3	7	10
*/
int i;
unsigned int single_mins = 0;
unsigned int ten_mins = 0;
unsigned int single_hours = 0;
unsigned int ten_hours = 0;
#include<math.h>


void setup()
{
	
	// TODO: Initialize digital outputs for LEDs
  pinMode(13, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(A0, OUTPUT);
  pinMode(A1, OUTPUT);
}

void loop()
{
	delay(60000);
	single_mins++;
	
	// Determine correct single_mins, ten_mins, single_hours, ten_hours
	if(single_mins == 10)
	{
		ten_mins++;
		single_mins = 0;
	}
	if(ten_mins == 6)
	{
		single_hours++;
		ten_mins = 0;
	}
	if(single_hours == 10)
	{
		ten_hours++;
		single_hours = 0;
	}
	if(ten_hours == 2 && single_hours == 4)
	{
		single_hours = 0;
		ten_hours = 0;
	}

	// Translate into LED booleans
	for(i=10; i<=13; i++)
	{
		digitalWrite(i , HIGH) = (single_mins && pow(2, i-10)) >> (i-10);
	}
	for(i=7; i<=9; i++)
	{
		digitalWrite(i , HIGH) = (ten_mins && pow(2, i-7)) >> (i-7);
	}
	for(i=3; i<=6; i++)
	{
		digitalWrite(i , HIGH) = (single_hours && pow(2, i-3)) >> (i-3);
	}
	analogWrite(A0, HIGH) = (ten_hours & 1);
	analogWrite(A1, HIGH) = (ten_hours & 3) >> 1;
}	

C:\Users\matte\AppData\Local\Temp\.arduinoIDE-unsaved2024320-9680-v6597.9j4lk\sketch_apr20a\sketch_apr20a.ino: In function 'void loop()':
C:\Users\matte\AppData\Local\Temp\.arduinoIDE-unsaved2024320-9680-v6597.9j4lk\sketch_apr20a\sketch_apr20a.ino:64:15: error: invalid use of 'void'
   digitalWrite(i , HIGH) = (single_mins && pow(2, i-10)) >> (i-10);
   ~~~~~~~~~~~~^~~~~~~~~~
C:\Users\matte\AppData\Local\Temp\.arduinoIDE-unsaved2024320-9680-v6597.9j4lk\sketch_apr20a\sketch_apr20a.ino:68:15: error: invalid use of 'void'
   digitalWrite(i , HIGH) = (ten_mins && pow(2, i-7)) >> (i-7);
   ~~~~~~~~~~~~^~~~~~~~~~
C:\Users\matte\AppData\Local\Temp\.arduinoIDE-unsaved2024320-9680-v6597.9j4lk\sketch_apr20a\sketch_apr20a.ino:72:15: error: invalid use of 'void'
   digitalWrite(i , HIGH) = (single_hours && pow(2, i-3)) >> (i-3);
   ~~~~~~~~~~~~^~~~~~~~~~
C:\Users\matte\AppData\Local\Temp\.arduinoIDE-unsaved2024320-9680-v6597.9j4lk\sketch_apr20a\sketch_apr20a.ino:74:13: error: invalid use of 'void'
  analogWrite(A0, HIGH) = (ten_hours & 1);
  ~~~~~~~~~~~^~~~~~~~~~
C:\Users\matte\AppData\Local\Temp\.arduinoIDE-unsaved2024320-9680-v6597.9j4lk\sketch_apr20a\sketch_apr20a.ino:75:13: error: invalid use of 'void'
  analogWrite(A1, HIGH) = (ten_hours & 3) >> 1;
  ~~~~~~~~~~~^~~~~~~~~~

exit status 1

Compilation error: invalid use of 'void'
        digitalWrite(i, HIGH) = (single_mins && pow(2, i - 10)) >> (i - 10);

Konstrukte dieser Art sind nicht korrekt. Man darf einer Funktion (die in diesem Fall void ist, also keinen Wert zurückliefert) nichts zuweisen.

        digitalWrite(i, HIGH);
        // irgendwas mit 
        // (single_mins && pow(2, i - 10)) >> (i - 10);
1 Like

Puh, das habe ich nicht ganz verstanden mit dem void. Hat es was mit dem Void loop zutun?

Was muss ich denn genau ändern? Vlt versteh ich es dann besser..

Nein, das hat nix mit der Funktion void loop() zu tun, sondern mit den Funktionen void digitalWrite() und void analogWrite(). Die brauchst Du nur nicht selbst deklarieren wie loop, das passiert im Hintergrund.
Man kann es aber z.B. in der verlinkten Dokumentation daran erkennen, denn da steht

Keine Ahnung, ich kann Deiner Zeile nicht entnehmen was Du vorhast.
Das Setzen eines Port-Pins ist jedenfalls nur ein Aufruf von ´digitalWrite()`, abgeschlossen mit einem Semikolon - wie ich oben schrieb.

1 Like

Die elementarsten Grundlagen der Sprache lernen. Kennst Du das?

Gruß Tommy

Ja okay danke jetzt bin ich erleuchtet, mach ich kurz.
Wenn ich fertig bin mach ich vlt. eine Dokumentation über nutzlose Antworten und dumme Fragen (Beispiele hab ich ja schon, woraus ich viele Schlüsse ziehen kann).

Dann bitte hier verlinken; ich freue mich drauf!
Und tschüss!

War nicht an dich gerichtet @wno158 , du hast mir ja wenigstens geholfen, thx!

Dem "und tschüss" schließe ich mich an.

Gruß Tommy

Man kann einen Arduino schlicht nicht in Betrieb nehmen, ohne die grundlegendsden Prinzipien/Syntax der verwendeten Programmierprache ( hier C++ ) zu verstehen.
Was Du da geschrieben hast, ist - im Sinne der Programmiersprache - vollkommener Blödsinn. Das versteht der Compiler nicht, und kann damit auch keine vernünftige Fehlermeldung ausgeben.
Man kann daraus leider auch nicht entnehmen, was Du dir dabei gedacht hast, und was das bezwecken soll. Das ist ja auch das, was @wno158 bereits geschrieben hat. Und ohne zu wissen, was Du da eigentlich vorhast, kann man auch keine Vorschläge zur Korrektur machen.
Der Link von @Tommy56 führt zu einer recht einfach geschriebenen Einführung in die Sprache C++. Damit wirst Du kein C++ Experte, aber wirst dich zumindest 'verständigen' können und nicht mehr solch grundlegende Fehler machen. Durchlesen lohnt sich - somit eine durchaus hilfreiche Antwort.

2 Likes

Was ist da dumm?
Mit solchem Auftritt machst Dir nur Feinde im Forum.

Ob ich es kenne, die elementaren Grundlagen einer Sprache zu lernen ist meiner Meinung nach am Thema vorbei.

Na ja dann viel Erfolg.

Bei jedem Hobby oder jeder Freizeitbeschäftigung wird man nicht umhinkommen, die elementaren Grundlagen des jeweiligen Hobbys zu lernen. Wenn Du das nicht willst, hast Du 2 Möglichkeiten:

  • leg den Arduino wieder beiseite und lass es sein
  • oder lass dir hier gegen einen entsprechenden Obulus deine Wünsche realisieren.

Ich hab den Code eigentlich für C (Matlab) geschrieben und wollte ihn auf C++ändern/anpassen. Der nette Nutzer @wno158 hat mich freundlich und hilfreich auf meine Fehler hingewiesen. Dann kommt jmd und meint, er müsse einfach seinen unnützlichen Beitrag zugeben. Ich kenne die Grundlagen von C++, ich wollte jedoch etwas ausprobiere, was darüber hinaus geht, um mir den Code zu vereinfachen. Mir ist jetzt klar, dass es so nicht geht und jetzt werde ich es halt anderweitig probieren mit den Tipps von @wno158 .
Trotzdem danke für alle Antworten:) !

Sehr nützlich, ich kannte das noch nicht. Wird alles sehr gut erklärt. Da ich ein absoluter Anfänger bin kann ich das sehr gut brauchen. Von meiner Seite vielen Dank für den Link

Es gibt noch eine etwas abstraktere Referenz, die aber gut zum Nachschlagen geeignet ist.
Basis ist C++ und auf Dauer kommt man an einem guten und aktuellen C++-Buch nicht vorbei.

Gruß Tommy

Die Sache mit pow( 2, i ) solltest du, falls es nicht durch die vorgeschlagene Änderung
digitalWrite(i, HIGH);
ersatzlos rausgeflogen ist, nochmal überdenken.

Die Funktion pow nimmt Gleitkommazahlen als Parameter und liefert eine Gleitkommazahl zurück.
Das braucht kein Mensch und macht Probleme durch Abschneiden statt Runden, wenn man nicht daran denkt.
Wenn es um Bits geht, werden diese durch einfache shift-Operationen an die richtige Stelle gesetzt.

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.