INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
vielleicht kann mir jemand helfen
21.02.2019, 16:57 (Dieser Beitrag wurde zuletzt bearbeitet: 21.02.2019 20:28 von Lois.)
Beitrag #1
vielleicht kann mir jemand helfen
Haben eine Sektch der leider nur nicht das macht was ich will

Wenn Led pin11 HIGH soll sich Servo einmal bewegen
irgend wie schaff ich das nicht . sobald Led pin 11 HIGH lässt sich Servo
nicht mehr Schalten auch nicht mit dem eigen Pin zum Schalten vom Servo

Code:
#include <Servo.h>  //Bibliothek zum ansteuern von Servo
Servo servo; //Servo Objekt erstellen (noch nicht initialisiert)

boolean pinstatus = LOW;
// Wird einmalig ausgefuert .
int pin11 = 11;
int pin10 = 10;
int pin12 = 12;
int pin6 = 6;
int press = LOW;

int position = 0; //Variable zum speichern von der aktuellen Position

const int waitTime = 60; //Zeit zum pausieren zwischen den einzelnen Schritten des Servos
const int waitTime1 = 80 ;
const int waitTime2 = 600 ;
int spiel = 0 ;
int ersterstart = 0 ;

void setup()
{
  pinMode(pin6, INPUT);
  digitalWrite(6, HIGH);
  servo.attach(9); //setzen des Servo Objektes auf den digitalen PIN 9

  pinMode( 3 , INPUT);
  pinMode( 5 , INPUT);
  pinMode( 4 , INPUT);

  digitalWrite(3, HIGH);
  digitalWrite(4, HIGH);
  digitalWrite(5, HIGH);
  pinMode( 10 , OUTPUT);
  pinMode( 11 , OUTPUT);
  pinMode( 12 , OUTPUT);

  Serial.begin(9600);

  spiel = 0 ;

  ersterstart = 0 ;

  digitalWrite( 10 , LOW );

  digitalWrite( 11 , HIGH );

  digitalWrite( 12 , LOW );

}

// Endlosschleife
void loop () {

  if ((digitalRead(pin10) == HIGH) && (pin12 == HIGH)) {
    // Anweisungsblock für wahr
    digitalWrite(pin11, LOW);
  } else {
    //Anweisungsblock für falsch

    digitalWrite(pin11, LOW);

    press = digitalRead(pin6);
    delay(waitTime1);
    if (press == LOW)
      //For Schleife zum drehen des Servos um 180°
      for (position = 2; position < 110; position += 1) {
        servo.write(position); //Schreiben des aktuellen Wertes der Variable 'position' (1...180)
        delay(waitTime); //Pause
      }

    //For Schleife zum drehen des Servos um 180°
    for (position = 0; position >= 0; position -= 1) {
      servo.write(position); //Schreiben des aktuellen Wertes der Variable 'position' (180...1)
      delay(waitTime1);// Pause

      if (( !( digitalRead(3) ) && ( ( ersterstart ) == ( 0 ) ) ))
      {
        spiel = ( spiel + 1 ) ;
        ersterstart = ( ersterstart + 10 ) ;
        digitalWrite( 11 , LOW );
        digitalWrite( 12 , HIGH );
      }
      Serial.print("spiel gesperrt");
      Serial.println();
      while ( ( !( digitalRead(4) ) && ( ( spiel ) == ( 1 ) ) ) )
      {
        spiel = ( spiel + 1 ) ;
        while ( ( ( spiel ) == ( 2 ) ) )
        {
          digitalWrite( 12 , LOW );
          digitalWrite( 11 , HIGH );
          if (!( digitalRead(3) ))
          {
            spiel = 1 ;
            digitalWrite( 12 , HIGH );
            digitalWrite( 11 , LOW );
          }
          Serial.print("spiel gesperrt");
          Serial.println();
        }

      }

      while ( ( !( digitalRead(5) ) && ( ( spiel ) == ( 1 ) ) ) )
      {
        spiel = ( spiel + 1 ) ;
        while ( ( ( spiel ) == ( 2 ) ) )
        {
          digitalWrite( 10 , HIGH );
          digitalWrite( 11 , LOW );
          digitalWrite( 12 , LOW );
          if (!( digitalRead(3) ))
          {
            spiel = 1 ;
            digitalWrite( 12 , HIGH );
            digitalWrite( 11 , LOW );
            digitalWrite( 10 , LOW );

            Serial.print("spiel gemeistert");
            Serial.println();
          }

        }
      }
    }
  }
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.02.2019, 17:07 (Dieser Beitrag wurde zuletzt bearbeitet: 21.02.2019 17:23 von Tommy56.)
Beitrag #2
RE: vielleicht kann mir jemand helfen
Stelle Deinen vollständigen Sketch bitte in Codetags.
Wie das geht, steht hier.
Das kannst Du auch noch nachträglich ändern.

Gruß Tommy

Jetzt kann man den Sketch besser lesen. Die Servo-Lib (welche? Link bitte) hat Beispiele dabei. Hast Du mit denen Deinen Servo (welchen? Link bitte) bereits zum Laufen bekommen?

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.02.2019, 17:42
Beitrag #3
RE: vielleicht kann mir jemand helfen
Dein Code ist nicht gerade selbsterklärend. Ich befürchte, dass in diesem Code gleich mehrere Probleme vorhanden sind.
Kannst du beschreiben, was an den einzelnen Pins angeschlossen ist?
Du verwendest die Pins 3, 4, 5, 6 als Eingänge und 10, 11 und 12 als Ausgänge. Der Servo ist scheinbar an Pin 9 angeschlossen.
Ich nehme an, dass an den Eingängen Taster angeschlossen sind, die gegen Masse geschaltet sind. Die Ausgänge 10 bis 12 wären dann vermutlich Led's.
Pin 11 ist ja ein Ausgang, trotzdem fragst du ihn als Eingang ab und möchtest damit eine Aktion am Servo auslösen. Das ist im Prinzip zulässig, aber doch etwas aussergewöhnlich. Es stellt sich auch die Frage, wodurch Pin 11 HIGH wird.
Eine etwas detailliertere Beschreibung, was deine Schaltung eigentlich machen sollte, wäre recht hilfreich.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.02.2019, 17:58
Beitrag #4
RE: vielleicht kann mir jemand helfen
Hallo Lois,

mein Vorredner hat es bereits angesprochen. Du legst einen Port als Eingang fest, schreibst dann aber ein HIGH auf diesen. Das ist so nicht ok. Schreiben bitte nur auf Ports, die mit OUTPUT deklariert sind:

Code:
pinMode( 3 , INPUT);
  pinMode( 5 , INPUT);
  pinMode( 4 , INPUT);

  digitalWrite(3, HIGH);
  digitalWrite(4, HIGH);
  digitalWrite(5, HIGH);

Dann noch zwei Hinweise zur Vereinfachung .

Für:
Code:
spiel = ( spiel + 1 ) ;
kann man auch:
Code:
spiel++;
schreiben. Hier auch:
Code:
position += 1
besser:
Code:
position++;

Dann ist mir auch das noch aufgefallen:
Code:
if (( !( digitalRead(3) ) && ( ( ersterstart ) == ( 0 ) ) ))

Liest sich leider nicht so gut, funktioniert aber warscheinlich...?

Müsste auch so gehen:
Code:
if (!digitalRead(3) && ersterstart == 0)

Werde deinen Thread mal im Auge behalten...Wink

Gruß
Torsten
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.02.2019, 18:16
Beitrag #5
RE: vielleicht kann mir jemand helfen
(21.02.2019 17:58)torsten_156 schrieb:  .....
Du legst einen Port als Eingang fest, schreibst dann aber ein HIGH auf diesen. Das ist so nicht ok. Schreiben bitte nur auf Ports, die mit OUTPUT deklariert sind:

Naja, wenn man weiß was man macht, ist das schon ok.
Das geht auch mit "Input_Pullup" und man erreicht damit das Selbe.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.02.2019, 18:22
Beitrag #6
RE: vielleicht kann mir jemand helfen
Hallo
bin noch sehr unsicher bei der ganzen Sache

Das ganze soll ein Spiel mit Belohnung werden. led abfrage funktioniert so weit aber das Ansteuern vom Servo led pin 11 Spiel ohne Fehler geschafft. geht nicht.
Start Led pin12 bei keine Fehler led pin 11 und Servo bewegt ein Drehteller und es gibt eine Belohnung für den Spieler bei Fehler led pin 10 zurück zum Start .
Taster auf - geschaltet
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.02.2019, 18:24
Beitrag #7
RE: vielleicht kann mir jemand helfen
Würdest Du bitte auch die Dir gestellten Fragen beantworten?

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.02.2019, 18:32 (Dieser Beitrag wurde zuletzt bearbeitet: 21.02.2019 18:58 von Lois.)
Beitrag #8
RE: vielleicht kann mir jemand helfen
Entschuldigung noch vergessen
pin 3,4 ,5 Tasteneingang von -
Pin9 Servo Output
pin 10,11,12 Led Output
pin 6 Taster für Servo zum testen oder später andere Funktion

wenn ich das Programm Starte kann ich den Servo 1 x mit Taster pin 6 betätigen Testen.
sobald ich aber mit den Led Spiele bzw. eine Led HIGH war geht mit dem Ansteuern von Servo nichts mehr ?
Servo soll bei Led pin 11 HIGH 1x seine Position abfahren( Belohnung)

Danke
Lois
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Kennt jemand einen Stepper Closed Loop Sketch? Holzwurm56 16 1.332 17.06.2019 22:37
Letzter Beitrag: georg01
  Kann auf A.Uno nichts hochladen - Anfänger sucht Hilfe ardeche 25 2.193 21.01.2019 22:06
Letzter Beitrag: ardeche
  [Ein bisschen abseits]Kennt jemand eine Quelle für AT90 Programmierdaten ManniP 2 886 02.03.2018 12:31
Letzter Beitrag: Bitklopfer
  Kennt sich jemand mit Blynk aus? torsten_156 1 1.132 19.01.2018 20:16
Letzter Beitrag: Tommy56
Lightbulb Wie kann ich Daten vom Nextion Display auf Arduino Mega2560 senden und benutzen MarkusA 14 6.335 02.11.2017 23:10
Letzter Beitrag: MarkusA
  Frage zu STM32F1xx / Was kann ich bei dieser Fehlermeldung machen? Holzwurm56 37 5.136 04.09.2017 14:14
Letzter Beitrag: Holzwurm56
  Kann man auf den internen Speicher zugreifen? Maxi290997 11 2.812 18.08.2017 19:51
Letzter Beitrag: hotsystems
  Kann ich die Standard Bibliothek algorithm.h einbinden? Pfeilebastler 4 1.381 27.01.2017 11:03
Letzter Beitrag: hotsystems
  kann "localhost" nicht connecten sowerum 4 1.495 20.06.2016 20:57
Letzter Beitrag: sowerum
  Wo kann ich hier noch Code spahren? (SPI-,Ethernet-,SD-,GSM-Library) avoid 4 2.137 05.06.2016 14:16
Letzter Beitrag: avoid

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste