- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 20

Thema: servomotorbewegung zählen

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Visionär Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    37
    Beiträge
    5.091
    Das du mit dem PC programmierst war relativ klar, da es nicht viele Systeme gibt die man ohne PC programmieren kann (z.B. einige ältere SPS). Mit Arduino kenne ich micht nicht so gut aus, aber wenn du das Programm postest könnte ich dir Vorschlagen wo du was hinschreiben kannst. Ob beim Arduino C, C++ oder beides verwendet wird weiß ich nicht. Als Erstes brauchst eine Zählvariable. Im Programm schreibst du dann nur z.B. i++; (i ist die Zählvariable) und es wird i um 1 erhöht. Man fragt dann einfach i ab und vergleicht es mit einer Vorgabe und führt die Dinge aus die man machen will wie z.B. Ausgänge setzen, löschen,... (z.B. if (i >= 360){} ).


    MfG Hannes
    Geändert von 021aet04 (07.06.2012 um 17:48 Uhr)

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    07.06.2012
    Beiträge
    12
    ok soweit hab ich mir das auch schon gedacht aber ich muss doch irgendwo angeben dass i die schleifen zählen muss oder reicht das schon wenn ich

    int i=0
    in void setup angebe und später in void loop am ende

    if(i=360)
    digitelWrite(pin,HIGH)

    reagiert der dann darauf?!

    aber danke schon mal =))

  3. #3
    Erfahrener Benutzer Robotik Visionär Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    37
    Beiträge
    5.091
    Es fehlt aber die main Schleife oder ist das nicht das ganze Programm?

    Du musst unter die include Anweisung die Zählvariable definieren.

    Code:
    unsigned int i=0;
    Den jeweiligen Pin musst du als Ausgang definieren. Bei mir ist das z.B. PA1

    Code:
    DDRA |= (1<<PA1);
    In die if(helligkeit > 150) Schleife schreibst du ganz unten (nach dem delay)

    Code:
    i++;
     if (i>=360) PORTA |= (1<<PA1);
    else PORTA &= ~(1<<PA1);
    MfG Hannes

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    07.06.2012
    Beiträge
    12
    also wenn ich des jetzt versuche dann kommt error compiling =(
    hast du noch ne andere idee?!
    sind grad bisschen am verzweifeln =(

  5. #5
    Erfahrener Benutzer Robotik Visionär Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    37
    Beiträge
    5.091
    Poste einmal dein Programm. Welcher Fehler kommt genau?

    Ich habe eine C-Datei hochgeladen damit du weißt wie man es aufbauen sollte.

    MfG Hannes
    Angehängte Dateien Angehängte Dateien

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    07.06.2012
    Beiträge
    12
    DDRA is kein gültiger befehl bei meinem programm =(

  7. #7
    Erfahrener Benutzer Robotik Visionär Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    37
    Beiträge
    5.091
    DDRA ist das Register indem man festlegt ob ein Pin Eingang oder Ausgang ist. Wie das dann bei dir heißt weiß ich nicht. Ich programmiere normale AVRs mit AVR Studio.

    MfG Hannes

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    07.06.2012
    Beiträge
    12
    ok gut ja des hilft mir weiter =) wusste nur nicht was das ist =) ich probiers mal und poste dann mein programm =)

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    07.06.2012
    Beiträge
    12
    int helligkeit = 0; // variable helligkeit auf 0 setzen
    int i = 0 ; //zählvariable auf 0 setzen
    #include <Servo.h> //?
    //unsigned int i=0;
    Servo myservo1; // variablen der motoren
    Servo myservo2;

    int pos = 0; //variable zur bestimmung der position der Motoren
    int erster_start = 1;



    void setup()
    {
    pinMode(8, OUTPUT); //LED gelb anmelden
    pinMode(7, OUTPUT); //LED rot anmelden
    pinMode(9, OUTPUT); //Motor zählen
    Serial.begin(9600);

    myservo1.attach(9); //Motoren angemeldet
    myservo2.attach(10);
    }

    void loop()
    {
    digitalWrite(8, HIGH); // LED ein
    if (i<360)
    {
    if(erster_start == 1)
    {
    myservo1.write(90); //motoren drehen sich auf ihre positionen -> voller Anschlag
    myservo2.write(0);
    delay(500); //warten
    erster_start = 0;
    }
    helligkeit = analogRead(0); //helligkeitswert wird eingelesen von lichtsenor und angepasst

    if(helligkeit > 150) //helligkeit muss höher als 500 sein dass Motoren sich bewegen
    {
    myservo1.write(55); //Herunterdrücken
    myservo2.write(35); //Herunterdrücken
    delay(1000); // Wartezeit, Servo muss in dieser Zeit ganz nach unten gekommen sein
    myservo1.write(90);
    myservo2.write(00);
    delay(1000);
    i++;

    }

    else
    {
    digitalWrite(7, HIGH); //LED rot einschalten
    }

    }



    }

    also des programm wenn ich es so kontorllieren lasse von meinem programm is von der theorie alles richitg meinst so funktioniert das?

Ähnliche Themen

  1. Hex Zählen
    Von Thom24 im Forum PIC Controller
    Antworten: 4
    Letzter Beitrag: 03.10.2009, 20:30
  2. Takte zählen
    Von yaro im Forum Assembler-Programmierung
    Antworten: 2
    Letzter Beitrag: 15.04.2009, 19:03
  3. Impulse zählen
    Von timmy83 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 22.10.2006, 12:54
  4. Hühner zählen?
    Von SeveQ im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 9
    Letzter Beitrag: 08.03.2006, 09:21
  5. Impulse Zählen
    Von Spion im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 3
    Letzter Beitrag: 17.09.2005, 23:43

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress