Ist dieser Arduino Code richtig?

4 Antworten

der code ist zwar nicht schön aber so auf den ersten blick würde ich sagen das das gehen müsste. vermute das der bew. melder kein signal ausgibt an die beiden eingänge. ich würde das mal mit einem taster ausprobieren

Wenn das der Code original aus dem Arduino ist, dann ist da ein Fehler drin. Loop-Teil und Setup-Teil dürfen so nicht stehen und bei Setup fehlt das void setup ()

Es ist immer von Vorteil, den Code einfach als ganzen zu kopieren und hier als Code zu posten (Hinter den Punkten verbergen sich über dem Textfeld ein paar Optionen. Quelltext erstellt so eine Box, die für Code usw wesentlich von Vorteil ist...

So sieht der Code dann aus, wenn man Quelltext nutzt.. ;) (Nur Beispielcode zum zeigen)

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
}

Oder auf Pastebin.com posten und hier den Link einfügen...

Loop-Teil und Setup-Teil dürfen so nicht stehen

Was meinst du damit?

0
@Halllomenschen

Die Wörter an sich... "Loop-Teil" und "Setup-Teil" werden nicht unterstützt. Als Anmerkung müssen // davor, wenn das so im Code steht (Wortwörtlich).

Ich weiß ja nicht, ob Du das nur hier gegliedert hast, oder so tatsächlich im Code steht.

Aber ich hab schon gelesen, das es mit einem Taster funktioniert. Dann ist der Code ja erst mal wohl richtig (ohne diese Würter im Code)... :)

0
@RareDevil

Ne ich habe das hier nur gegliedert und das wo ich das void setup() vergessen habe, das hatte ich schon nur vergessen zu kopieren

1
@Halllomenschen

Nun, wenn ich das jetzt richtig mitbekommen habe, und es mit Tastern (Brücke) funktioniert, musst Du mal schauen, wie die Bewegungsmelder arbeiten. Und ob die überhaupt arbeiten. Und Du hast noch ein Problem. Du benutzt Delay für 5sek. In dieser Zeit kann der andere Eingang nicht gelesen und verarbeitet werden. Also wenn ein Bewegungsmelder angesprochen hat, reagiert der andere erst, wenn der eine wieder aus ist und der Code weiter läuft... Beide zusammen können nicht erfasst werden...

0
@Halllomenschen

Naja, ich denke, die sollen schon 5sek leuchten. Wenn beide Bewegungdmelder unabhängig funktionieren sollen, brauchst Du einen alternativen Timer für die zwei Bewegungsmelder. Delay stoppt den Arduino und es wird kein weiterer Code verarbeitet. Such mal nach "Bilnken ohne Delay", da gibt es z.B. eine alternative zu Delay. Es gibt aber auch noch viel mehr im Netz dazu...

0

schreibe lieber am anfang

int=i=9;

int=i2=10 ;

usw

.

.

.

;D

Arduino stürtzt bei folgenden sketch ab (unten). Wo liegt der Fehler? (Edit: es stürtzt nach der bewegung des schrittmotors ab)?

Hier der sketch

int ustrig=2;

int usecho=7;

long dauer=0;

long entfernung=0;

#include <Stepper.h> 

int SPU = 2048; 

Stepper Motor(SPU, 3,5,4,6); 

#include <Servo.h>

Servo servoBlau;

Servo servoGros;

void setup() {

Motor.setSpeed(5); 

Serial.begin (9600); 

pinMode(ustrig, OUTPUT); 

pinMode(usecho, INPUT);

servoBlau.attach(8);

servoGros.attach(9);

}

void loop() {

 Motor.step(512); //1/4

delay(2000);

digitalWrite(ustrig, LOW); 

digitalWrite(ustrig, HIGH);

digitalWrite(ustrig, LOW);

dauer = pulseIn(usecho, HIGH); 

entfernung = (dauer/2) * 0.03432; 

if (entfernung >= 500 || entfernung <= 0) 

{

Serial.println("Kein Messwert"); 

}

else 

{

Serial.print(entfernung); 

Serial.println(" cm"); 

delay(1000);

 servoGros.write(180);

delay(3000);

servoBlau.write(135);

delay(3000);

servoGros.write(90);

delay(3000);

servoBlau.write(45);

delay(3000);

servoGros.write(180);

}

Motor.step(-512); //1/4

delay(2000);

digitalWrite(ustrig, LOW); 

digitalWrite(ustrig, HIGH);

digitalWrite(ustrig, LOW);

dauer = pulseIn(usecho, HIGH); 

entfernung = (dauer/2) * 0.03432; 

if (entfernung >= 500 || entfernung <= 0) 

{

Serial.println("Kein Messwert"); 

}

else 

{

Serial.print(entfernung); 

Serial.println(" cm"); 

delay(1000);

 servoGros.write(180);

delay(3000);

servoBlau.write(135);

delay(3000);

servoGros.write(90);

delay(3000);

servoBlau.write(45);

delay(3000);

servoGros.write(180);

}

}

...zur Frage

wie kann ich zwei programme (sketes) zusammenführen Arduino?

ich will zwei programme zusamen führen wie kann ich das ?(beide programme fonktioniren einzeln) Hier sind die programme: 1. #include #include

Servo ServoMotor; char* password = "123"; // change the password here, just pick any 3 numbers char* password1 = "456"; char* password2 = "789"; int position = 0; const byte ROWS = 4; const byte COLS = 4; char keys[ROWS][COLS] = { {'1','2','3','A'}, {'4','5','6','B'}, {'7','8','9','C'}, {'*','0','#','D'} };

byte rowPins[ROWS] = { 8, 7, 6, 9 }; byte colPins[COLS] = { 5, 4, 3, 2 }; Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); int RedpinLock = 12; int GreenpinUnlock = 13;

void setup() { pinMode(RedpinLock, OUTPUT); pinMode(GreenpinUnlock, OUTPUT); ServoMotor.attach(11); LockedPosition(true); }

void loop() { char key = keypad.getKey(); if (key == '*' || key == '#') { position = 0; LockedPosition(true); } if (key == password[position]) { position ++; } if (key == password1[position]) { } if (key == password2[position]) { position ++; } if (position == 3) { LockedPosition(false); } delay(100); } void LockedPosition(int locked) { if (locked) { digitalWrite(RedpinLock, HIGH); digitalWrite(GreenpinUnlock, LOW); ServoMotor.write(11); } else { digitalWrite(RedpinLock, LOW); digitalWrite(GreenpinUnlock, HIGH); ServoMotor.write(90); } }

2.

int licht;

void setup() { Serial.begin(9600); pinMode(13,OUTPUT);

}

void loop() { // put your main code here, to run repeatedly: licht = analogRead(0); Serial.print (licht),delay;

if (licht < 940) { digitalWrite(13,HIGH); } else { digitalWrite(13, LOW); }}

...zur Frage

Wie behebt man diese Fehlermeldung beim Programm Energia?

int z= 0;

int a=0; int b=0; int c=0; int d=0; int e=0; int f=0; int g=0; int h=0;

int tasterPin1= 2; int tasterPin2= 13; int tasterPin3= 14; int tasterPin4= 5; int tasterPin5= 6; int tasterPin6= 7; int tasterPin7= 8; int tasterPin8= 9;

int startPin=10;

int alarmOut=12;

int testled= 3;

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

pinMode(tasterPin1, INPUT); pinMode(tasterPin2, INPUT); pinMode(tasterPin3, INPUT); pinMode(tasterPin4, INPUT); pinMode(tasterPin5, INPUT); pinMode(tasterPin6, INPUT); pinMode(tasterPin7, INPUT); pinMode(tasterPin8, INPUT);

pinMode(startPin, INPUT);

pinMode(alarmOut, OUTPUT);

}

void loop(){

while(startPin == HIGH); { z= random(1,9);} Serial.println(z);

//test start if (startPin == HIGH); {testled==HIGH;} //test ende

digitalWrite(alarmOut, LOW);

auswertung()

vergleichen()

void auswertung(){

if (tasterPin1 == HIGH); {goto vergleichen;} // Wenn Schalter gedrueckt wird die Variable von 0 auf 1 erhoeht usw...
 { a == 1;}

if (tasterPin2 == HIGH); {goto vergleichen;}
 {b == 2;}



if (tasterPin3 == HIGH); {goto vergleichen;}
  {c == 3;}



if (tasterPin4 == HIGH); {goto vergleichen;}
  {d == 4;}


if (tasterPin5 == HIGH); {goto vergleichen;}
  {e == 5;}



if (tasterPin6 == HIGH); {goto vergleichen;}
  {f == 6;}


if (tasterPin7 == HIGH); {goto vergleichen;}
  {g == 7;}  



if (tasterPin8 == HIGH); {goto vergleichen;}
  {h == 8;}

}

void vergleichen() {

if ((z == a ) || (z == b) || (z == c) || (z == d) || (z == e) || (z == f) || (z == g) || (z == h)) // Zufallszahl und gedrueckte Schalter werden verglichen

digitalWrite(alarmOut, HIGH); // LED BLinkt delay(250); digitalWrite(alarmOut, LOW); delay(250);

else { digitalWrite (alarmOut, LOW); {goto auswertung;} } } }

Die Fehlermeldung lautet:

sketch_jun28a.ino: In function 'void loop()': sketch_jun28a.ino:62:12: error: 'auswertung' was not declared in this scope sketch_jun28a.ino:65:1: error: expected ';' before 'vergleichen' sketch_jun28a.ino:124:1: error: expected '}' at end of input

Es soll ein "crocodoc" werden (das spiel bei dem man auf die zähne des Krokodils drückt, welches irgendwann zuschnappt).

...zur Frage

Arduino, 1 LED zum blinken bringen mit 2 Taster?

Hallo, ich habe ein Problem bei meinem Arduino, undzwar versuche ich 1 LED mit 2 Taster zu steuern, dass wenn ich z.B Taster 1 drücke es anfängt zu blinken(ohne delay, mit interval), und wenn ich Taster 2 dücke das die LED aufhört zu blinken.

Kann mir da jemand helfen, und mir sagen was an meinen Code falsch ist.

int ledPin=12;
int taster1=2;
int taster2=3;
int tasterstatus1=0;
int tasterstatus2=0;
bool value = LOW;
unsigned long previousMillis = 0;
unsigned long interval = 500;
void setup()
{
pinMode(ledPin, OUTPUT);
pinMode(taster1, INPUT);
pinMode(taster2, INPUT);
}
void loop() {   
tasterstatus1=digitalRead(taster1);   tasterstatus2=digitalRead(taster2);   
if (tasterstatus1 == HIGH){
value = false;
digitalWrite(ledPin, LOW);   
}   
if (tasterstatus2 == HIGH){
value = true;
}   
if ((millis() - previousMillis >= interval)&&(value==true)){
previousMillis = millis();
value = !value;
digitalWrite(ledPin, value);
 } 
}


Vielen Dank im Vorraus.

...zur Frage

Wie können wir dieses Arduinoreaktionsspiel richtig Programmieren?

Hallo liebe Comunity!

Wir entwickeln ein Spiel mit einem Arduino, jedoch komme ich mit dem Programmieren nicht weiter. Das Spiel läuft so ab: Es gibt jeweils 4 Spieler, die alle ein Button besitzen. In der Mitte befindet sich einer Holzplatte in der 1 Lämpchen integriert ist. Dieses Lämpchen soll zufällig aufleuchten. Wenn dieses Lämpchen leuchtet müssen die Spieler auf den Button drücken. Jeder Spieler hat ein Lämpchen, die in der Holzplatte integriert sind. Der Spieler, der zuerst auf den Button gedrückt hat, bei dem Leuchtet dann das Lämpchen und bei den anderen nicht. Dannach soll an einer anderen Holzplatte angezeigt werden wie schnell der gewonnene Spieler auf den Button gedrückt hat. Das wird durch 2 Lämpchen angezeigt. Lämpchen 1: von X bis X (gute Reaktionszeit) Lämpchen 2: von X bis X (schlechte Reaktionszeit)

sketch_mar04a / Arduino 1.0.6

// constants won't change. They're used here to // set pin numbers: const int buttonPin0 = 2; // the number of the pushbutton pin const int ledPin0 = 13; // the number of the LED pin const int buttonPin1 = 3; // the number of the pushbutton pin const int ledPin1 = 12; const int buttonPin2 = 4;

const int ledPin2 = 11; const int buttonPin3 = 5; const int ledPin3 = 10; int pushed = 1;

void setup() { // initialize the LED pin as an output: pinMode(ledPin0, OUTPUT);

// initialize the pushbutton pin as an input: pinMode(buttonPin0, INPUT);

// initialize the LED pin as an output: pinMode(ledPin1, OUTPUT);

// initialize the pushbutton pin as an input: pinMode(buttonPin1, INPUT); // initialize the LED pin as an output: pinMode(ledPin2, OUTPUT);

// initialize the pushbutton pin as an input: pinMode(buttonPin2, INPUT); // initialize the LED pin as an output: pinMode(ledPin3, OUTPUT);

// initialize the pushbutton pin as an input: pinMode(buttonPin3, INPUT);

}

void loop(){ int buttonState0 = 0; // variable for reading the pushbutton status int buttonState1 = 0; int buttonState2 = 0; int buttonState3 = 0;

// read the state of the pushbutton value: buttonState0 = digitalRead(buttonPin0);

// check if the pushbutton is pressed. // if it is, the buttonState is HIGH: if (buttonState0 == HIGH) {

// turn LED on:

digitalWrite(ledPin0, HIGH);

} else { // turn LED off: digitalWrite(ledPin0, LOW);

} ( // read the state of the pushbutton value: buttonState1 = digitalRead(buttonPin1); // check if the pushbutton is pressed. // if it is, the buttonState is HI

...zur Frage

Was möchtest Du wissen?