- LiFePO4 Speicher Test         
Ergebnis 1 bis 4 von 4

Thema: Arduino Asuro Taster können nicht angesprochen werden

  1. #1

    Arduino Asuro Taster können nicht angesprochen werden

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo Leute

    Ich wollte mit einem Arduino einen Asuro betreiben.

    Vorwärts/Rückwärts fahren kann er. Genauso wie nach links und nach rechts drehen.

    Nur ich weiß nicht wie ich die Taster ansprechen soll.

    Hier mein Quellcode :

    Code:
    int rforward = 13;
    int rreverse = 12;
    int lforward = 5;
    int lreverse = 4;
    int lmotorspeed = 255;
    int lmotor= 9;
    int rmotorspeed = 255;
    int rmotor= 10;
    int statusledred = 2;
    int frontled = 6;
    int lphotores = 3;
    int rphotores = 2;
    int statusledgreen = 8;
    int odometricled = 7;
    long tmp; 
    long taster = ((10240000L/tmp-10000L)*61L+5000L)/10000; 
    
    void setup()
    {
      pinMode(rforward, OUTPUT);
      pinMode(rreverse, OUTPUT);
      pinMode(lforward, OUTPUT);
      pinMode(lreverse, OUTPUT);
      pinMode(frontled, OUTPUT);
      pinMode(statusledred, OUTPUT);
      pinMode(statusledgreen, OUTPUT);
      pinMode(odometricled, OUTPUT);
    }
    
    //read front switches
       int readSwitches()
       {
         long taster = ((10240000L/tmp-10000L)*61L+5000L)/10000; // Pollswitch-Funktion Tasterauswerutng 
         pinMode(3, OUTPUT);
         digitalWrite(3, HIGH);
         tmp = analogRead(4);
         digitalWrite(3, LOW);
         return taster;
       }
       
       
    
       
       
       void loop()
       
       {
       
       readSwitches(); 
          
               //GERADAUS FAHREN 2500ms
              digitalWrite (4, LOW);  //Links vorwärts
              digitalWrite (5, HIGH);
              digitalWrite (9,HIGH); 
    
              digitalWrite (12, LOW); //Rechts vorwärts
              digitalWrite (13, HIGH);
              digitalWrite(10,HIGH); 
    
      
          if (taster == 2 || taster ==4 || taster == 8 || taster ==16 || taster ==32); 
          {   
            
            //RÜCKWÄRTSFAHREN
            // linker Motor zurück 
             digitalWrite(12,HIGH); 
             digitalWrite(13,LOW);
             digitalWrite(9,HIGH); 
             // rechter Motor zurück 
             digitalWrite(4,HIGH); 
             digitalWrite(5,LOW); 
             digitalWrite(10,HIGH); 
             delay(2500); 
             
             // 90 GRAD LINKSKURVE
             //Rechts vorwärts
             digitalWrite (12, LOW); 
             digitalWrite (13, HIGH);
             digitalWrite(10,HIGH); 
             // links zurück 
             digitalWrite(12,HIGH); 
             digitalWrite(13,LOW); 
             delay(2500); 
             
             //GERADAUS FAHREN 2500ms
              digitalWrite (4, LOW);  //Links vorwärts
              digitalWrite (5, HIGH);
              digitalWrite (9,HIGH); 
    
              digitalWrite (12, LOW); //Rechts vorwärts
              digitalWrite (13, HIGH);
              digitalWrite(10,HIGH); 
              delay(2500); 
              
              //90 GRAD RECHTSKURVE
                 digitalWrite (4, LOW);  //Links vorwärts
                 digitalWrite (5, HIGH);
                 digitalWrite (9,HIGH); 
                 
                 // Rechts rückwärts 
                 digitalWrite(4,HIGH); 
                 digitalWrite(5,LOW); 
                 digitalWrite(10,HIGH);
                 delay(2500);
              
          }
          
       }
    Hieran haben wir uns orientiert und es auch so angewendet :

    https://www.roboternetz.de/community...-ASURO-Arduino

    Wir haben den IC ATmega328 von Arduino Uno rausgenommen und ihn in den Asuro platziert.
    Nur halt mit den Tastern haben wir Probleme.

    Ich wäre euch für Hilfe sehr dankbar

    Mitfreundlichen Grüßen

    Henne1992
    Geändert von Henne1992 (14.01.2014 um 23:11 Uhr)

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.170
    Was genau stimmt nicht? Nimmt doch das ganzen Tanzen-spiel raus und mache ein Sketch das nur den gemessene Tasterwerten zum Rechner sendet. Nur dann kann man was richtig beobachten, Fehler herausfinden, und sonnst was nicht stimmt.

    Und muss den Tasterwert-berechnung nicht nach den tmp=AnalogRead(4) statt finden? Was soll den Arduino-suro sonnst mit den Variabele tmp machen?

  3. #3
    Uns wurde gesagt, dass man die Voltzahl so von den einzelnen Taster berechnen kann und Sie somit, wenn man einen/mehrere Taster drückt durch den Spannungsabfall merkt, dass ein Taster gedrückt wurde.
    Wie würde denn dein Sketch aussehen um den gemessenen Tasterwert zum Rechner zu senden ?

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.170
    Was du gesagt ist stimmt. Aber man sollte doch erst die Spannung an Analog Pin 4 messen und im tmp speichern, und nur danach mit berechnen was den Taster Wert ist. Oder? Dein Programm berechnet nun mit den vorherigen Taster-spannung.

    Zum Beispiel nur den wichtige Anderungen im readSwitches und den loop-Funktion. (Nicht getestet!)
    Code:
    ...
    
    //read front switches
       int readSwitches()
       {
          pinMode(3, OUTPUT);
          digitalWrite(3, HIGH);
          tmp = analogRead(4); // Erst messen, dan Berechnen!
          digitalWrite(3, LOW);
    
          long taster = ((10240000L/tmp-10000L)*61L+5000L)/10000; // Pollswitch-Funktion Tasterauswerutng
    
          return taster;
       }
    
    ...
    void loop()
       
       {
       
          readSwitches(); 
          if (taster!=0) Serial.println(taster); // Wenn Taster nicht 0 ist, zur Rechner senden als ASCII 
    
          delay(100); //etwas verzögeren
              
          
       }
    Außerdem, bemerken das ein Taster gedruckt ist kann man eigentlich schon wen an INT/Pin3 als Digitale Eingang ein LOW gemessen wird. Dazu braucht man nicht den analoge Taster-wert jedesmal zu messen und berechnen. Den Tasterspannung wird schon durch R23 hoch gehalten bis ein eingedrukten Taster die Kondensator C7 entladet. Ein Interupt Routine ist sehr geeignet dafür wegen die Automatische Abhandlung, aber für Anfänger etwas complex. Oft die Pin-zustand abfragen sollte auch reichen. Wenn ein Taster-prellung bemerkt ist kannst du die Einzelne Tastern heraus finden lassen durch den Funktion readSwitches.
    Geändert von Valen (15.01.2014 um 20:05 Uhr)

Ähnliche Themen

  1. LCD's die mittels Bascom angesprochen werden können
    Von TBA789 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 34
    Letzter Beitrag: 05.05.2009, 10:32
  2. Antworten: 1
    Letzter Beitrag: 09.03.2009, 15:19
  3. Wieviel Byte können bei 9600Baud übertragen werden?
    Von Johannes G. im Forum Elektronik
    Antworten: 10
    Letzter Beitrag: 15.11.2007, 18:23
  4. make kann nicht gefunden werden Asuro
    Von Christian 25 im Forum C - Programmierung (GCC u.a.)
    Antworten: 13
    Letzter Beitrag: 30.09.2005, 18:16
  5. Bilder können auch in Album geladen werden
    Von Frank im Forum Vorstellungen+Bilder von fertigen Projekten/Bots
    Antworten: 2
    Letzter Beitrag: 13.01.2005, 17:15

Stichworte

Berechtigungen

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

Solar Speicher und Akkus Tests