- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 5 von 6 ErsteErste ... 3456 LetzteLetzte
Ergebnis 41 bis 50 von 55

Thema: ASURO neuling (noob) hat mal Programiert

  1. #41
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    Anzeige

    Praxistest und DIY Projekte
    ich weis, dass es vielleicht pedantisch wirkt, aber es heisst vorwÄrts also Ä oder AE aber je öfter ich "vorwerts" lese und wenn es auch noch kopiert wird, fangen sich mir echt an die fußnägel zu kräuseln ..ich weis das ich auch manchmal schwer vergreife, aber nicht bös gemeint

    ich würde aber auch auf die fehlenden klammern tippen, zum einrücken des codes noch ein kleiner tipp

    Code:
    returntype_t methodename (parametertype_t parameter name)
    {
         dosth();
         return value_of_returntype_t;
    } 
    
    alternativ
    
    void methode(void)
    {
        doSth();
        return; // return ohne einen parameter
    }

  2. #42
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Jepp, es muss natürlich == heißen! Prima erkannt! Copy&Paste defekt?

    Das ä/e lenkt zu sehr vom eigentlichen Thema ab...
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #43
    Das direkte Umschalten der Motordrehrichtung bei hoher MotorSpeed erzeugt möglicherweise Impulse die den asuro reseten. Oder Akkus leer/Wackler in der Spannungsversorgung (Ein/Aus-Schalter).
    Das mit den Impulsen bei zu hoher Drehzahl. Ist das ne Vermutung oder ist das so? Man könnte doch den MotorSpeed "langsam" (innerhalb einer Sekunde oder sowas) herunterregeln, dann MotorDir umschalten und dann wieder hochregeln. Würde das was bringen? Oder ich stell allgemein den MotorSpeed runter, aber dann flitzt er nicht mehr so
    Also Batterien sind voll und Wackler stell ich keinen fest. Weil das Programm an sich scheint ja zu funktionieren.

  4. #44
    Benutzer Stammmitglied
    Registriert seit
    17.05.2009
    Beiträge
    46
    Ich habe nochmals am Programm weiter gearbeitet. Nun ist Meine Frage:
    Kann man Odometrie und Line gemeinsam benutzen?
    Code:
    int lData[2], oData[2];
    
    
    l1 = (lData[1]);
    o1 = (oData[1]);
    Momentan will ich nur je einer der beiden Werte auslesen.

    Dies Funktioniert auch mit der Odometrie, leider reagiert der ASURO nicht auf Line.



    [Edit]
    Hat sich erledigt, habe es herausgefunden

    Hier Ist nun mein fertiges Programm es wurde getestet und Funktioniert einwandfrei.

    Szenario: Weisses Quadrat mit Schwarzem Rand. Darin befinden sich Hindernisse.
    Der Asuro bleibt im Quadrat. Wenn er mit einem Gegenstand kollidiert, weicht er diesem aus. Die Tasten K1 und K6 sind definiert, restliche Ausweichaktionen sind zufällig (Odometrie und Radstellung).

    Code:
    #include "asuro.h"
    
    
    //Tasten
    
    #define K6		taste==1		//Taste 6
    #define K1		taste==32		//Taste 1
    
    
    
    //Warten
    
    #define WAIT1 for (i=0; i<1000; i++) {Sleep(72);}	//1 Sekunde
    
    #define WAIT2 for (i=0; i<400; i++) {Sleep(72);}	//90 Grad-Kurve
    
    
    
    //Fahrten
    
    int i,o1,l1;
    int lData[2], oData[2];
    char t1,t2,t3, taste;
    
    void vorwaerts (void)
    	{StatusLED (GREEN);
    	 BackLED (OFF,OFF);
    	 MotorDir (FWD,FWD);
    	 MotorSpeed (124,120);}
    
    void links (void)
    	{StatusLED (RED);
    	 BackLED (ON,OFF);
    	 MotorSpeed (0,0);
    	 WAIT1;
    	 MotorDir (RWD,RWD);
    	 MotorSpeed (124,120);
    	 WAIT1;
    	 MotorDir (FWD,RWD);
    	 WAIT2;
    	 MotorSpeed(0,0);
    	 WAIT1; }
    
    void rechts (void)
    	{StatusLED (RED);
    	 BackLED (OFF,ON);
    	 MotorSpeed (0,0);
    	 WAIT1;
    	 MotorDir (RWD,RWD);
    	 MotorSpeed (124,120);
    	 WAIT1;
    	 MotorDir (RWD,FWD);
    	 WAIT2;
    	 MotorSpeed (0,0);
    	 WAIT1;}
    
    
    
    //Start
    
    int main(void)
    {	
    	Init();
    	
    	while (1)
    	{
    		
    		l1 = (lData[1]);
    		o1 = (oData[1]);
    		
    		t1 = PollSwitch();
    		t2 = PollSwitch();
    		t3 = PollSwitch();
    		
    		FrontLED(ON);
    		LineData		(lData);
    		OdometrieData	(oData);
    		
    		if (l1 < 50)
    		{
    			if (o1 > 600) {rechts();}
    			else {links();}
    		}
    		
    		else if (t1 && (t1=t2) && (t1=t3))
    		{
    			
    			taste=t1;
    			
    			if		 (K6)	{rechts();}
    			else if (K1)	{links();}
    			else			{
    							if (o1 > 600) {rechts();}
    							else {links();}
    							}
    		}
    		
    		else {vorwaerts();}
    	}
    return (0);
    }

  5. #45
    Benutzer Stammmitglied
    Registriert seit
    25.05.2009
    Ort
    Cleebronn
    Alter
    30
    Beiträge
    80
    hey das programm ist der hammer du hast es voll drauf im gegensatz zu mir -.-

    Gruß Jonas Weber

    ps. mach weiter so!!!!!

  6. #46
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.170
    Du lehrst schnell. Nur ein par kleinigkeiten.

    Code:
    int i,o1,l1;
    int lData[2], oData[2];
    char t1,t2,t3, taste;
    Diesen variablen declarationen gehoren eigentlich im main funktion. Nur wenn sie 'global' benutz werden (das heist jeder function muss zugang haben oder andern konnen) mussen sie ausen die main funktion deklariert werden. Sondern konnte man damit fehlerhafte Code produzieren wenn mehrere funktionen auch die variablen i, t1, t2, t3, taste, lData[], oData[] in ihren code anrufen. (lies mal uber "Gültigkeitsbereich" in diesem C-tutorial hier im Roboternetz: http://www.rn-wissen.de/index.php/C-Tutorial)

    while (1)
    {
    l1 = (lData[1]);
    o1 = (oData[1]);


    t1 = PollSwitch();
    t2 = PollSwitch();
    t3 = PollSwitch();

    FrontLED(ON);
    LineData (lData);
    OdometrieData (oData);

    Diesen vet gedruckte Zeilen wurde ich umdrehen. Erst mal die lData und oData mit Werte einstellen im LineData und OdometriData funktionen, und danach den Rechter Werten in i1 und o1 ubertragen. Am anfang des ausfuhren einer Programm kan jeder speicherplatz einer unbekante werte haben. Die sind nicht immer 0 (vieleicht schon 'immer nicht 0'), oder eine sichere wert die das program nicht absturzen lasst. Bei dem ersten eintrit der While-schleife werden diesen unsichere werten im speicherplatz im nachsten If's verglichen. Deine If's hier sind nicht kritisch, aber was wen da einer Wurzel-funtion steht der etwas von einer negatiefe werte machen mus? Das ist unmoglich! (na ja, ohne 'komplizierte' mathematik )

    Code:
    		if (l1 < 50)
    		{
    			if (o1 > 600) {rechts();}
    			else {links();}
    		}
    Eigentlich sind die Variabelen l1 und o1 uberflussich. Du konnte hier auch (oData[1]>600) und (lData[1]<50) hinter if's setzen.

  7. #47
    marcel_asuro
    Gast
    hey,

    ich habe dieses programm hier:

    Code:
    #include "asuro.h"
    
    int main(void)
    {
    	Init(); // fein :)
    	while(1)
    	{
    		if (PollSwitch()==0)
    		{
    			MotorDir(FWD,FWD);
    			MotorSpeed(100,100);
    			BackLED(ON,ON);
    			FrontLED(ON);
    			StatusLED(RED);
    		}
    		else
    		{
    			MotorDir(FWD,FWD);
    			MotorSpeed(0,0);
    			StatusLED(RED);
    		}
    // Egal was PollSwitch() zurückliefert, ab hier leuchtet die StatusLED rot
    		{
    			MotorDir(RWD,RWD);
    			MotorSpeed(150,150);
    			BackLED(ON,ON);
    		}
    // spätestens ab hier sind die BackLEDs an
    		{
    			MotorDir(BREAK,RWD);
    			MotorSpeed(0,150);
    			BackLED(ON,ON);
    			FrontLED(ON);
    		}
    // und nun ist auch die FrontLED sicher eingeschaltet
    		{
    			MotorDir(FWD,FWD),
    			MotorSpeed(150,150);
    		}
    // und der asuro sollte nun mit 150 nach vorne düsen
    	}
    	return 0;
    }
    das programm kopiere ich doch in die datei test.c (im ordner first try) [oder nicht?] dann klick ich auf tools>make [errors: none] ok, dann an die seite legen das programmers notepad2 und das flashtool öffnen: text.hex aus dem ordner first try auswählem programm drücken asuro anschalten und rüber flaschen !!! ok, wenn es fertig ist alles grün !!!! dan asuro aus und wieder an machen [alles soweit richtig, oder muss ich im programmers notepad 2 auf speichern befor ich das flash-tool benutze????] wenn der asuro angeschaltet wird geht die status led sofort auf GELB, dann auf grün, und bleibt die ganze zeit grün.....

    ich weiß nicht was das problem ist !!!!


    hoffe, dass ihr mir helfen könnt !!!!


    gruß marcel

    [Edit] Einrückungen und Kommentare im Code eingefügt von radbruch

  8. #48
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.170
    Den test.c muss gespeichert werden vordem es compiliert wird ("tools/make"). Es hat keinen sin gleich vordem du den flash programme braucht. Weil die test.hex nicht geandert wird dadurch.

    Das den Statusled nur gelb und grun leuchtet sagt mir das den geflashten test.hex von den ungeanderten firsttry programme ist. Deinem program macht den statusled im jedenfall rot. (rot bei irgend einer taster geprellt, oder rot bei keiner taster geprellt) Und wird danach niemahls auf eine andere farbe eingestellt. Kuck mal (im Windows Explorer venster, oder datei eigenschaffen) ob dem 'gespeichert auf" oder "geandert auf" zeiten gleich sind an das moment wen du es zu letzten compiliert hat.

    Nur einer weitere anweisung fur dein program. Du verwendest keinen wartezeiten in deinem program. Die MotorDir, MotorSpeed und Backled, Frontled funktionen enden sehr schnell. Dadurch wird deinem asuro in einer fraktion einer sekunde wieder umschalten im ruckwartsgang oder stehenbleiben. Aber den radern haben dan nocht kaum gedreht, oder gar nichts.

    Auch wurde ich selbst die backleds nur anschalten wenn den motoren gebremst werden (MotorSpeed auf 0, oder MotorDir auf Break ). Damit kannst du sehen was Asuro versucht zu machen. Dein program lasst sie leuchten an jedem stelle. Wenn irgend etwas fehlt mit den MotorDir oder MotorSpeed funktionen kannst du nicht merken an welcher stelle er is in das program.

  9. #49
    marcel_asuro
    Gast
    naja, ich verstehe nur bahnhof (kann das mal jm. auf HOCHdeutsch) erkären und nicht wie valen, diese "sprache" versteh ich net, das ist z.T deutsch z.T was weiß ich was


    gruß marcel

    ps. ich wäre dankbar, wnn mir mal jm. ein programm (.hex) geben könnte

  10. #50
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.170
    Verzeihung, aber deutsch ist nicht meiner mutter sprache. Und versuche nur zu helfen. Danke.

Seite 5 von 6 ErsteErste ... 3456 LetzteLetzte

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress