- 12V Akku mit 280 Ah bauen         
Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 24 von 24

Thema: go funktion

  1. #21
    Benutzer Stammmitglied
    Registriert seit
    07.09.2006
    Beiträge
    43
    Anzeige

    LiFePo4 Akku selber bauen - Video
    hallöchen leute, kam gerad nach hause und wollte einfach nochmal kurz in meine daten reinschauen, habe den compiler installiert und ma ein "test" programm geschrieben... also laut compiler gibt es keine fehler bei der umgeschriebenen kreis() funktion.. wäre super nett wenn mal einer kurz sein asuro flashen könnte und gucken kann ob alles so funktioniert wie es funzen sollte.

    kreis():
    Code:
    /***************************************************************************
    *	void Kreis(int distance, double speed = 150)                                                                         
    *	
    *   input
    *	distance: postiv->go forward ; negativ-> go backward
    *   speed: sets motorspeed
    *
    ***************************************************************************/
    void Kreis(int distance, double speed)
    {
    	int enc_count = 0;
    	int tot_count = 0;
    	int diff = 0;
    	double pi = 3.141592654;
    	double radius = 50; 
    	double r_rad = ((radius+11.5)*2*pi)/100; 
    	double l_rad = (radius*2*pi)/r_rad;
    	double speed1 = (speed/100)*l_rad;
    	double l_speed = speed;
    	double r_speed = speed+speed1;
    	enc_count=abs(distance);
    	
    	
    	Encoder_Set(0,0);		// reset encoder
    
    	MotorSpeed(l_speed,r_speed);
    	if(distance<0) MotorDir(RWD,RWD);
    	else MotorDir(FWD,FWD);
    
    	while(tot_count<enc_count) {
    		tot_count += encoder[LEFT];
    		diff = encoder[LEFT] - encoder[RIGHT];
    		if (diff > 0) { //Left faster than right
    			if ((l_speed > speed) || (r_speed > 244)) l_speed -= 10;
    			else r_speed += 10;
    		}
    		if (diff < 0) { //Right faster than left
    			if ((r_speed > speed+speed1) || (l_speed > 244)) r_speed -= 10;
    			else l_speed += 10;
    		}
    	Encoder_Set(0,0);		// reset encoder
    	MotorSpeed(l_speed,r_speed);
    	Msleep(1);
    	}
    	MotorDir(BREAK,BREAK);
    	Msleep(200);
    }
    testprogramm könnte z.b. so aussehen
    Code:
    #include "asuro.h"
    #include <stdlib.h>
    
    int main(void)
    {
    FrontLED(ON);
    StatusLED(GREEN);
    Kreis(100,110);
    }
    mfg Toschtosch und gute nacht^^

  2. #22
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    12.06.2005
    Ort
    Südwestdeutschland
    Beiträge
    1.147
    Blog-Einträge
    3
    Soweit ich weiss unterstüzt der GNU-AVR C Compiler kein double format. Er unterstützt single precession.
    Bei kleinen Mikrokontrollern versucht man möglichst ohne Fließkommaarithmetik auszukommen, da bei der Einbindung der Rechenfunktionen sehr viel Speicher verbraucht wird.

    Gruss,
    stochri

  3. #23
    Benutzer Stammmitglied
    Registriert seit
    07.09.2006
    Beiträge
    43
    naja, aber ohne die mathematischen formeln kann der asuro auch schlecht via radius einen kreis fahren

    hmm, irgendwie doof

  4. #24
    Benutzer Stammmitglied
    Registriert seit
    07.09.2006
    Beiträge
    43
    mal ne kleine frage, kann ich anstatt von double nich die gleitkommazahlen in "float" berechnen? oder unterstützt der AVR compiler auch kein float? ich find irgendwie nich was der compiler unterstützt und was nich

    mfg toschtosch

Seite 3 von 3 ErsteErste 123

Berechtigungen

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

Solar Speicher und Akkus Tests