- Labornetzteil AliExpress         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 12 von 12

Thema: M32 ADC Werte bereich definieren

  1. #11
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    18.01.2010
    Ort
    Bielefeld
    Beiträge
    101
    Anzeige

    E-Bike
    habe das nun folgendermaßen gemacht:
    Code:
    int tastenfeld(void)
    {
    	nummer=0;
    	numer=nummer;
    	i=0;
    	flag=1;
    	do{
    	adc2 = readADC(ADC_2);
    	mSleep(10);
    	adc2a = readADC(ADC_2);
    	mSleep(10);
    	adc2b = readADC(ADC_2);
    	adc=adc2+adc2a+adc2b;
    	adc=adc/3;
    	if (nummer>numer)
    	{
    	nummer=nummer*10;
    	numer=nummer;
    	}
    	setCursorPosLCD(0,i+9);
    	if(adc2>262&&adc2<266)
    	{
    		writeStringLCD("3");
    		nummer=nummer+3;
    		num[i]=3;
    		i=i+1;
    		mSleep(300);
    	}
    	else if(adc2>282&&adc2<286)
    	{
    		writeStringLCD("6");
    		nummer=nummer+6;
    		num[i]=6;
    		i=i+1;
    		mSleep(300);
    	}
    	else if(adc2>302&&adc2<306)
    	{
    		writeStringLCD("9");
    		nummer=nummer+9;
    		num[i]=9;
    		i=i+1;
    		mSleep(300);
    	}
    	else if(adc2>324&&adc2<328)
    	{
    		flag=0;
    	}
    	else if(adc2>361&&adc2<365)
    	{
    		writeStringLCD("2");
    		nummer=nummer+2;
    		num[i]=2;
    		i=i+1;
    		mSleep(300);
    	}
    	else if(adc2>400&&adc2<404)
    	{
    		writeStringLCD("5");
    		nummer=nummer+5;
    		num[i]=5;
    		i=i+1;
    		mSleep(300);
    	}
    	else if(adc2>443&&adc2<447)
    	{
    		writeStringLCD("8");
    		nummer=nummer+8;
    		num[i]=8;
    		i=i+1;
    		mSleep(300);
    	}
    	else if(adc2>490&&adc2<494)
    	{
    		writeStringLCD("0");
    		nummer=nummer*10;
    		num[i]=0;
    		i=i+1;
    		mSleep(300);
    	}
    	else if(adc2>552&&adc2<556)
    	{
    		writeStringLCD("1");
    		nummer=nummer+1;
    		num[i]=1;
    		i=i+1;
    		mSleep(300);
    	}
    	else if(adc2>647&&adc2<651)
    	{
    		writeStringLCD("4");
    		nummer=nummer+4;
    		num[i]=4;
    		i=i+1;
    		mSleep(300);
    	}
    	else if(adc2>765&&adc2<769)
    	{
    		writeStringLCD("7");
    		nummer=nummer+7;
    		num[i]=7;
    		i=i+1;
    		mSleep(300);
    	}
    	else if(adc2>918&&adc2<921)
    	{
    		if(i==0)
    		{
    			clearPosLCD(0,i+9,1);
    		}
    		else
    		{
    			
    			
    			i=i-1;
    			nummer=nummer-num[i];
    			clearPosLCD(0,i+9,1);
    		}
    		mSleep(200);
    	}
    	}while(flag==1);
    	sound(100,100,50);
    	nummer=nummer/10;
    	clearPosLCD(0,9,i);
    	return nummer;
    }
    # zum bestätigen und
    * um zu löschen.

    habe aber probleme wenn ich die 0 eingebe dann spuckt der immer ganz komische werte aus.
    und wenn ich bei einer 4 stelligen zahl die letzte ziffer lösche gibt er am ende nur 2 ziffern aus auch wenn ich die 4 durch eine andere ersetzt habe
    (wenn ich 1564 eingebe, 4 lösche und dafür eine 2 mache also 1562 gibt er nur 15 zurück)

  2. #12
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.235
    Eventuell ginge es auch über eine switch / case Anweisung ?!

    Code:
    switch (ad)
       {
        case >3&&<6:
        //Eine Routine
        break;
    
        case >6&&<9:
        //Eine andere Routine
        break;
        
       default:
       //Keine Bedingung erfüllt
       };

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress