-
        

Ergebnis 1 bis 2 von 2

Thema: C Programm

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    11.01.2012
    Ort
    Hamburg
    Beiträge
    18
    Blog-Einträge
    2

    C Programm

    Anzeige

    Hallo,

    ich brauche unbedingt Hilfe in C Programmierung. Ich weiß nicht wie ich
    die Beiden C Programme sinnvoll verknüpfe.


    Vielleicht kann mir ja jemand helfen..

    /**
    *
    *-RP6 als Buch umblätterer-
    *
    *
    *Zum Starten des Robotors müssen sich die beiden Fotowiderstand auf den Seiten des Buches
    *befinden.Das Buch liegt auf einer schwarzen unterfläche
    *Der Roboter fährt gerade, bis der Rechte LDR die schwarze Fläche erreicht.
    *-PA1 wird gestzt-
    *Der Roboter fährt zurück und der rechte LDR gelangt wider auf die fläche des Buches.
    *Jetzt fährt weiter zurück bis der linke LDR die schwarze Fläche erreicht.
    *-Er soll aber noch 5 sec weiterfahren und dann erst den PortA1 ausschalten-
    *Das ganze widerholen

    */


    //Auswertung der LDRs

    #include "RP6RobotBaseLib.h"
    #include <avr/io.h>

    int main (void)
    {
    initRobotBase();



    startStopwatch1();
    writeString_P("\n\nKleines ADC Messprogramm...\n\n");

    while(true)
    {

    if(getStopwatch1() >300) //alle 300ms...

    {
    writeString_P("\nADC Lichtsensor Rechts: ");
    writeInteger(adcLSR, DEC);
    if(adcLSR<750)
    PORTA |= (1<<PA1);

    setStopwatch1(0);
    }
    if(getStopwatch1() >300) //alle 300ms...

    {
    writeString_P("\nADC Lichtsensor Links: ");
    writeInteger(adcLSL, DEC);
    if(adcLSL<600)
    PORTA &= ~(1<<PA1);
    setStopwatch1(0);
    }

    task_ADC();
    }
    return 0;
    }





    // Strecke abfahren
    // Eine Distance für das vorwärtsfahren brauch zum Vorhaben nicht mehr erfüllt werden.


    #include "RP6RobotBaseLib.h"
    #include <avr/io.h>



    int main(void)
    {
    initRobotBase();
    powerON();


    uint8_t i = 0;
    while(i < 2)
    {
    task_motionControl();
    task_ADC();

    move(30, FWD, DIST_MM(400), true); // hier fährt er 25 cm gerade
    PORTA |= (1<<PA1); // der freie Port von ADC1 wird auf logisch 1 gesetzt.
    // der staubsauger geht an

    mSleep(3000); // Pause


    move(30, BWD, DIST_MM(400), true); // fährt 25 cm zurück
    PORTA &= ~(1<<PA1); // Port ADC1 wird auf logisch 0 gesetzt.
    // der Staubsauger geht aus.
    mSleep(3000); // Pause

    i++; // wiederhole

    }
    return 0;
    }

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    Im Prinzip kannst du alles in eine while(i < 2) Schleife packen.
    Probleme:
    1. Sowohl durch den Lichtsensor rechts, als auch nach dem Vorwärtsfahren wird PA1 eingeschaltet?
    2. Die 3 Sek. Pause: Das must du mit Stopwatches regeln.
    3. Die Blocking-Parameter: Geht nicht in einer Hauptschleife. Wenn du nicht blockierend arbeitest, kannst du mit isMovementComplete() auf das Ende der Bewegung testen.
    4. Empfehlung: Nicht 2 identische if(getStopwatch1() >300) Blöcke hintereinander nehmen. Das geht dann auch in einem.
    Gruß
    Dirk

Ähnliche Themen

  1. Programm schreibt weiteres Programm?
    Von Geistesblitz im Forum Software, Algorithmen und KI
    Antworten: 3
    Letzter Beitrag: 11.01.2012, 10:17
  2. RN-PC->I2C PC-Programm in C
    Von Frank13 im Forum Bauanleitungen, Schaltungen & Software nach RoboterNetz-Standard
    Antworten: 0
    Letzter Beitrag: 08.11.2007, 13:13
  3. Programm in Visual Basic Programm einbetten
    Von Sven04 im Forum Software, Algorithmen und KI
    Antworten: 1
    Letzter Beitrag: 18.09.2007, 00:27
  4. C programm für AT90S4433 in C programm für ATmega8 umwandeln
    Von dremler im Forum C - Programmierung (GCC u.a.)
    Antworten: 8
    Letzter Beitrag: 14.08.2007, 20:22
  5. C-Programm in C-Programm einbinden?
    Von Roberto im Forum C - Programmierung (GCC u.a.)
    Antworten: 6
    Letzter Beitrag: 10.08.2007, 00:26

Stichworte

Berechtigungen

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