- Labornetzteil AliExpress         
Ergebnis 1 bis 8 von 8

Thema: Ansteuerung Ultraschallsensor HC-SR04

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Benutzer Stammmitglied
    Registriert seit
    07.07.2009
    Alter
    28
    Beiträge
    96

    Frage Ansteuerung Ultraschallsensor HC-SR04

    Hallo Community!

    Ich möchte einen hc-sr04 mit einem Atmega8 auslesen
    es gibt ja ein paar programme dazu im Internet, die ich allerdings nicht zum laufen bekomme.

    nun meine Frage: Warum geht das nicht so einfach wie im folgenden Code probiert?
    also es lässt sich ohne Fehler Compilieren, danach leuchtet die LED allerdings nur rot.

    das Programm soll die LED einschalten wenn etwas näher als 5 cm am Ultraschallsensor ist.

    Trigger: PC0
    Echo: PC1
    LED: PC3

    Code:
    #define F_CPU 16000000UL
    
    #include <avr/io.h>
    #include <util/delay.h>
    
    
    
    #define ps 1024 //prescaler
    #define ss 343.2 //sound speed
    
    
    
    
    volatile uint16_t value;
    
    
    void timer_init(void){
        TCCR0|=(1<<CS02)|(1<<CS00);//prescale for timer 1024 @16MHz
    }
    
    
    uint8_t HC_SR04(void)
    {
        //generate a trigger signal
        PORTC &= ~(1<<PC0);
        _delay_us(1);
        PORTC |= (1<<PC0);
        _delay_us(10);
        PORTC &= ~(1<<PC0);
        
        while(!(PINC & (1<<PC1)))
        {
            
        }
        //wait until echo pin be high
        TCNT0=0;
        while(PINC & (1<<PC1))
        {
            
        }
    
    
        //count until echo pin be low
        
        return TCNT0*ps*(1/F_CPU)*ss*100;
    }
    
    
    
    
    
    
    void motorInit(void)
    {
        DDRD |= (1<<7) | (1<<6) | (1<<5);
        DDRB |= (1<<0);
        
        PORTD |= (1<<7);
        PORTB |= (1<<0);
        
        PORTD &= ~((1<<6) | (1<<5));
    }
    
    
    
    
    
    
    
    
    
    
    
    
    int main(void)
    {
        motorInit();    //muss aufgrund der gegebenen Platine ausgeführt werden
        
        uint16_t y;
        
        DDRC |= (1<<3) | (1<<0);
        DDRC &= ~(1<<1);
        PORTC &= ~(1<<1);
        timer_init();
        
        while(1)
        {
        
            y=HC_SR04();
            if(y<5)
            {
                PORTC |= (1<<3);
            }
            else 
            {
                PORTC &= ~(1<<3);
            }
            
            _delay_ms(1000);
        }
    }
    Ich hab denk ich alles durchprobiert und da schon einige Stunden dran geschwitzt ^^

    würde mich sehr freuen, wenn mir jemand helfen kann!

    Lukas

  2. #2
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Bist du sicher das die Rechnung nicht 0 ergibt?

    return TCNT0*ps*(1/F_CPU)*ss*100;

    1/F_CPU ergibt sicher 0 bei einem uint8_t
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

Ähnliche Themen

  1. SR04 mit C Programm Ansteuern.
    Von Catedral im Forum Raspberry Pi
    Antworten: 1
    Letzter Beitrag: 24.04.2013, 13:05
  2. Probleme mit HC-Sr04
    Von bruger im Forum Sensoren / Sensorik
    Antworten: 1
    Letzter Beitrag: 04.01.2013, 09:50
  3. [ERLEDIGT] Abfrage Ultraschallsensor HC-SR04 unter BASCOM
    Von JoeM1978 im Forum Sensoren / Sensorik
    Antworten: 14
    Letzter Beitrag: 15.11.2012, 18:04
  4. Ultraschallsensor
    Von botneuling im Forum Sensoren / Sensorik
    Antworten: 16
    Letzter Beitrag: 04.01.2012, 17:47
  5. Ultraschallsensor HC-SR04 Probleme ungenauigkeit
    Von anfaenger201 im Forum Sensoren / Sensorik
    Antworten: 4
    Letzter Beitrag: 04.08.2010, 15:06

Stichworte

Berechtigungen

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

12V Akku bauen