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

Thema: Taster für RP6

  1. #11
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Anzeige

    Powerstation Test
    Aber ich weiß nicht wie man festelt welche taste gedrückt ist ich hab zwischen jeder taste einen 10 k wiederstand eingefügt.
    Das ist einfach:
    Du gibst den Wert von keys für jede der gedrückten Tasten aus.

    Angenommen, eine Taste gibt den Wert 230 aus, die nächste 400 und die folgende 570.
    Dann errechnest du den Mittelwert zwischen den 3 Tasten, also 315 und 485.
    Die Tasten kann man dann mit einer If-Abfrage feststellen:
    If (keys < 315) "Taste 1 gedrückt"
    If ((keys > 315) && (keys < 485)) "Taste 2 gedrückt"
    If ((keys > 485) && (keys < 1000)) "Taste 3 gedrückt"

    Gruß Dirk

  2. #12
    Benutzer Stammmitglied
    Registriert seit
    27.06.2009
    Alter
    28
    Beiträge
    54
    vielen vielen Dank werde das morgen gleich ausßprobieren

  3. #13
    Benutzer Stammmitglied
    Registriert seit
    27.06.2009
    Alter
    28
    Beiträge
    54
    Bei mir ist aber der wert viel geringer woran kann das liegen ?
    zb. Bei taster 1 ungedrückt ist der wert 255 und gedrückt ist der wert 5.

    So sieht mein programmcode aus jetzt mal nur für den taster 1.

    Code:
    #include "RP6RobotBaseLib.h" 	
    
    int main(void)
    {
    	initRobotBase();
    	
    	
    	writeString_P("\n\n   _______________________\n");
    	writeString_P("   \\| RP6  ROBOT SYSTEM |/\n");
    	writeString_P("    \\_-_-_-_-_-_-_-_-_-_/\n\n");
    	
    
    	uint8_t keys;
    	uint8_t counter;
    	uint8_t counter1;
    	
    	setLEDs(0b111111); 
    	mSleep(1000); 
    	setLEDs(0b000000);
    	mSleep(500); 
    	keys = readADC(ADC_ADC0);
    	counter = keys;
    	writeInteger(counter, DEC);
    	writeString_P("\n\n");
    	while(true)
    	{
    		 keys = readADC(ADC_ADC0);
    		 if (keys == 5)  
    		 {
    		 counter1 = keys;
    		 writeInteger(counter1, DEC);		 
    		 setLEDs(0b11111);
    		 mSleep(1000);
    		 setLEDs(0b000000);
    		 }
    		 
    		 
    	}
    return 0;	
    }

  4. #14
    Erfahrener Benutzer Roboter Experte Avatar von Virus
    Registriert seit
    15.09.2009
    Ort
    Duisburg
    Alter
    29
    Beiträge
    527
    in der simulation mit yenka gibt deine schaltung aus:
    5;2,5;1,67;1,25 und 1volt.

    Sind den alle Widerstände richtig?
    wenn ja liegt der Fehler im Programm.
    Mit hochohmigen Grüßen
    Virus

    Es lebe der Digitalkäse !

  5. #15
    Benutzer Stammmitglied
    Registriert seit
    27.06.2009
    Alter
    28
    Beiträge
    54
    Also bei folgenden Programmcode ist die ausgabe von taster 1 immer wieder was anderse 0 - 76 meistens 0 oder 5.
    taster 2 hat immer den wert 228 oder 229.
    wo könnte ich den fehler bei taster 1 gemacht haben.

    Code:
    #include "RP6RobotBaseLib.h" 	
    
    int main(void)
    {
    	initRobotBase();
    	
    	
    	writeString_P("\n\n   _______________________\n");
    	writeString_P("   \\| RP6  ROBOT SYSTEM |/\n");
    	writeString_P("    \\_-_-_-_-_-_-_-_-_-_/\n\n");
    	
    
    	uint8_t keys;
    	uint8_t counter;
    	uint8_t counter1;
    	uint8_t counter3;
    	
    	setLEDs(0b111111); 
    	mSleep(1000); 
    	setLEDs(0b000000);
    	mSleep(500); 
    	keys = readADC(ADC_ADC0);
    	counter = keys;
    	writeInteger(counter, DEC);
    	writeString_P("\n\n");
    	while(true)
    	{
    		 keys = readADC(ADC_ADC0);
    		 if (keys < 100)  
    		 {
    		 counter1 = keys;
    		 writeString("Taste 1: \n");
    		 writeInteger(counter1, DEC);		 
    		 }
    		 if (keys == 229 || keys == 228)
    		 {
    		 counter3 = keys;
    		 writeString("Taste 2: \n");
    		 writeInteger(counter3, DEC);
    		 }
    		 
    		 
    	}
    return 0;	
    }

  6. #16
    Benutzer Stammmitglied
    Registriert seit
    27.06.2009
    Alter
    28
    Beiträge
    54
    Wie viele taster könte ich eigentlich maximal an einen adc port anschließen wenn ich zwischen jeden taster einen 10k wiederstand habe.

  7. #17
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.11.2009
    Alter
    31
    Beiträge
    188
    ... eine Idee wäre zum Beispiel ja auch eine Matrixtastatur.
    Man könnte dann auf einer Erweiterungsplatine z.B. 16 Taster unterbringen und diese mit "nur" einem 8poligen Stecker ansteuern.

  8. #18
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Wie viele taster könte ich eigentlich maximal an einen adc port anschließen ...
    Mit Metallfilmwiderständen habe ich 16 Taster geschafft:
    https://www.roboternetz.de/phpBB2/viewtopic.php?t=34732
    (Siehe mein Beitrag vom 14.10.2007, 20:30)
    In dem Beitrag wird auch die Alternative, eine Matrixtastatur beschrieben.

    Gruß Dirk

  9. #19
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.11.2009
    Alter
    31
    Beiträge
    188
    Ich vermute mal, dass das Maximum der Taster in etwas bei 16 liegt. Bei noch mehr müssten ja die Widerstände dann noch viel genauer sein.

    Stimmt das ?

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

Solar Speicher und Akkus Tests