- SF800 Solar Speicher Tutorial         
Ergebnis 1 bis 10 von 10

Thema: C Programmierung Sensoren

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #4
    HaWe
    Gast
    nein, C hat ganz eigene Syntax und Verknüpfungs-Präferenzen (Operatorrangfolge).
    Außerdem sind deine Variablentypen nicht C-typisch definiert.
    Es ist für mich als C-Programmierer auch gar nicht klar, wie deine Richtungsvariablen verarbeitet werden.

    Was die Verständlichkeit angeht: die Reihenfolge deiner Sx Variablen ist auch nicht sehr intuitiv.

    setz doch mal als erstes Klammern um deine einzelnen && und || verknüpften Statements!

    - - - Aktualisiert - - -

    PS,
    als C-Programmierer würde ich eine Variable für die Richtung definieren
    int dir;
    die dann verschiedene Richtungen als Wert annehmen kann:
    #define vor 1
    #define rueck -1
    #define rechts 2
    #define links 4
    #define stop 0

    if(S1==HIGH) && (S2==HIGH) && (S5==HIGH) {dir=?? } // was dann??
    else
    if (S3==HIGH) && (S4==HIGH) {dir=??} // was dann??
    ...usw...

    - - - Aktualisiert - - -

    PPS,
    auch Timer wird man in C sicher ganz anders handhaben als bei dir:

    Code:
    #include <time.h>
    #include <sys/time.h>
    
    uint32_t  ms;
    
    uint32_t mstimer()
    {
       struct timeval now;
       uint32_t ticks;
       gettimeofday(&now, NULL);
       ticks=now.tv_sec*1000+now.tv_usec/1000;
       return(ticks);
    }
    
    dann im Steuer-Code:
    
    bool Ecke=false;
    bool Ecke_alt=false;
    
    // Sensoren auswerten
    // "intelligence"
    // bisherigen Zustand der Eckbedingung speichern 
    Ecke_alt = Ecke;
    
    // ermitteln, ob eine neue Eckebedingung eingetreten ist
    Ecke=.... ???  // hier Ecke-Bedingung ermitteln, wschl über Sensordaten
    
    if (Ecke && !Ecke_alt) { // beim 1.Mal, wenn eine neue Eck-Bedingung eintritt:
       ms=mstimer(); // Zeit stoppen
    }
    
    // wiederholt Sensoren auswerten, wie du das machst verstehe ich bei deinem Code aber nicht
    // "intelligence"
    // dann überprüfen, ob ein ungewollter Richtungswechsel passiert ist;
    
    if (dir==links &&   mstimer()-ms <=2000) {  dir=rechts;} // falls ja, einfach wieder auf rechts zurückswitchen
    Insgesamt ist mir aber deine Programmstruktur zu unverständlich, da unvollständig oder zumindest nicht C-typisch.
    Geändert von HaWe (08.08.2018 um 21:13 Uhr)

Ähnliche Themen

  1. SDI-12 für Sensoren
    Von senmeis im Forum Sensoren / Sensorik
    Antworten: 0
    Letzter Beitrag: 29.02.2012, 10:02
  2. was für sensoren?????
    Von gorgo921 im Forum Sensoren / Sensorik
    Antworten: 9
    Letzter Beitrag: 06.07.2009, 22:54
  3. US Sensoren
    Von Nr. 5 im Forum Sensoren / Sensorik
    Antworten: 1
    Letzter Beitrag: 23.02.2007, 13:03
  4. Problemchen mit der programmierung mehrerer sht 11 sensoren
    Von Tom K im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 22
    Letzter Beitrag: 19.01.2006, 02:31
  5. Programmierung von Sensoren in MPLAB
    Von MastaM im Forum PIC Controller
    Antworten: 3
    Letzter Beitrag: 29.05.2005, 18:19

Berechtigungen

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

LiFePO4 Speicher Test