Arduino neue loops erstellen?

1 Antwort

Du solltest zu deinen Frage-Tags noch sowas wie "programmieren" oder "C" schreiben, dann hättest du jetzt schon längst eine Antwort.

Zu deiner Frage, dein Loop{} ist nichts anderes als ein endlose While-Schleife. Das bedeutet, um dein Problem zu lösen, führst du 2 while-schleifen ein:

int modus = 0;

loop{
while(modus == 0){
modus = Serial.read(); //je nach dem über welche schnittstelle du den Modus wechseln willst
}

while(modus == 1){
modus = Serial.read();
}
}

Serial.read() ist die Schnittstelle zu deinem Computer, es ist natürlich dir überlassen wie du den Modus wechselst. Kann schließlich auch über ein Taster/Schalter gewechselt werden.

Ansonsten, frag nach.

Was ist falsch an meinem Arduino Programm?

Meine Arduino Rolladensteuerung soll bei einmaligem klicken auf den taster den rolladen ganz herunter fahren danach kann man ihn über den gleichen Taster wieder hochfahren. Nun das meiner Meinung nach komplizierte: Während der Rolladen auf dem weg nach oben oder unten ist soll er stehen bleiben und bei weiterem klicken wieder weiterfahren allerdings in die entgegengesetzte Richtung. Wie würdet ihr das Programmieren bzw was ist an meinem Programm (siehe unten) Falsch? Ich weis was mit den millis() nicht stimmt aber wie könnte man das lösen? bitte um schnelle Antwort :)

Hier das Programm :

int Taster = 0;

int R1 = 1;

int R2 = 2;

int Status = 0;

int Unterwegs = 0;

int gestoppt = 0;

int R1_gestoppt = 0;

int R2_gestoppt = 1;

 int T1 = 0;

 int T2 = 0;

 int T3 = 0;

 int T4 = 0;

void setup() {

 pinMode(Taster, INPUT);

 pinMode(R1, OUTPUT);

 pinMode(R2, OUTPUT);

 digitalWrite(R1, HIGH);

 Unterwegs = 1;

 delay(3000);

 Unterwegs = 0;

 digitalWrite(R1, LOW);

 Status = 1;

 Serial.begin(9600);

}

void loop() {

Serial.print("Taster:"); Serial.println(digitalRead(Taster));

Serial.print("Status:"); Serial.println(Status);

Serial.print("Unterwegs:"); Serial.println(Unterwegs);

Serial.print("Gestoppt:"); Serial.println(gestoppt);

Serial.print("R1 gestoppt:"); Serial.println(R1_gestoppt);

Serial.print("R2 gestoppt:"); Serial.println(R2_gestoppt);

   if (digitalRead(R1) == HIGH) {

 digitalWrite(R2, LOW);} else {

 if (digitalRead(R2) == HIGH){

 digitalWrite(R1, LOW);}}

if (digitalRead(Taster) == HIGH) {

  if (Status == 1) {

  digitalWrite(R2, HIGH);

  R1_gestoppt = 0;

  R2_gestoppt = 0;

  Unterwegs = 1;

  T1 = millis();

  if (digitalRead(R2) == HIGH && (millis()-T1) >=3000) {

   Unterwegs = 0;

   digitalWrite(R2, LOW);

   Status++;}} else {

     if (Status == 2) {

   digitalWrite(R1, HIGH);

   R1_gestoppt = 0;

   R2_gestoppt = 0;

   Unterwegs = 1;

   T2 = millis();

   if (digitalRead(R1) == HIGH && (millis()-T2) >=3000) {

   Unterwegs = 0;

   digitalWrite(R1, LOW);

   Status = 1;}}}}

   

   if (Unterwegs == 1) {

   if (digitalRead(Taster) == HIGH) {

   if (digitalRead(R1) == HIGH) {

       digitalWrite(R1 ,LOW);

       R1_gestoppt = 1;

       R2_gestoppt = 0;

       gestoppt = 1;} else {

   if(digitalRead(R2) == HIGH) {

       digitalWrite(R2, LOW);

       R1_gestoppt = 0;

       R2_gestoppt = 1;

       gestoppt = 1;}}

  if (gestoppt == 1) {

  if (digitalRead(Taster) == HIGH) {

  if (R1_gestoppt == 1) {

      digitalWrite(R1, LOW);

      digitalWrite(R2, HIGH);

      R1_gestoppt = 0;

      R2_gestoppt = 0;

      T3 = millis();

      if (digitalRead(R2) == HIGH && (millis()-T3) >=3000) {

      digitalWrite(R2, LOW);

  }} else {

  if (R2_gestoppt == 1) {

      digitalWrite(R2, LOW);

      digitalWrite(R1, HIGH);

      R2_gestoppt = 0;

      R1_gestoppt = 0;

      T4 = millis();

      if (digitalRead(R1) == HIGH && (millis()-T4) >=3000) {

      digitalWrite(R1, LOW);}}}}}}}}

                     

                     

    

...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 4x4 Keypad?

#include <Keypad.h>

const byte ROWS = 4; //four rows

const byte COLS = 4; //three columns

char keys[ROWS][COLS] = {

 {'1','2','3','A'},

 {'4','5','6','B'},

 {'7','8','9','C'},

 {'','0','#','D'}

};

byte rowPins[ROWS] = {2, 3, 4, 5}; //connect to the row pinouts of the keypad

byte colPins[COLS] = {6, 7, 8, 9}; //connect to the column pinouts of the keypad

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );// 也是初始化对象

void setup(){

 Serial.begin(9600);

}

void loop(){

 char key = keypad.getKey();

 if (key != NO_KEY){

  Serial.println(key);

}

Ich habe die 8 pins nach der Reihenfolge von 2,3,4,5,6,7,8,9 pins von Arduino reingesteckt.n Aber ist nichts nach dem Eingeben aufgetraten.







...zur Frage

Warum stoppt der Arduino Infrarotempfänger plötzlich mit der Datenausgabe?

Hallo liebe Community, Vor kurzem habe ich eine Schaltung zur Steuerung 2 Motoren mithilfe von Infrarot aufgebaut und einen Code geschrieben.

Vom Prinzip her funktioniert der Code und die Schaltung. Nun kommt es aber zu folgendem Problem: Immer wenn ich per Fernbedienung den Code sende, er soll einen Motor vorwärts und einen Rückwärts laufen lassen, dann macht er das, nimmt aber keine weiteren Signale mehr auf und ich muss das Board zurücksetzen...

Die Motoren Simmuliere ich mit jeweils 2 LEDs (Eine vorwärts, eine Rückwärts).

Kann mir jemand helfen?

Hier der Code :

#include <IRremote.h>;

const int RFENGINE = 5;

const int RBENGINE = 10;

const int LFENGINE = 6;

const int LBENGINE = 9;

const int RECV_PIN = 3;

IRrecv(RECV_PIN);

decode_results results;

void setup()

{

pinMode(RFENGINE,OUTPUT);

pinMode(RBENGINE,OUTPUT);

pinMode(LFENGINE,OUTPUT);

pinMode(LBENGINE,OUTPUT);

irrecv.enableIRIn();

Serial.begin(9600);

}

void startEngine(int leftf,int leftb, int rightf, int rightb)

{

analogWrite(LFENGINE,leftf);

analogWrite(LBENGINE,leftb);

analogWrite(RFENGINE,rightf);

analogWrite(RBENGINE,rightb);

}

void loop()

{

if(irrecv.decode(&results))

{

  Serial.println(results.value,DEC);

  if(results.value == 16718055)   //Vorwärts

  {

     startEngine(100,0,100,0);

   }

   else if(results.value == 16726215)  //Rechtsum

   {

     startEngine(100,0,0,100);

    }

    else if(results.value == 16716015)  //Linksum

    {

      startEngine(0,100,100,0);

    }

      else if(results.value == 16730805) //Zurück

    {

       startEngine(0,100,0,100);

     }

    else

      Serial.println("UNBEKANNTER BEFEHL");

    irrecv.resume();

    }

}

Lg Niko

...zur Frage

Arduino servo pogramiren?

Moin, Moin 

Ich würde gerne mit einem servo die klappe schlissen und wieder öffne und wieder schlissen (auf Knopfdruck).

Kann mir wer sagen wie man das programmiert, oder kann mir das wer bitte für den Arduino nano Programmieren?

Danke schon mal im voraus :)

(ich habe das schon mal so etwas gemacht)

#include <Servo.h>

Servo motor1;

void setup()

{

 motor1.attach(9);               

}

void loop()

{

 motor1.write(0);

 delay(3000);

 motor1.write(90);

 delay(3000);

}

...zur Frage

Geschwindigkeit mit Arduino messen

Hallo zusammen!

Ich möchte bei einer Carrera Rennautobahn eine Geschwindigkeitsmessung einbauen. Dafür hab ich auch schon die Sensoren verbaut und richtig verkabelt. Hier ist mein Programm:

void loop()
{
 digitalWrite(8,HIGH);
 Zustand_A1 = analogRead(A1);
 Zustand_A2 = analogRead(A2); 
 if(Zustand_A1 < 10)
 {
  Start = millis();
  digitalWrite(LED3, HIGH); 
 }
 if(Zustand_A2 < 10)
 {
  Ende = millis(); 
  digitalWrite(LED4, HIGH);
 }
 Ergebnis = Ende - Start;
 

wie oben ersichtlich, habe ich die Sensoren eingelesen und nach jedem die millis() eingelesen und später dann die Differenz berechnet. Doch leider funktioniert das nicht.

Hat jemand Lösungsvorschläge?

LG

der freakige

...zur Frage

Was möchtest Du wissen?