-         
Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 29

Thema: Timer, IR-Sensor !?!?!?!

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    05.09.2006
    Beiträge
    644

    Timer, IR-Sensor !?!?!?!

    Anzeige

    Hallo,

    ich würde gerne ein Programm schreiben das mein Roboter ca.6-8sek rückwärts fährt (die Zeit ist noch unwichtig,PWM auch). Aber irgendwie bekomme ich es nicht hin mit dem Timer, trotz Wiki.
    Könnte es mir jemand nochmal erklären ?

    Viele Grüße und Vielen Dank
    mfg Jonas

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.12.2005
    Ort
    Nähe Mainz
    Alter
    26
    Beiträge
    3.467
    Ich würde da keinen Timer verwenden, der eine Variable runterzählt, sondern ein "Wait 6" einfügen.

    Im Programmaufbau also so:
    Code:
    -Configurationen
    -Rückwärstfahren
    Wait 6
    -Anhalten
    End
    Mit dem Timr müsst ich mich auch erstmal selbst reinarbeiten.
    Darauf habe ich aber keinen Bock.

    Ich hoffe dass ich dir damit auch erstmal etwas helfen konnst.

    jon
    Nice to be back after two years
    www.roboterfreak.de

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    05.09.2006
    Beiträge
    644
    Ok, dann mache ich das so, ist ja leichter.
    Aber habe noch ein Prob, mit dem IR Sensor, bei der Robotliga habe ich mir einen gekauft, wie mache ich das mit dem Analog ausgang ?
    Also wie muss mein Prog sein das der Atmega8 erkennt wenn ein Gegenstand vor im ist ?

    Viele Grüße und Vielen Dank
    mfg Jonas

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.12.2005
    Ort
    Nähe Mainz
    Alter
    26
    Beiträge
    3.467
    Als erstes Prog für Analog:
    Code:
    $regfile = "m32def.dat"
    $crystal = 1000000
    $baud = 1200
    
    Dim Result As Word
    Dim Channel As Byte
    
    Config Adc = Single , Prescaler = Auto , Reference = Avcc
    
    Start Adc
    
    Do
       Result = Getadc(0)
       Print " Count: " ; Result ;
       Wait 1
    Loop
    
    End
    Musst du noch für deinen µC anpassen.

    Bei "Getadc(x)" musst du für x den Kanal eingeben, den du abfragen willst.
    in der Variablen "Result" wird der ADC-Wert gespeichert. Am besten machst du dir eine Tabelle mit ADC-Wert und Entfernung.

    jon
    Nice to be back after two years
    www.roboterfreak.de

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    05.09.2006
    Beiträge
    644
    Ok, Vielen Dank,
    aber wie muss es heisen, das egal wie weit ein Gegenstand entfernt ist mein Roboter z.B. rückwärts fährt ?

    Viele Grüße und vielen Dank
    mfg Jonas

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.12.2005
    Ort
    Nähe Mainz
    Alter
    26
    Beiträge
    3.467
    Ungefähr so:

    Wenn Result >=1024 dann fahre rückwärts.

    Ganz nah ist 1024 ganz weit weg ist 1.
    Was für einen Sensor hast du?
    Einen Sharp?

    jon
    Nice to be back after two years
    www.roboterfreak.de

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    05.09.2006
    Beiträge
    644
    Ja einen Sharp für ca.11 Euro, der misst zwischen 30-90cm.

    Vielen Dank und viele Grüße

    p.S.: Schicke dann mal mein Prog
    mfg Jonas

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    05.09.2006
    Beiträge
    644
    Hi,

    hier mein Prog aber es funktioniert nicht, was ist falsch ?
    Viele Grüße und vielen Dank

    $regfile = "m8def.dat"
    $crystal = 16000000

    Waitms 500

    Config Pinb.1 = Output
    Config Pinb.2 = Output
    Config Pinc.0 = Output
    Config Pinc.1 = Output
    Config Pinc.2 = Output
    Config Pinc.3 = Output
    Config Pinc.4 = Input

    Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1

    Do
    Compare1a = 1
    Compare1b = 1
    Portc.0 = 1
    Portc.1 = 0
    Portc.2 = 1
    Portc.3 = 0

    Dim Result As Word
    Dim Channel As Byte

    Config Adc = Single , Prescaler = Auto , Reference = Avcc

    Start Adc

    Do
    Result = Getadc(portc.4) ; Result ;


    If
    Result = 1000

    Then

    Portc.0 = 0
    Portc.1 = 1
    Portc.2 = 0
    Portc.3 = 1

    Wait 1



    Loop

    End
    mfg Jonas

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.12.2005
    Ort
    Nähe Mainz
    Alter
    26
    Beiträge
    3.467
    Code:
    $regfile = "m8def.dat"
    $crystal = 16000000
    
    Dim Result As Word
    Dim Channel As Byte
    
    Config Pinb.1 = Output
    Config Pinb.2 = Output
    Config Pinc.0 = Output
    Config Pinc.1 = Output
    Config Pinc.2 = Output
    Config Pinc.3 = Output
    Config Pinc.4 = Input
    
    Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1
    
    
    Config Adc = Single , Prescaler = Auto , Reference = Avcc
    
    Compare1a = 1
    Compare1b = 1
    Portc.0 = 1
    Portc.1 = 0
    Portc.2 = 1
    Portc.3 = 0
    
    Start Adc
    
    Do
    Result = Getadc(4) ; Result ;
    
    If
    Result = 1000 Then
    Portc.0 = 0
    Portc.1 = 1
    Portc.2 = 0
    Portc.3 = 1
    
    Wait 1
    Loop
    
    End
    Ich habe das Programm mal etwas bearbeitet.
    So mache ich es bei mir immer.
    Was ich geändert habe findest du, denke ich, selbst raus, wenn du es die nochmal genauer anschaust.

    jon
    Nice to be back after two years
    www.roboterfreak.de

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    05.09.2006
    Beiträge
    644
    Hi,
    vielen Dank aber irgendwie gibt es immer noch fehlermeldungen, wieso ?

    Hier mal die Fehlermeldungen:

    Error: 31 Line: 30 Infalid datatyp [0]
    Error: 93 Line: 30 Variable not dimensioned [0-> 0]
    Error: 1 Line: 32 Unknow Statement [IF]
    Error: 242 Line: 33 Source variable does not match the target variable [0/1000 THEN]

    Viele Grüße
    mfg Jonas

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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