- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 5 von 5

Thema: C Control Pro

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    27.11.2015
    Beiträge
    11

    C Control Pro

    Anzeige

    Praxistest und DIY Projekte
    Hi, ich habe heute mal versucht ein bisschen meinen Pro Bot zu programmieren.
    Jetzt habe ich ein paar Fragen.
    Erstmal programmiere ich in C-Compact.
    Ist das jetzt eine bestimmte Programmiersprache nur für die CControl oder ist das die Sprache C, welche so oft verwendet wird?


    Und dann habe ich das hier jetzt mal geschrieben.
    Jedoch gehen die LED's immer sofort an..
    Ist hier vielleicht etwas falsch? if(ACS_L == 1)

    Code:
    #define IR_left 27
    #define IR_right 29
    #define TSOP 26
    
    #define FLL 19
    #define FLR 18
    
    
    byte ACS_R, ACS_L;
    
    void main(void)
    {
        Port_DataDirBit(IR_left,PORT_OUT);
        Port_DataDirBit(IR_right,PORT_OUT);
        Port_DataDirBit(TSOP,PORT_IN);
        Port_DataDirBit(FLL,PORT_OUT);
        Port_DataDirBit(FLR,PORT_OUT);
        Port_DataDirBit(BLL,PORT_OUT);
        Port_DataDirBit(BLR,PORT_OUT);
        Port_WriteBit(FLR,PORT_OFF);
        Port_WriteBit(FLL,PORT_OFF);
        Port_WriteBit(BLR,PORT_OFF);
        Port_WriteBit(BLL,PORT_OFF);  
    
        while(1)
        {
          IR_CheckLeft();
          IR_CheckRight();
          AbsDelay(10);
          if(ACS_L == 1)
          {
            Port_WriteBit(FLL,PORT_ON);
    
          }
          if(ACS_R == 1)
          {
            Port_WriteBit(FLR,PORT_ON);
    
          }
        }
    
    }
    
    void IR_CheckLeft(void)
    {
        Port_WriteBit(IR_right,PORT_OFF);
        Port_WriteBit(IR_left,PORT_ON);
        AbsDelay(5);
        ACS_L = Port_ReadBit(TSOP);
        Port_WriteBit(IR_left,PORT_OFF);
    }
    
    void IR_CheckRight(void)
    {
        Port_WriteBit(IR_right,PORT_ON);
        Port_WriteBit(IR_left,PORT_OFF);
        AbsDelay(5);
        ACS_R = Port_ReadBit(TSOP);
        Port_WriteBit(IR_right,PORT_OFF);
    }
    Geändert von radbruch (30.11.2015 um 18:49 Uhr) Grund: Code-Tag eingefügt

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Jedoch gehen die LED's immer sofort an..
    Ist hier vielleicht etwas falsch? if(ACS_L == 1)
    Naja, wirklich falsch ist das wohl nicht. Wenn ich aber richtig vermute und die IR-LED bei "Port_WriteBit(IR_left,PORT_ON);" leuchtet und "ACS_L = Port_ReadBit(TSOP);" den Ausgang des TSOP einliest, dann ist es richtig, dass die LED bei "if(ACS_L == 1) Port_WriteBit(FLL,PORT_ON);" immer leuchtet.

    Der Ausgang des TSOP wird low (0V), wenn er ein IR-Signal erkennt. Und weil deine IR-LED keine Trägerfrequenz sendet, erkennt der TSOP nicht, dass sie leuchtet und sein Ausgang bleibt immer high (5V).

    Ein einfacher Ansatz: Man schließt die IR-LED an zwei Pins an. Ein Pin erzeugt die Trägerfrequenz (z.B. 36 oder 38 kHz je nach TSOP) an der Anode der LED und der zweite Pin schaltet die Kathode der LED gegen GND, wenn sie ein Signal senden soll. Die Frequenz kannst du eventuell einfach mit mit einer Zählschleife und togglen der IR-Led erzeugen. Dann benötigst du aber vermutlich ein Messgerät um die erzeugte Frequenz zu messen. Besser, aber mit mehr Programmieraufwand verbunden, ist das Erzeugen der Frequenz mit einem Timer.

    C-Compact ist ein "Dialekt" von C.

    Gruß

    mic
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    27.11.2015
    Beiträge
    11
    Danke schonmal, kann man eigentlich anstatt PORT_OFF auch einfach 0 schreiben?
    Und muss man am Anfang des Programms die Ports immer gleich abschalten oder?
    Sonst würden, wie ich gesehen habe die LED's zum Beispiel gleich von Anfang an leuchten.

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    27.11.2015
    Beiträge
    11
    Weiß das vielleicht jemand? Wäre nett. MfG

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    55
    Beiträge
    2.208
    Du könntest es probieren.
    Beides.
    Geht schneller, als hier zu warten, bis jemand anderes es für dich probiert hat. Zumal der Probot nun nicht sooo verbreitet ist.
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

Ähnliche Themen

  1. ROV-CONTROL - a modular control system for diving robots
    Von Diron im Forum Sonstige Roboter- und artverwandte Modelle
    Antworten: 0
    Letzter Beitrag: 03.02.2015, 23:58
  2. C-Control Mega128 über das Programm "C-Control Pro"
    Von Hagen_tb im Forum Bauanleitungen, Schaltungen & Software nach RoboterNetz-Standard
    Antworten: 1
    Letzter Beitrag: 11.10.2009, 10:09
  3. C-Control Main Unit & C-Control M-Unit verbinden?
    Von Speed im Forum Controller- und Roboterboards von Conrad.de
    Antworten: 1
    Letzter Beitrag: 18.06.2005, 10:05
  4. Discovery Bot oder RN-Control 1.4 vs. C-Control
    Von Xtreme im Forum Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots
    Antworten: 14
    Letzter Beitrag: 06.06.2005, 19:15

Berechtigungen

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

Solar Speicher und Akkus Tests