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

6 Antworten

Du könntest die Programmteile natürlich einfach in einen zusammen kopieren und als ein sketch kompilieren. Aber mal ganz davon abgesehen, ist das eine unglaublich unsichere und absolut nicht empfehlenswerte Umsetzung eines Programmes für ein Key-Pad. So kann man einfach durch dreimalige Eingabe von 0-9 das Schloss öffnen.

Denn bei einer Falscheingabe wird diese Abfrage

if (key == password[position]) {
position ++;
}

nicht ausgewertet, die Falsche Eingabe ignoriert und die nächste Zahl eingelesen. Das Gleiche  gilt für die if Abfrage bei password2.

HI,
Du kannst es folgender Maßen machen:

Erst alle Variablen definieren etc., dann das void Setup mit dem Setup für beide Programmteile.

Anschließend:

void "code1" {
   (hier den Code des einen Programms rein)
}

void "code2"  {
   (Hier den Code des anderen Programms rein)
}

void loop {
   code1;
   code2;
}

So rufst du in deinem void Loop die vorher initialisierten Unterprogramme "code1" und "code2" auf. Du kannst den void loop auch noch beliebig erweitern🙃

Oben die Namen der void(s) ohne Anführungszeichen!(code1 &code2)

Ich hoffe ich konnte dir weiter helfen.
Für Rückfragen bin ich jeder Zeit offen.

LG, Paul

Soweit ich das verstanden habe steht im Code 1 das du ein Numpad hast und auf dem ein Zahlencode eingeben musst umd ein Schloss zu entriegeln. Der Code 2 ergibt für mich aber kein relevanten Sinn zu Code 1. Der erste Code läuft auf jeden Fall auch ohne Code 2. Kannst du mir sagen was COde 2 bewirken soll?

code 1 keypad code 2 fotowiderstandlichtschranke

0

Wie kann ich bei Arduino mit einer Taste eine LED ein oder ausschalten?

#include <IRremote.h>

int irPin = 2; int ledPin = 13; IRrecv irrecv(irPin); decode_results results;

void setup() { irrecv.enableIRIn(); pinMode(ledPin, OUTPUT); }

void loop() { if (irrecv.decode(&results)) {

switch(results.value) { case 0x802000FF: digitalWrite(ledPin, LOW); break;

      case 0x8020807F:
        digitalWrite(ledPin, HIGH);
        break;

      default:
        break;
   }
   irrecv.resume();
}

}

...zur Frage

Wie kann ich bei Arduino uno eine led mithilfe eines tasters ein und aus schalten?

Ich habe von meinem Freund ein Arduino bekommen da ich etwas für ihn machen muss. Ich kenne mich eig. mit programmieren aus aber bei arduino nich so. habe im Anhang ein bild von meinem Steckplan. Das Problem ist es funktioniert irgendwie nicht. Hier das Programm:

const int buttonPin = 2;
const int ledPin = 13;
int buttonState = 0;

void setup() {

pinMode(ledPin, OUTPUT);

pinMode(buttonPin, INPUT); }

void loop() { buttonState = digitalRead(buttonPin); if (buttonState == HIGH) { digitalWrite(ledPin, HIGH); } else { digitalWrite(ledPin, 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

Wieso funktioniert dieser zufallsgenerator bei Arduino nicht?

Hallo zusammen!

Ich möchte bei einer Rennautobahn eine Ampel bauen. Um es spannender zu gestalten möchte ich, das die letzte LED nach einer zufällig gewählten Zeit (zwischen 1 und 4 sekunden) . Zum steuern verwende ich einen Arduino Mega und zum programmieren das Arduino Programm. das nachfolgende Programm haben ich schon in C# getestet und dort funktioniert es, nur leider nicht im Arduino Programm.

const int intRot13 = 1;
const int intRot12 = 2;
const int intRot11 = 3;
const int intRot10 = 4;
const int intRot9 = 5;

void setup()
{
  pinMode(intRot13, OUTPUT);
  pinMode(intRot12, OUTPUT);
  pinMode(intRot11, OUTPUT);
  pinMode(intRot10, OUTPUT);
  pinMode(intRot9, OUTPUT);
}

void Zufall(byte bytAmpel)
{
 int Zahl1 = 0;
 random Rnd = new random();
 Zahl1 = Rnd.Next(1000, 4000)
}

void loop()
{
  digitalWrite(1, HIGH);
  delay(1500);
  digitalWrite(2, HIGH);
  delay(1500);
  digitalWrite(3, HIGH);
  delay(1500);
  digitalWrite(4, HIGH);
  delay(1500);
  digitalWrite(5, HIGH);
  delay(Zufall());
  delay (3000);
  digitalWrite(1, LOW);
  digitalWrite(2, LOW);
  digitalWrite(3, LOW);
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);
}

Wäre für jede Hilfe dankbar!

...zur Frage

Was ist an diesem Arduino programm falsch?

void setup() { pinMode(13, OUTPUT); pinMode(12, INPUT); }

void loop() { if ( 12 = HIGH) digitalWrite(13, HIGH); }

Fehlermeldung: Arduino: 1.6.8 (Windows 10), Board: "Arduino/Genuino Uno"

C:\Users-----------\Desktop\Arduino Projekte\IF_Befehl_Test\IF_Befehl_Test.ino: In function 'void loop()':

IF_Befehl_Test:7: error: lvalue required as left operand of assignment

if (12 = HIGH) digitalWrite(13, HIGH);

    ^

exit status 1 lvalue required as left operand of assignment

Dieser Bericht wäre detaillierter, wenn die Option "Ausführliche Ausgabe während der Kompilierung" in Datei -> Voreinstellungen aktiviert wäre.

...zur Frage

Arduino Roboter. IF Schleife bei Ereignis unterbrechen und andere ausführen. Wie?

Guten Tag,

habe soeben meinem Roboter auf Arduino Basis seine Bumper verpasst. Nun würde ich diese gerne mit einem simplen Programm testen, jedoch sind meine Kenntnis in Sachen programmieren nahezu null :x.

Folgendes möchte ich erreichen:

Fahre vorwärts

Bei Ereignis vom Bumper vorne links

  • fahre kurz zurück
  • drehe rechts

Sollte während der Rückwärtsfahrt ein Ereignis der Bumper hinten auslösen:

  • stoppe
  • fahre ein kleines Stück vor
  • drehe

Fahre weiter vorwärts

Bei Ereignis vom Bumper vorne rechts

  • fahre kurz zurück
  • drehe links

Sollte während der Rückwärtsfahrt ein Ereignis der Bumper hinten auslösen:

  • stoppe
  • fahre ein kleines Stück vor
  • drehe

Fahre weiter vorwärts

Ich hoffe es ist verständlich was ich erreichen möchte.^^ Probleme bereitet mir hier die IF Anweisung zu unterbrechen und etwas anderes auszuführen. Ich weiß auch nicht wonach ich via Suchmaschine suchen soll. Ein kleiner Tip in die richtige Richtung würde mir schon weiterhelfen. :-)

Anbei habe ich ein Screenshoot meines bisherigen Programms gehängt.

...zur Frage

Was möchtest Du wissen?