- HEMS Solar Speicher Tutorial    Werbung      
Ergebnis 1 bis 10 von 17

Thema: Brauche Hilfe beim Verbinden von zwei Teilprogrammen

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    28.11.2011
    Beiträge
    9
    Ah oke, alles klar. Ich habe es jetzt folgendermaßen versucht. Leider kann ich es nicht compelieren, da ich auf dem PC an dem ich im moment bin nicht ProgrammersNotepad2 drauf ist.
    Noch eine zwischen Frage die Klammer nach else { ist schon nötig oder?

    #include "asuro.h"

    int main(void)
    {
    Init();

    while(1)
    {

    if(PollSwitch()!=0)
    {StatusLED(RED);

    MotorDir(RWD,RWD);
    MotorSpeed(120,120);
    for (i=0;i<280;i++){Sleep(255);}
    MotorSpeed(0,0);
    MotorDir(FWD,FWD);
    MotorSpeed (0,120);
    for (i=0;i<280;i++){Sleep(255);}
    MotorSpeed(0,0);
    }

    else{
    int line_data[2];
    LineData(line_data); // line_date[0]: linker Sensor, [1]: rechter Sensor
    // schwarzer Untergrund: kleine Werte; heller Hintergrund: große Werte

    FrontLED(ON); // liefert bessere bzw. konstrastreichere Werte
    int limit = 45; // Dieser Vergleichswert ist an die Lichtverhältnisse anzupassen
    int speed = 120;
    int debug_mode = 0; // 0: aus; 1: an, ASURO sendet die Werte der Sensoren zurück

    while (line_data[1] > limit)
    {
    if (debug_mode)
    {
    SerWrite("rechts\r\n", 8 );
    PrintInt(line_data[1]);
    SerWrite("\r\n", 2);
    }
    BackLED(OFF, ON);
    MotorSpeed(0, speed);
    LineData(line_data);
    }

    while (line_data[0] > limit)
    {
    if (debug_mode)
    {
    SerWrite("links\r\n", 7);
    PrintInt(line_data[0]);
    SerWrite("\r\n", 2);
    }
    BackLED(ON, OFF);
    MotorSpeed(speed, 0);
    LineData(line_data);
    }
    MotorDir(FWD, FWD);
    MotorSpeed(speed, speed);
    }
    }
    return 0;
    }

  2. #2
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    36
    Beiträge
    3.501
    Ja nach jedem if oder else muss der Teil der ausgeführt werden soll zwischen {} stehen

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    28.11.2011
    Beiträge
    9
    Ist es so richtig eingefügt?

    Jetzt hätt ich noch eine Frage und zwar wie kann ich die Zeit verkürzen die der Asuro rückwärts fähr, jetzt ist es ja 1 Sec.
    Ich kann das über Sleep einstellen oder?
    Im moment ist es ja auf Sleep(255) eingestellt, aber was entspricht dem Wert 255? ^^

  4. #4
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    63
    Beiträge
    5.799
    Hallo

    Sleep(1) dauert je nach Version der Library 1/72000 oder 1/36000 Sekunde. Normalerweise ist PrintInt() nur in 36kHz-Libraries zu finden, aber dann passt die genannte Sekunde nicht zum errechneten Wert:

    for (i=0;i<280;i++){Sleep(255);

    280 * 255 * 1/36000sek = 1,98sek

    Möglicherweise erkennt der Kompiler int debug_mode = 0; und optimiert den Debugteil raus. Dann wäre das mit der CD-Lib und 72kHz übersetzbar.

    Gruß

    mic

    P.S.: Eine Sekunde:

    for(i=0; i<1000; i++) Sleep(36); // Sleep(36) dauert 1/1000Sek, bei CD-Library Sleep(72)
    Geändert von radbruch (30.11.2011 um 20:45 Uhr)
    Bild  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    28.11.2011
    Beiträge
    9
    Also ich hab mir alle neuesten Versionen aus dem internet runtergeladen welche Version habe ich dann ?

    for(i=0, i<1000; i++) für was steht die 1000 in diesem fall?
    bei meinem programm ist das ja auf 280

  6. #6
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    36
    Beiträge
    3.501
    for(i=0, i<1000; i++)
    ist eine Zählschleife. Der startet mit i = 0 und führt den Befehl der danach kommt solange aus bis i größer als 1000 ist. Das i++ heißt das er in einser Schritten zählt.
    Eine komplette Zählschleife würde so aussehen:
    for(i=0, i<1000; i++)
    {
    }
    Radbruch hat ja eben gesagt das Sleep(1) = 1/36000 Sekunden ist. Dementsprechend ist Sleep(36)= 36/36000 und das ergibt 1/1000. Das heißt Sleep(36) dauert 36/36000 Sekunden oder gut 1ms. Und deswegen machst du die Zählschleife von 0 bis 1000. Weil er dann 1000x Sleep(36) ausführt. Und das sind 1000x 1ms also 1 Sekunde. Wenn du jetzt 2 Sekunden haben willst schreibste statt 1000 2000. Für 3 Sekunden 3000 usw.
    Hoffe das hilft dir weiter Bild  
    Geändert von Kampi (30.11.2011 um 21:15 Uhr)

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    28.11.2011
    Beiträge
    9
    Ja sehr! Vielen dank x) .. ich werd das morgen alles mal testen und dann mal sehen. Hoff ihr helft mir dann ein weiteres mal falls Schwierigkeiten auftreten sollten.

  8. #8
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    63
    Beiträge
    5.799
    Also ich hab mir alle neuesten Versionen aus dem internet runtergeladen welche Version habe ich dann?
    Aktuell ist V2.8:
    https://www.roboternetz.de/community...l=1#post252982

    In der Datei CHANGELOG steht der Hinweis auf die Version. Ab v2.3 sind es 36kHz.
    Bild  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

Ähnliche Themen

  1. PIC per USB mit PC verbinden... Brauche dringendst Hilfe!!
    Von itsgre.at im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 13
    Letzter Beitrag: 29.11.2011, 13:36
  2. Brauche Hilfe beim entrümpeln
    Von BoondockDuck im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 09.09.2008, 20:50
  3. Wie zwei externe EEproms auslesen? Brauche Hilfe beim Code
    Von Lightningman im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 7
    Letzter Beitrag: 30.03.2008, 13:54
  4. brauche hilfe beim programmieren
    Von Anti süd im Forum Asuro
    Antworten: 2
    Letzter Beitrag: 30.01.2008, 10:29
  5. brauche hilfe beim basteln
    Von over load im Forum Elektronik
    Antworten: 15
    Letzter Beitrag: 08.03.2006, 10:03

Stichworte

Berechtigungen

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

    Werbung      fchao-Sinus-Wechselrichter AliExpress