Wo habe ich einen fehler?

Hallo:) ich habe ein Projekt in der Schule, wo ich mit verschiedenen Sensoren ein Haus simulieren muss. Leider habe ich bei den "rolladen" einen Fehler im Code, welchen ich einfach nicht rausbekomme. Ich wollte das wenn ich auf den Taster drücke, der motor angeht. Nun bin ich leider neu im thema arduino und kann meinen fehler in meinem Code nicht finden. Warscheinlich liegt es an der if schleife. Hier der folgende Code:

int i;
int sensor = A0;
int val = 0;
int limit = 50;
int sensori = A1;//temperatursensor
float messwert;
float temperatur;

void setup(){
pinMode(3, OUTPUT); //motor, rolladen
pinMode(4, OUTPUT);
pinMode(6, OUTPUT);
pinMode(11, INPUT_PULLUP);
pinMode(2, OUTPUT); //motor 2
pinMode(5, OUTPUT);
pinMode(7, OUTPUT);
pinMode(12, INPUT_PULLUP);

Serial.begin(9600); // rauchmelder

i=digitalRead(11);

if(==0){

Serialprintln(1);// motor
analogWrite(6, 150);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
delay(2000);
analogWrite(6, 0);
delay(2000);}

i=digitalRead(12);

if (i==1){

Serialpritnln(0);
analogWrite(5, 150);
digitalWrite(2, HIGH);
digitalWrite(7, LOW);
delay(2000);
analogWrite(5, 0);
delay(2000);}
}

void loop(){

val = analogRead(sensor); // rauchmelder
val = map(val, 306, 750, 0, 150);

if (val > limit) {
tone(8, 600);
}
delay(350);
noTone(8);

messwert = analogRead(sensori); //temperatursensor
temperatur = (messwert*200)/409-50;
Serial.println(temperatur);
delay(500);
}

Danke im Vorraus:)

http://if-schleife.de/

Dann noch:

int sensor = A0;
int val = 0;
int limit = 50;
int sensori = A1;//temperatursensor
float messwert;
float temperatur;

void setup(){
pinMode(3, OUTPUT); //motor, rolladen
pinMode(4, OUTPUT);
pinMode(6, OUTPUT);
pinMode(11, INPUT_PULLUP);
pinMode(2, OUTPUT); //motor 2
pinMode(5, OUTPUT);
pinMode(7, OUTPUT);
pinMode(12, INPUT_PULLUP);

Gib den Pins Namen.

Der Code ist soweit - so gut.
Aber wenn er nicht tut, musst Du in den Zeilen auch Kommentare schreiben, was du da erwartest. Dann kann man das ggfls. schneller lösen....

Ich rate dir...
Lass bitte die magischen Zahlen weg.

Beispiel:

pinMode(2, OUTPUT); //motor 2

Besser:
Global: const byte motorPin = 2;
Setup: pinMode(motorPin, OUTPUT);

Dann kann man/ich evtl. besser verstehen, was du da tust.

int i;

i, j, k, sind dank weltweiter und Sprachübergreifender Vereinbarung Schleifen Laufvariablen.
Eine anderweitigen Verwendung ist eher nicht angesagt.

Die Kollegen waren schneller, habe zu lange für meinen Sermon gebraucht. Hier ist er trotzdem.


Moin.
Da sind so ein paar Sachen die wir formal noch verbessern müssen.
Zuerst: Code kommt in Code-Tags. Das ist auf einer eigenen Zeile [code] vor Deinem Programm und eine zusätzliche Zeile [/code] dahinter. Hilfsweise gehen auch jeweils drei von diesen komisch schrägen Apostrophen.

```
Hier kommt der Code
```

Das kannst Du in Deinem Post durch Editieren noch selbst in Ordnung bringen.

Zweitens: Es gibt keine if-Schleife.

Und jetzt zu Deinem Programm.
Zeile 23: Da fehlt in der Bedingung das was Du auf 0 testen willst:

	if(==0){

Es gibt keine Funktion Serialprintln, das muss Serial.println heißen.

In Zeile 37 ist zusätzlich noch ein Tippfehler, Dein Code wird also so nicht mal kompilieren, sodass auch die Tastenfunktion nicht geprüft werden kann.

		Serialpritnln(0);

Ich empfehle übrigens dringend, schließende Klammern nicht auf einer Zeile mit Code zu schreiben, sondern eine eigene Zeile zu spendieren:

	delay(2000);}

Allgemein üblich sind

  if (i == 0) {
    Serial.println(1);// motor
  }

oder

  if (i == 0) 
  {
    Serial.println(1);// motor
  }

(Letzteres wird von mir und wenigen anderen hier bevorzugt)

Dann mal ran an den Speck - Code überarbeiten, kompilierbar machen und dann gerne wiederkommen :slight_smile:


Gruß Walter

[OT!]

Machst Du manuell oder über AStyle?

Da nennt sich "Allmann Stil" oder so ähnlich.
Kann man übrigens auch der IDE beibringen.

Kann mich noch gut daran erinnern, wie mir das hier im Forum eingeschenkt wurde.
(mir ist er da ähnlich doof gekommen)

Unsinn! Und das weisst Du genau. Aber so ist das nu mal mit einem Feindbild. Du wirst es demnächst nicht mehr benötigen.

Zum nachlesen:

Ich habe es der IDE beigebracht.
Ganz kurz (für Win10) und dann ist für mich auch fertig mit OT:
Datei formatter.conf aus dem Verzeichnis C:\Program Files (x86)\Arduino\lib nach C:\Users\wno\AppData\Local\Arduino15 kopiert und darin eine neue Zeile mit dem Style eingefügt:

...
# If you don't know where file preferences.txt is stored, open the IDE, File -> Preferences and you'll find a link

mode=c
style=allman

# 2 spaces indentation
indent=spaces=2
...

Dieses:

Das habe ich als rotzfrech und überheblich empfunden.

Aber das ist halt deine Art und Weise....

Für mich auch.

So ist das nun mal.
Du hast es nicht empfunden. (Präteritum)
Dein Empfinden leitet Dich bis in die Gegenwart.
Ich kann damit umgehen.

Das Du nie verstanden hast das ich mich inhaltlich getäuscht haben könnte, nachdem Du seit Jahren aktiv bist, und auch gerne austeilst wenn es um die Frage der "Verwendung der Sprache die Du nutzt" geht, war ich davon ausgegangen das Dir die IDE die Du nutzt in Fleisch und Blut gegangen ist.

Ich habe mich damals getäuscht. Das hab ich mitgenommen - das wars. Gut. Und nu?

Mein Sohn!
Punkt 1: Ich bin dir dankbar, dass du mir den Tipp gegeben hast.
Punkt 2: Die Art und Weise finde ich zum kotzen.

Und jetzt, noch wichtiger:
Der Thread heißt: Arduino IDE Feinheiten und Tricks!
Anstatt den Trick sofort öffentlich zu erklären, nutzt du die Situation, um mir einen einzuschenken.
Grrr....

Aber dass dir der jeweilige Sinn eines Threads am Arsch vorbei geht, konnten wir hier schon öfter sehen. Selbstdarstellung ist halt auch wichtig.

So, und jetzt ist auch wirklich Ende mit OT.
Werde hier nicht mehr auf dein .... reagieren.

was ist hier passiert :,)

dankeschön!!

Vielen dank, ich melde mich dann:)

So eine Art Innenwelt Orbit.

Aber jetzt bist du wieder dran...
Hast meine volle Aufmerksamkeit.

Hast du die Umbauten gemacht?

Ok.
Dann will ich das mal noch vertiefen..


const byte sensor = A0; // Zu was ist der PIN da?
const byte sensori = A1; //temperatursensor

const byte motorPinRlAuf = 3; // Stimmt das?
const byte motorPinRlZu = 4; // Stimmt das?

bool val = false;
bool wert;
unsigned int limit = 50;

float messwert;
float temperatur;

void setup() {
  pinMode(motorPinRlAuf, OUTPUT); //motor, rolladen
  pinMode(motorPinPlZu, OUTPUT);
  
  pinMode(6, OUTPUT);
  pinMode(11, INPUT_PULLUP); 
  pinMode(2, OUTPUT); //motor 2
  pinMode(5, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(12, INPUT_PULLUP);

Ich hab mir ja schon was zurechtgetackert, aber das kann nicht stimmen.

Sag mir bitte, was die Pins für eine Funktion haben:
A0 3,4,11,12,

An A1 kommt ein Analogwert von was für einem Sensor?
Was haben die OutputPin 2,3,4,5,6,7 für eine Funktion?

Willst Du das?

Leute bitte nicht zanken :anguished:
NÖÖÖÖÖÖÖ!

eine frage: wäre es für dich möglich deine telefonnummer rauszugeben damit wir über den Code sprechen können? :slight_smile:

Eine Frage : Könntest du evtl deine Telefonnummer rausgeben um über den Code zu sprechen haha :slight_smile: