- Akku Tests und Balkonkraftwerk Speicher         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 24

Thema: C-Anfänger braucht Hilfe

  1. #11
    Neuer Benutzer Öfters hier
    Registriert seit
    09.11.2006
    Beiträge
    20
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Ne, es liegt eher am Programm... dieses BackLED(ON,ON); ist auch nicht ganz unschuldig .

    Naja, mit so einer endlosen while Schleife ums ganze Programm läufts ja einigermaßen:
    Code:
     #include "asuro.h"
    
       
    int main (void)
    {
    
    Init();
    while(1){
    MotorDir(FWD,FWD);
    MotorSpeed(130,130);
    StatusLED(GREEN);
    
    while(PollSwitch()>0){MotorDir(BREAK,BREAK);StatusLED(RED);FrontLED(ON);BackLED(OFF,ON);}
    }
    
    return 0;
    }
    Doofe PollSwitch Funktion...

  2. #12
    Neuer Benutzer Öfters hier
    Registriert seit
    12.11.2006
    Beiträge
    11
    Hurra! Danke. Er macht das was er soll.

    So, die Frage ist nur, wieso?
    Und das ist keineswegs ne dumme Frage, da viele mir nen Code gepostet haben, der dann trotzdem nicht funktionierte.
    Ich versteh nicht ganz wieso die andren nicht funktioniert haben und dieser schon. (Und das will ich verstehen, denn copy&paste kann jeder :P)

    Code:
      #include "asuro.h"
    
       
    int main (void)
    {
    
    Init();
    while(1){                             //Diese Schleife immer ausführen und                                               
                                             //wiederholen
    MotorDir(FWD,FWD);           //Motor auf vorwärts
    MotorSpeed(130,130);        //loschicken 
    StatusLED(GREEN);            //Status auf Grün schalten
    
    while(PollSwitch()>0)          //wenn jetzt eine Taste gedrückt wird und  
                                            // somit der wert über eins kommt, dann die 
                                            //schleife wiederholen
    {
    MotorDir(BREAK,BREAK);    //stehenbleben
    StatusLED(RED);                 //Status auf Rot schalten
    FrontLED(ON);                    //die "unterboden" Beleucthung an
    BackLED(ON,ON);              //Back LEDs an
    }
    }
    
    return 0;
    }
    Soweit ist mir alles klar, ich weiss aber ned wieso das geht und das andre nicht. :/

  3. #13
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    38
    Beiträge
    4.068
    PollSwitch macht gern Probleme, du musst die Funktion oft abfragen um am ende einen richtigen wert zu erhalten.

    im code vom mastermsc ist das problem, dass die motoren nur einmal aktiviert werden. der asuro fährt also. und sowie die taster gedrückt werden bleibt er stehen, und fährt von alleine nicht wieder los (motordir und motorspeed sind ausserhalb von while(1).
    da die pollswitch funktion jedoch schon zu beginn einen falschen wert (!=0) liefert, bleibt der asuro sofort stehen bzw füängt gar nicht erst an zu fahren (in der millisekunde die er "fährt" sieht man nicht viel). und dann wars das: er wird ja nicht wieder gestartet...
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  4. #14
    Neuer Benutzer Öfters hier
    Registriert seit
    12.11.2006
    Beiträge
    11
    Achso, verstehe.

    Ich danke für die Hilfe und werd mich mal an andren Sachen probieren.
    (und vllt bald wieder melden ;P)

  5. #15
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    38
    Beiträge
    4.068
    Viel Glück!

    Es ist nicht weiter schlimm, in jedem durchlauf der schleife immer wieder motordir und motorspeed festzulegen. das ist zwar nicht die eleganteste lösung, aber es funktioniert ganz gut =)
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  6. #16
    Neuer Benutzer Öfters hier
    Registriert seit
    12.11.2006
    Beiträge
    11
    Hi. =)

    Ich hab jetzt verstanden wie man die Schleifen richtig anwendet. Deswegen hab ich auch schon mein fertig.

    Der Asuro fährt los, trifft er auf Licht, weicht er den Licht aus und fäht in die andre Richtigung. Falls einer der Taster betätigt wird (sprich Kollision), dann beibt er stehen.
    So weit so gut, funktioniert alles und alles selbst programmiert. *stolz*

    der code:
    Code:
       #include "asuro.h"
    
       
    int main (void)
    {
    unsigned int data[2];
    Init();
    
    
    	while (1)
    	{
    		FrontLED (OFF);
    		StatusLED (GREEN);
    		MotorDir (RWD,RWD);
    		MotorSpeed (200,200);
    		LineData (data);
    		if (data[0]>data[1])
    			{MotorSpeed (200,70);
    			BackLED (OFF,ON);}
    		if (data[0]<data[1])
    			{MotorSpeed (70,200);
    			BackLED (ON,OFF);}
    		PollSwitch();
    		while (PollSwitch()>1)
    			{MotorDir (BREAK,BREAK);
    			MotorSpeed (0,0);
    			StatusLED (RED);
    			FrontLED (ON);}
    	}
    return 0;
    }
    Jetzt zu meiner Frage..
    wie kann ich die Werte die mir die Linienfolger ausgeben erhalten?
    Weil ich würde gerne wissen wie viel Licht einen Wert ergibt.
    Wenn ich das weiss dann mach ich 2 Variablen. hell und dunkel.
    es wird gleich die lienenfolger ausgelesen und entschieden ob es hell oder dunkel auf den jeweiligen seiten ist.
    1 hell 1 dunkel ->licht ausweichen
    2 dunkel ->stehen bleiben
    2 hell ->weiterfahren und schatten suchen..
    so weit die theorie, aber mit der praxis happerts.

    wie kann ich herausfinden welche werte die Sensoren ausgeben?
    oder muss ich herumtesten bis ich passende werte hab?
    (ich weiss die werte hängen stark vom umgebungslicht ab usw.)

    Könnt ihr mir helfen?

    edit:
    jönnt natrürlich auch sein, das mit den dunke-hell ein blödsinn ist und das nicht grade sinnvoll ist. ^^

  7. #17
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    01.11.2006
    Beiträge
    433
    also ausgeben kannst du die werte mit Ser Write()
    Syntax: SerWrite(variable mit wert, 4)
    genaueres dazu in der anleitung zum asuro

    ABER: ob ein wert hell oder dunkel ist, hängt unter anderem vom umgebungslicht ab.
    dehalb:
    mach leiber ein arrey mit allen gemessenen werten. davon berechnest du den mittelwert.
    ob ein wert hell oder dunkel ist, kann man nun mit einem vergleich mit dem mittelwert feststellen

    mfg EDH

  8. #18
    Neuer Benutzer Öfters hier
    Registriert seit
    12.11.2006
    Beiträge
    11
    Aso, ups. -.- Ich hab die Anleitung scho so oft glesen und nie drann gedacht.
    DAchte vorhin eher an ein Prog wie das:
    http://chris.lugr.de/AsuroCommunicator2.jpg
    Zitat Zitat von EDH

    ABER: ob ein wert hell oder dunkel ist, hängt unter anderem vom umgebungslicht ab.
    dehalb:
    mach leiber ein arrey mit allen gemessenen werten. davon berechnest du den mittelwert.
    ob ein wert hell oder dunkel ist, kann man nun mit einem vergleich mit dem mittelwert feststellen

    mfg EDH
    Wie genau meinst du das?
    Er soll messen, wert speicher, messen, wert speicher, und dann den die summe des ganzen durch die anzahl dividieren?
    es ne gute idee, aber ich bin mir nicht sicher wie man das machen soll
    ungefähr so?
    Code:
    unsigned int data[2];
    unsigned int mittel;
    while(1)
    {LineData(data);
    mittel=(data[0]+data[1])/2;  //so??
    
    *jetzt die untercheidung hell dunkel+reaktion..*
    }
    Darf man das so schreiben?

  9. #19
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    01.11.2006
    Beiträge
    433
    als erster muss man rauskriegen, wie viele werte in das arrey schon geschrieben sind.
    daur setzt man am besten als erster alle werte auf null. vor jeder berechnugn des mittelwertes überpfüft man dann welcher wert der erste ist, der null ist. das ist dann die anzahl. dann addiert man alle werte des arreys, und teilt durch die anzahl

    ein anderes problem ist, wieviele werte speichert man ab ? (der asuro hat nicht unbegrenzten speicher). verkraftet der asuro ein arrey mit 500 elementen?

    tja ähh soweit die theorie...
    nun zu deinem code oben:
    das geht eigentlcih schon, allerdings sind 2 werte ein bisschen wenig

    mfg EDH

  10. #20
    Neuer Benutzer Öfters hier
    Registriert seit
    12.11.2006
    Beiträge
    11
    Wenn ich ehrlich bin, hab ich ka wie ich das anstellen soll.

    1. Weis ich nicht genau weiss wie man mit den den Strukturen zb data[5] umgeht. (Ich lerne C erst und da dass: http://www.fh-augsburg.de/informatik...-kurs7.htm#7_1 meine einzige Bezugsquelle ist und ich es dort nicht ganz verstehe, hab ich ein Problem. xD
    2. Weiss ich nicht ob ich z.b data[x+1] schreiben darf
    3.ich nicht genau mit dem LineData(bla); umgehen kann.
    zb
    Code:
    unsigned int bla[5];
    LineData(bla);
    //bla[0] ist der wert des linken sensors 
    und bla[1] der des rechtens..
    gibts evt. auch bla[2,3,4..5?], wenn ja?
    was für nen wert haben die?
    fragen über fragen =)[/code]

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress