-
        

Ergebnis 1 bis 5 von 5

Thema: Ultraschallsensoren und Taster

  1. #1
    Neuer Benutzer
    Registriert seit
    21.09.2008
    Ort
    Berlin
    Alter
    28
    Beiträge
    2

    Ultraschallsensoren und Taster

    Anzeige

    Hallo erstmal =)

    ich habe einige, Meiner meinung anch, einfache Fragen.
    Erstmal im vorraus, ich habe vor 2 Jahren mal in der Schule, im Informatik unterricht, ROboter "programmiert"... wenn man es so nennen möchte... ^^ und daher eigendlich kaum ahnung, bzw garkeine mehr, da ich mich danach kaum bzw garnicht mehr mit soetwas beschäftigt habe =/


    SO ich habe mir nun aber in den Kopf gesetzt einen Roboter zu bauen, er soll erstmal nur ausweichen können. UNd zwar mit direkten Sensoren (Taster) und indirekte Sensoren (hier: Ultraschallsensor).


    Der Roboter soll sehr flach, rund sein und 3 räder (für kleinen wenderadius) haben.
    AN der Front (vorderer Halbkreis) min. 4 Ultraschallsensoren haben und vor allem im Heck (hinterer Halbkreis) Taster (Stoßstange [luftschlauch] welche einen bzw mehrere Taster auslöst), damit man beim rückwertsfahren nicht hängen bleibt ^^.


    Nun meine Fragen:

    1. Frage: Ich habe mir hier http://www.roboternetz.de/wissen/ind...obotikeinstieg alles zu Bascom durchgelesen, jedoch bin ich nicht so richtig schlau draus geworden, nur teilweise... ^^

    ICh würde gerne wissen wie man damit Sensoren befehle einstellt.
    z.B.: wenn IR Sensor oder Ultraschalls. ein Hindernis, in z.B. 30cm abstand entdeckt, man diesem Ausweichen kann. Bzw. wenn Taster aktiviert wird, das der Roboter dann in die entgegengesetzte richtung fährt.


    2. Frage:
    Kann man Bascom auch für Ultraschall Sensoren nutzen?


    3. Frage: Ich frage mich wie ich die einzelnen Sensoren mit dem Controller verbinden soll, da es doch soviele Steckplätze, oder wie die heißen ^^, an dem Controller garnicht gibt, um alle Sensoren damit zu verbinden. Oder? was muss ich da machen?



    ich hoffe ihr könnt mir helfen ^^


    Mit freundlichen Grüßen

    Irael

  2. #2
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    BASCOM ist eine Basic Compiler, da kann man viel machen. Natürlich auch einen Ultraschallsensor anschießen. Der Computer im Raumschiff zur ersten Mondlandung deutlich weniger leistungsfähig als die Controller die man heute für kleine Robotter nimmt. Es ist also viel möglich, nur man muß es halt programieren. So Komplexe Kommandos wie Ausweichen sind da natürlich noch nicht vorgefertigt, das muß man erst noch selber programieren.


    Zum Anfang wäre der Asuro wohl geeignet: 2+1 Räder, klein und günstig. Da findet man bestimmt auch eine Anleitung wie man die Sensoren anschließt. Wenn einem die direkten Anschlüße nicht reichen kann man per I2C bus relativ viel weiters anschleißen.

  3. #3
    Neuer Benutzer
    Registriert seit
    21.09.2008
    Ort
    Berlin
    Alter
    28
    Beiträge
    2
    danke ^^

    mir war schon klar, dass ich das selber programmieren muss, ich wollte nur wissen wie das geht, ich hatte nehmlich sowas mit kommandos zum ausweichen schon in der shcule gemacht, mit schlafen etc... jedoch vergessen wie es geht und so

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    26.07.2008
    Beiträge
    80
    Also ich programmiere zwar in C und auf einem ATmega88 aber ich habe auch einen Roboter mit zwei Reflexkopler Sensoren und zwei Taster vorne drann.

    Also ich weis nicht wie das bei dir ist, aber ich glaube du brauchst eine Schaltung, die Dir ein High und ein Low Signal gibt, ich glaube man nennt das eine "Pull up/down Schaltung"

    Die Schaltung sieht bei mir so aus:

    http://netzdateien.ne.funpic.de/Schaltung1.bmp

    Ich habe den Roboter mit den Schaltern so programmiert, allerdings in C. Du kannst den Code so nicht verwenden du müstest ihn ein bisschen umschreiben.

    Hier der Code:

    Code:
    #define  F_CPU   1000000UL 
    #include <util/delay.h> 
    #include <avr/io.h>
    
    
    #define STATSLED0_ON  (PORTC |= 1<<PC0)
    #define STATSLED0_OFF (PORTC &= ~(1<<PC0))
    #define STATSLED1_ON  (PORTC |= 1<<PC1)
    #define STATSLED1_OFF (PORTC &= ~(1<<PC1))
    #define STATSLED2_ON  (PORTC |= 1<<PC2)
    #define STATSLED2_OFF (PORTC &= ~(1<<PC2))
    #define STATSLED3_ON  (PORTC |= 1<<PC3)
    #define STATSLED3_OFF (PORTC &= ~(1<<PC3))
    
    #define SWITCH_RIGHT (PIND & 1<<PD1)
    #define SWITCH_LEFT (PIND & 1<<PD0)
    
    
    
    void driveForward(){
    
    	// Motor 1 Forward
    	PORTD |= 1<<PD6;
    	PORTD &= ~(1<<PD7);
    	// Motor 2 Forward
    	PORTB |= 1<<PB2;
    	PORTB &= ~(1<<PB1);
    
    }
    
    void turnLEFTbackward(){
    	// Motor 1 backward
    	PORTD &= ~(1<<PD6);
    	PORTD |= 1<<PD7;
    	// Motor 2 stop
    	PORTB |= 1<<PB2;
    	PORTB |= 1<<PB1;
    }
    
    void turnRIGHTbackward(){
    	// Motor 1 stop
    	PORTD |= 1<<PD6;
    	PORTD |= 1<<PD7;
    	// Motor 2 backward
    	PORTB &= ~(1<<PB2);
    	PORTB |= 1<<PB1;
    }
    
    
    int main(){
    
    	DDRD = 1<<PD6 | 1<<PD7;			// PD6 PD7 Output Motor1;
    	DDRB = 1<<PB1 | 1<<PB2;			// PB1 PB2 Output Motor2;
    	
    	DDRD &= ~(1<<PD0 | 1<<PD1);		// PD0 PD1 Input Switches
    
    	DDRC = 1<<PC0 | 1<<PC1| 1<<PC2 | 1<<PC3;		// PC0 PC1 Output StatusLED 0,1,2,3
    	
    
    	// SWITCH_RIGHT 	= STATSLED2
    	// SWITCH_LEFT  	= STATSLED3
    
    	// !  = 0
    	// () = 1
    
    	while(1){
    
    
    		if(! SWITCH_RIGHT && ! SWITCH_LEFT){
    			STATSLED0_ON;
    			STATSLED1_ON;
    			STATSLED2_OFF;
    			STATSLED3_OFF;
    			driveForward();
    
    		}
    
    
    	else if(SWITCH_RIGHT && ! SWITCH_LEFT){
    			STATSLED0_OFF;
    			STATSLED1_ON;
    			STATSLED2_ON;
    			STATSLED3_OFF;
    			turnRIGHTbackward();
    			_delay_ms(1000);
    			driveForward();
    		}
    
    
    	else if( ! SWITCH_RIGHT && SWITCH_LEFT){
    			STATSLED0_ON;
    			STATSLED1_OFF;
    			STATSLED2_OFF;
    			STATSLED3_ON;
    			turnLEFTbackward();
    			_delay_ms(1000);
    			driveForward();
    
    		}
    	
    	}
    }
    Funktioniert bei mir besstens.

    Gruss

    rob_88_20P

    P.S. Was für einen IC verwendest du oder wilst du verwenden ?

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    03.12.2008
    Alter
    23
    Beiträge
    438
    Hi,
    Auf
    www.mikrocontroller.net

    hat es viele Informationen wie man das macht...
    Und auf http://www.shop.robotikhardware.de/s...alog/index.php
    hat es viele Sensoren und Controllerboards über die du dich schlau machen kannst...

    Grüsse!
    Wer keine Illusionen mehr hat, wird weiterhin existieren, aber aufgefhört haben zu leben.
    (Leonard da Vinci)

Berechtigungen

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