- 3D-Druck Einstieg und Tipps         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 13 von 13

Thema: switch und case

  1. #11
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.07.2004
    Beiträge
    270
    Anzeige

    Powerstation Test
    Hi,
    hier der aktuelle Code:
    Code:
     int8_t i = 0;
      int8_t j = 1;
      int8_t k = 0;
     for(;;)
     {
      char test[] = "Wert in Sektor\n\r";
      char *p_test = test;
      char test2[] = "hallo!\n\r";
      char *p_test2 = test2;
    
        
     for(k=0;k<=9;k++)
       { 
        sektor[k] = 0;
        sektor_2[k] = 0;
       }
      for(i=1;i<51;i++)
      {
       if((i>0) && (i<=5))
        {1
    	 sektor[0] += get_adc(0);
    	}
       if((i>5) && (i<=10))
        {
    	 sektor[1] += get_adc(0);
    
    	}
       if((i>10) && (i<=15))
        {
    	 sektor[2] += get_adc(0);
    
    	}
       if((i>15) && (i<=20))
        {
    	 sektor[3] += get_adc(0);
    
    	}
       if((i>20) && (i<=25))
        {
    	 sektor[4] += get_adc(0);
    
    	}
       if((i>25) && (i<=30))
        {
    	 sektor[5] += get_adc(0);
    
    	}
       if((i>30) && (i<=35))
        {
    	 sektor[6] += get_adc(0);
    
    	}
       if((i>35) && (i<=40))
        {
    	 sektor[7] += get_adc(0);
    	}
       if((i>40) && (i<=45))
        {
    	 sektor[8] += get_adc(0);
    
    	}
       if((i>45) && (i<=50))
        {
    	 sektor[9] += get_adc(0);
    
    	}
     
       waitms(100); 
       servo_goto(i);
      }
      
      for(j=0;j<=9;j++)
       {
        sektor_2[j] = sektor[j] / 5;
    	*p_test2 = 0;
    	itoa(sektor_2[j], p_test2, 10); 
        send_string(p_test2);
        send_string(p_test);
        waitms(1000);   
       }
       waitms(3000);
       }  
    }
    Die sektor-Variablen sind so sektor[9] bzw sektor_2[9] deklariert.
    @Sprinter Ich habe versucht deine Tips zu umzusetzen, aber es geht dennoch nicht, der letzte Wert ist weiterhin 200 und die Werte davor >1024, wobei ich das Gefühl habe, dass sie ansteigen.

  2. #12
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.07.2004
    Beiträge
    270
    Hallo nochmal,
    also das eine Problem ist gelöst, ich habe in der ADC-Routine davor 4mal in eine variable geschrieben und danach gemittelt, jetzt schreibe ich 10-mal in die Variable und es kommen passable Ergebnisse raus, ich weiss aber nicht warum das genau so ist. Vllt hats was mit timing zu tun.
    Das jetzige Problem ist noch, dass der letzte Bereich immer 200 liefert.
    Wenn ich jedoch das waitms()

    for(j=0;j<=9;j++)
    {
    sektor_2[j] = sektor[j] / 5;
    *p_test2 = 0;
    itoa(sektor_2[j], p_test2, 10);
    send_string(p_test2);
    send_string(p_test);
    waitms(1000);
    }

    verändere, verändert isch auch der letzte Wert, er bleibt jedoch immer konstant, er scheint mit der wartezeit zusammenzuhängen.[/code]

  3. #13
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Zitat Zitat von Spurius
    Die sektor-Variablen sind so sektor[9] bzw sektor_2[9] deklariert.
    Die Deklaration muss lauten
    <typ> sektor[10];
    weil du 10 Werte im Feld hast, nämlich von 0..9.

    Informatiker am Bahnhof: "Null, eins, zwei, ... Wo ist mein dritter Koffer??!!"
    Disclaimer: none. Sue me.

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

Labornetzteil AliExpress