- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 10 von 20

Thema: Probleme mit einfacher Tasterschaltung

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    27.02.2012
    Ort
    50KM über Hamburg
    Beiträge
    128

    Probleme mit einfacher Tasterschaltung

    Hallo,
    mal wieder komme ich nicht weiter.
    Ein kleiner 4 Kanal Fernsteuer Roboter. 1 DC Motor. L293D, proMini, 9Volt Block, Festspannungsregler 5 Volt und ein Servo.
    Die 4 Emfängerkanäle liefern HIGH und sind mit 10K auf GND.
    Vor, Rück, Links, Rechts
    Mit diesem Sketch geht es noch nicht. Es geht nur eine Funktion zur Zeit. Aber z.B. Vor und Links oder Rechts zugleich geht nicht.
    Was kann ich machen um das zu erreichen?

    Code:
    const int ledPin_1    = 8;
    const int ledPin    = 13;
    const int Pin = 6; // Taster
    const int Pin_1 = 7; // Taster
    
    void setup()
    {
      pinMode(6, INPUT);//Taster
      pinMode(7, INPUT);//Taster
      pinMode(13, OUTPUT);//LED
      pinMode(8, OUTPUT);//LED
    }
    
    void loop()
    {
      int pulsador = digitalRead(6);//Taster A
      while (pulsador == 1)//while the button is pressed
      {
        digitalWrite(13, HIGH);
        delay(10);
        digitalWrite(13, LOW);
    
        pulsador = digitalRead(6); //refresh value of variable
      }
    
    
    
      {
        int pulsador_1 = digitalRead(7);//Taster B
        while (pulsador_1 == 1)//while the button is pressed
        {
          digitalWrite(8, HIGH);
          delay(10);
          digitalWrite(8, LOW);
    
          pulsador_1 = digitalRead(7); //refresh value of variable
        }
      }
    }
    Gerne würde ich einen Tipp bekommen
    Achim

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.645
    Hallo,

    kann auch nicht funktionieren, mit dem gleichzeitigen Drücken:

    Code:
      while (pulsador == 1)//while the button is pressed
      {
        digitalWrite(13, HIGH);
        delay(10);
        digitalWrite(13, LOW);
    
        pulsador = digitalRead(6); //refresh value of variable
      }
    Wenn Du einen Button drückst und in der Schleife so lange wartest, bis der nicht mehr gedrückt ist, wie fragst Du dann in der Zeit ab, ob ein anderer Button gedrückt ist?

    Dann musst Du zuerst immer alle Button-Zustände einlesen und dann entsprechend darauf reagieren, mit Verzweigungen, wie switch.


    MfG

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    27.02.2012
    Ort
    50KM über Hamburg
    Beiträge
    128
    Danke,
    ja klar, ist logisch.
    Aber ich weiß vorher doch garnicht welcher Taster gedrückt wird. Switch sagt mir nur Schalter?
    Ich überlege gerade lieber die Prominis wieder auszulöten und duch 2 Attiny zu ersetzen. Dann wäre das Problem weg.
    Weihnachten ist immer so Öde. Das muß ich jedesmal Auflockern. Deshalb habe ich 6 von diesen dösigen Teilen schon montiert.
    Nun habe ich schon ca. 80 Std mit dem Sketch zugebracht. Fast schon deprimert aufgegeben.
    Ärgerlicherweise wird die Zeit knapp.
    Für Heute ist erstmal Schluß.
    Dankeschön
    Achim

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.645
    Zitat Zitat von achso Beitrag anzeigen
    Switch sagt mir nur Schalter?
    wkrug hat es richtig erklärt, was ich meinte. Entschuldige! Bin nicht davon ausgegangen, dass Du switch nicht kennst. Kenne Deinen Kenntnisstand noch nicht.

    Zitat Zitat von achso Beitrag anzeigen
    Danke,
    Nun habe ich schon ca. 80 Std mit dem Sketch zugebracht. Fast schon deprimert aufgegeben.
    Ärgerlicherweise wird die Zeit knapp.
    Dein Problem ist nicht so schwer zu lösen. Der Code, den Du hier gezeigt hast, ist das alles? Also alles zu den Tastern oder hast Du noch mehr Code zu den Tastern?
    Wenn, dann stell den mal vollständig hier rein, vielleicht kann man ihn direkt verändern, dass er so funktioniert, wie Du denkst. Dann sparst Du Zeit.

    Weihnachten rückt immer näher. Und merkwürdiger Weise geht das jetzt von Tag zu Tag auch immer schneller.

    MfG


    PS: Ein Beispiel, wie man eine Tastenabfrage und die Reaktion darauf auch umsetzen kann.
    Es gibt, je nach Anforderung, immer mehrere Lösungen oder eine Lösung, die besser geeignet ist.
    Deshalb ist das in erster Linie nur ein Denkanstoß.

    Code:
    //Pin-Zuordnungen
    #define Taster1 11
    #define Taster2 12
    #define Taster3 13
    
    
    void setup()
    {
      //Eingänge für Taster konfigurieren
      pinMode(Taster1, INPUT_PULLUP);  
      pinMode(Taster2, INPUT_PULLUP);  
      pinMode(Taster3, INPUT_PULLUP);  
    }
    
    
    //Status-Variable ist ein Byte, also 8 Bit
    byte Status; 
    
    
    
    
    void loop()
    {
    
    
      //Taster Zustände abfragen, bei INPUT_PULLUP ist Taster geschlossen, wenn der Eingang = LOW ist
      Status = 0;
      if(!digitalRead(Taster1))Status += 1;  //Bit#0 für Taster1 setzen
      if(!digitalRead(Taster2))Status += 2;  //Bit#1 für Taster2 setzen
      if(!digitalRead(Taster3))Status += 4;  //Bit#2 für Taster3 setzen
      //Status hat jetzt alle Zustände der Taster gespeichert.
      //Ist ein Taster geschlossen, dann ist das zugehörige Bit in "Status" = 1, sonst 0
       
    
    
      //Hier die Auswertung
      switch (Status)
      {
        case 1:
            //Wenn 1, dann ist Taster1 geschlossen und alle anderen offen
            break;
        case 2:
            //Wenn 2, dann ist Taster2 geschlossen und alle anderen offen
            break;
        case 4:
            //Wenn 4, dann ist Taster3 geschlossen und alle anderen offen
            break;
        case 3:
            //Wenn 3, dann ist Taster1 und Taster2 geschlossen und alle anderen offen
            break;
        case 5:
            //Wenn 5, dann ist Taster1 und Taster3 geschlossen und alle anderen offen
            break;
        case 7:
            //Wenn 7, dann ist Taster1 und Taster2 und Taster3 geschlossen
            break;
        case 6:
            //Wenn 6, dann ist Taster2 und Taster3 geschlossen und alle anderen offen
            break;
    
    
        default:
            //Wenn kein Zustand von oben zutreffend ist, dann wird der Code ausgeführt, der hier steht
      }
    
    
    }
    Geändert von Moppi (18.12.2019 um 19:20 Uhr) Grund: Fehler im Code korrigiert

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    27.02.2012
    Ort
    50KM über Hamburg
    Beiträge
    128
    Super,
    dankeschön!
    Im Januar hatte ich mit dem Bauen begonnen. Nun kam mir das ganze Jahr was dazwischen. Leider stelle ich mich mit dem Lernen immer so kompliziert an.
    Die Hindernis IR Module baue ich wieder raus. Die Einfache Version reicht.
    Einen Sketch hatte ich natürlich schon fertig. Da ging aber gar nichts. Das ist das Erste Mal, das weder delay, noch Millis gingen.
    Heute Abend probiere ich weiter.
    Fast hätte ich mich schon aus der Situation gezogen und mit je 2 ATTiny das Problem locker umschifft.
    Aber die Prominis auslöten ist wenig spaßig.

    Immerhin 6 Stück davon.


    Klicke auf die Grafik für eine größere Ansicht

Name:	Weihn.jpg
Hits:	9
Größe:	58,8 KB
ID:	34566

    Nochmals Danke.
    Wenigstens nur noch 3 Tage bis zur Sonnenwende!
    Dann gehts Bergauf
    Achim

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    55
    Beiträge
    2.199
    Tip zu denen: ich löt denen meistens die mitgelieferten Steckleisten ein.
    Wenn ich das Ganze dann irgendwo einbauen will, kommen dort-passend dazu- Buchsenleisten auf Lochrasterplatine.
    Schon kann man die Dinger einfach runter nehmen, wie IC's mit Fassungen.
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.191
    Ich würde das auch so machen wie Moppi das vorschlägt.
    Also den kompletten Port an dem die Taster hängen einlesen und dann alle sinnvollen Zustände mit Switch Befehlen abarbeiten.
    Dabei muss natürlich auch die Rückschaltung auf die Neutrallagen, also Geradeaus und Stopp berücksichtigt werden.
    Ich mach in C da immer Zuweisungen wie z.B.
    #define rechts 0b00000001
    #define links 0b00000010
    #define gerade 0b00000000
    #define vorwärts 0b00000100
    ...
    Die kann man dann mit dem aktuellen Zustand der Tasten UND verknüpfen und die entsprechende Reaktion auslösen.
    Nicht sinnvolle Eingaben wie z.B. Links und Rechts gleichzeitig, oder Vor und Zurück gleichzeitig müssen natürlich geblockt werden.
    Diese Switch sequenz kann dann in einer Endlosschleife durchlaufen werden.
    Da die Befehle anscheinend direkt umgesetzt werden kann man eventuell auch auf eine Entprellung der Tasten verzichten.

    Switch sagt mir nur Schalter?
    switch ist auch ein C - Befehl.
    Damit kann innerhalb der Anweisung abhängig von einer Variable ein anderer Programmteil ausgeführt werden

    switch(richtung){
    case 1:
    tu was;
    break;

    case 2:
    tu was anderes;
    break;

    case 3:
    tu was ganz andres;
    break;

    default:
    wenn gar nichts passt;
    }
    Abhängig von der Variable richtung wird case 1,2, oder 3 ausgeführt.
    Wenn keine der Bedingungen zutrifft wird default ausgeführt.
    Ich denka mal das Moppi das meinte.
    Geändert von wkrug (17.12.2019 um 20:11 Uhr)

Ähnliche Themen

  1. Fehleranalyse PWM-Tasterschaltung
    Von hansesel im Forum Elektronik
    Antworten: 6
    Letzter Beitrag: 09.01.2014, 13:51
  2. Probleme mit Tasterschaltung
    Von Tuxist im Forum C - Programmierung (GCC u.a.)
    Antworten: 17
    Letzter Beitrag: 13.05.2012, 06:48
  3. Probleme mit einfacher Linenverfolgung!
    Von RuKi000 im Forum Asuro
    Antworten: 9
    Letzter Beitrag: 17.04.2009, 20:47
  4. einfacher Getränkemixer
    Von Feli im Forum Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots
    Antworten: 9
    Letzter Beitrag: 23.03.2008, 20:54
  5. Einfacher Pegelwandler
    Von Coalminer im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 22.11.2004, 06:48

Berechtigungen

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

LiFePO4 Speicher Test