Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: Radencoder Kategorie: Programmierung Basic (von ManfredW, Homepage - 13.10.2008 19:58)
 Als Antwort auf Radencoder von Mike Ebert - 8.10.2008 3:12
Hallo,
Anmerkungen habe ich eingefügt.
MfG ManfredW

> Hi,
>
> ich suche Hilfe bei der Programmierung einer Odometrie auf Basis der M-Unit1.1.
> Es sollen zwei Radencoder ausgewertet werden und dann eine definierte Richtung gefahren werden.
> Meine Idee war nun folgendes Prog welches aber noch nicht fertig ist. Für eine Kurvenfahrt in einen bestimmten Winkel wollte ich eine Tabelle mit Werten die proportional zu einen Winkel erstellen die zu der im Prog als "n" bezeichneten Variablen addiert oder subtrahiert werden je nachdem ob ich nach links oder rechts fahren will. Gibt es da noch eine einfachere Möglichkeit sowas zu realisieren.

Wenn die Werte proportional sind, kannst Du sie auch mit einem Faktor berechnen statt Tabelle.
>
> define solldiff word
> define n word
> define diff word
> define Motor_Links DA [1]             ' (PWM)
> define Motor_Rechts DA [2]          ' (PWM)
> define RadsensL ad [1]'freq1
> define RadsensR ad [2]'freq2
> define p1 port[2]               'motor eins p1=on  und p2=off motor dreht nach rechts
> define p2 port[1]               '           p1=off und p2=on  motor dreht nach links
> define p3 port[4]               'motor zwei p3=on  und p4=off motor dreht nach rechts
> define p4 port[3]               '           p3=off und p4=on  motor dreht nach links
>
> #geradeaus
> p1 = on                  'motor eins, p1=on und p2=off motor dreht nach rechts
> p2 = off
> p3 = on                  'motor zwei, p3=on und p4=off motor dreht nach rechts
> p4 = off
> solldiff = 127
> n = RadsensL - RadsensR
> diff = solldiff - n
> if diff = 0 then Motor_Links = 250
> if diff = 0 then Motor_Rechts = 250
> if diff < solldiff then Motor_Links = Motor_Links - n              'nach links drehen
> if diff > solldiff then Motor_Rechts = Motor_Rechts + n        'nach rechts drehen
> gosub geradeaus

Mit diesem gosub springst Du unzulässig ins eigene Unterprogramm.
Muss es nicht goto geradeaus heißen? Als Endlos-Schleife. Return entfällt dann.
> return

Meine Homepage: http://manfred.wilzeck.de

 Antwort schreiben

Bisherige Antworten: