- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 24

Thema: Asuroprojekt mit Odometrie und LCD-Display

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #12
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Hier zuerst mal dein etwas umformatierter Code:
    PHP-Code:
    #include "stdlib.h"
    #include "asuro.h"
    #include "lcd.h"
    #include "i2c.h"


    int o 1;

    void start(int speed)
    {
        
    int keys;
        
    int i 1;
        
    int zaehler ;
        while(
    >0)
        {
            
    keys PollSwitchLCD();
            if (
    keys LCD_KEY_YELLOW)        //schwarzer Taster
            
    {
                while ( 
    zaehler == 0)
                {
                    if(
    speed 355)                    //Geschwindigkeit erhöhen
                    
    {
                        
    speed speed +10;
                        
    ClearLCD();
                        
    PrintSetLCD(0,0,"Geschwindigkeit");
                        
    SetCursorLCD(01);
                        
    zaehler  zaehler +1;
                        
    PrintIntLCD(speed);
                    }
                    
    zaehler  zaehler +1;
                }
            }
            else if (
    keys LCD_KEY_RED )    //roter Taster
                
    {                                //wechseln von der Geschwindigkeiseinstellung
                    
    0;                            //in den Messbetrieb
                
    }
                else if (
    keys LCD_KEY_BLUE )    //Blauer Taster
                    
    {
                        while ( 
    zaehler == 0)
                        {
                            if(
    speed >0)
                            {
                                
    speed speed -10;                //Geschwindigkeit vermindern
                                
    ClearLCD();
                                
    PrintSetLCD(0,0,"Geschwindigkeit");
                                
    SetCursorLCD(01);
                                
    PrintIntLCD(speed);
                                
    zaehler  zaehler +1;
                            }
                            
    zaehler  zaehler +1;
                        }
                    }

            if(!
    keys)                // für das einmalige hochzählen beim drücken eines knopfes
            
    {
                
    Msleep(100);
                
    zaehler 0;
            }
        }
        
    o--;
    }

    //Hauptprogramm
    int main(void)
    {
        
    //Geschwindigkeit
        //void int speed = 100;

        
    int speed 100;

        
    Init();
        
    InitI2C();
        
    InitLCD();
        
    GREEN_LED_ON;

        while(
    0)
        {
            
    PrintSetLCD(0,0,"Geschwindigkeit");
            
    SetCursorLCD(01);
            
    PrintIntLCD(speed);
            
    start(speed);
        }
        
    MotorDir(FWD,FWD);
        
    MotorSpeed(speed,speed);

    return 
    0;

    Was mir als Wichtigstes erscheint: Eigentlich dürftest du nur einmal eine Ausgabe von speed erhalten, denn nach dem ersten Aufruf von start() wird o (sehr schlechter Variablenname!) zu 0 und das Programm verläßt nach MotorSpeed(); den asuro (und verschwindet im Nirwana!):

    PHP-Code:
        while(0)
        {
    ...
            
    PrintIntLCD(speed);
            
    start(speed);
        }
        
    MotorDir(FWD,FWD);
        
    MotorSpeed(speed,speed);

    return 
    0;

    Zur besseren Übersichtlichkeit würde ich die if/else-Verschachtelungen in Start() durch switch/case ersetzen. Dann würde ich das Hauptprogramm in eine Endlosschleife packen und dann einen neuen Versuch starten.

    "Würde", denn ohne LCD mit seiner Lib und der I2C-Lib kann ich nun überhaupt nichts mehr selbst testen, ich kann's nun nicht mal mehr übersetzen. :(

    Aber egal, mach mal weiter.

    Gruß

    mic


    Edit: Anstelle von while(o > 0) ein while(1) wäre ein schneller Test für die start()-Funktion ohne Motorbewegung. ;)
    Geändert von radbruch (31.03.2011 um 19:56 Uhr)
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

Ähnliche Themen

  1. Odometrie
    Von HAWK-Matze im Forum Asuro
    Antworten: 33
    Letzter Beitrag: 05.03.2008, 09:40
  2. Odometrie die 10.000
    Von NebuK im Forum Asuro
    Antworten: 5
    Letzter Beitrag: 10.11.2006, 13:02
  3. odometrie
    Von Toschtosch im Forum Asuro
    Antworten: 9
    Letzter Beitrag: 03.11.2006, 19:52
  4. Navigation mit Odometrie
    Von Rosowitsch im Forum Asuro
    Antworten: 1
    Letzter Beitrag: 07.06.2006, 16:36
  5. Odometrie LED
    Von Rosowitsch im Forum Asuro
    Antworten: 2
    Letzter Beitrag: 30.05.2006, 20:29

Stichworte

Berechtigungen

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

LiFePO4 Speicher Test