- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 7 von 7

Thema: Problem mit der Taster

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    22.04.2011
    Beiträge
    16

    Böse Problem mit der Taster

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo Leute,

    ich verzweifel noch mit dem folgenden Programm:
    #include "asuro.h"

    int main ()
    {
    unsigned int wert1;
    unsigned int wert2;
    Init();
    while (1==1)
    {
    wert1 = PollSwitch ();
    wert2 = PollSwitch ();
    if (wert1 == wert2)
    {
    StatusLED (GREEN);
    PollSwitch ();
    }
    else
    {
    PollSwitch ();
    do
    {
    wert1 = PollSwitch ();
    wert2 = PollSwitch ();
    StatusLED (RED);
    }
    while (wert1 == wert2);
    }
    }
    }
    Und zwar hab ich folgendes Problem: Immer, wenn ich den Taster meines Asuros drücke, sollte die Farbe der Status LED wechseln, doch dies passiert nicht immer. Manchmal funktioniert es und manchmal passiert garnichts oder die Lampe flackert nur kurz in der anderen Farbe. Es macht auch keinen Unterschied, ob ich den Taster nur antippe oder lange drücke, es funktioniert einfach nicht.
    Ich hoffe, ihr könnt mir weiter helfen!
    Vielen Danke!
    Oliver

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    So vielleicht:
    PHP-Code:
    #include "asuro.h"

    int main(void)
    {
        
    unsigned int wert1wert2;
        
    unsigned int wert3=0;
        
    unsigned char status=GREEN;

        
    Init();
        while (
    1)
        {
            do
            {
                do
                {
                    
    wert1 PollSwitch ();
                    
    wert2 PollSwitch ();
                }while(
    wert1 != wert2); // wiederholen bis zweimal derselbe Wert gelesen wurde
            
    }while(wert1 == wert3);     // wiederholen bis sich der Wert geändert hat
            
    wert3 wert1;             // neuen Wert merken

            
    if(status == GREENstatus RED; else status GREEN;
            
    StatusLED(status);
        }
        return(
    0);

    ungetestet
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.170
    Eine kleine Verzögerung zwischen die beide wert1,wert2 anpassungen durch PollSwitch wurde vielleicht (auch) helfen.

    Code:
    ...
    wert1 = PollSwitch ();
    Sleep(72);
    wert2 = PollSwitch ();
    ...
    Geändert von Valen (22.04.2011 um 23:34 Uhr) Grund: (auch)

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    22.04.2011
    Beiträge
    16
    @ radbruch: danke für deine schnelle und auch sehr zeit aufwendige hilfe (programm schreiben)! ich habe dein programm jetzt auf meinen asuro gespielt, jedoch treten dieselben probleme wie bei meinem programm auf. die lampe leuchtet grün, für die kurze zeit, in der , der taster gedrückt ist, leuchtet die lampe rot. lasse ich den taster nun wieder los, so leuchtet die lampe wieder grün...aber so soll es ja eigentlich nicht arbeiten. hast du vielleicht sonst noch eine idee?
    Ich habe auch noch eine frage zu deinem programm: was bedeutet dieses " unsigned char status=GREEN,"?

    @Valen: auch danke für deine hilfe! habe die pausen nun einmal in mein programm eingebaut, es funktioniert nach meinen eindruck etwas besser jedoch sind auch nach wie vor noch zu viele fehler! is das eigentlich kein problem wenn man solche pausen einbaut? dadruch wird doch alles insgesamt langsamer? hast du vielleicht sonst noch eine idee? ich probiere und probiere und komme einfach nicht weiter -.-

  5. #5
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    was bedeutet dieses " unsigned char status=GREEN,"?
    In der Datei asuro.h sind folgende Werte für die StatusLED definiert:

    #define GREEN 1
    #define RED 2
    #define YELLOW 3

    status ist eine vorzeichenlose 8bit-Variable deren Wert beim Anlegen im Speicher GREEN (also 1) ist. Ohne diese Zuweisung wäre der Wert der Variablen beim Programmstart undefiniert (, meist aber 0). Nach Init() leuchtet die StatusLED übrigends immer grün...

    ...aber so soll es ja eigentlich nicht arbeiten.
    Upps, sorry. Das habe ich falsch umgesetzt. So sollte die StatusLED nur beim Drücken der Tasten ihre Farbe wechseln und nicht auch beim Loslassen:
    PHP-Code:
    #include "asuro.h"

    int main(void)
    {
        
    unsigned int wert1wert2;
        
    unsigned int wert3=0;
        
    unsigned char status=GREEN;

        
    Init();
        while (
    1)
        {
            do
            {
                do
                {
                    
    wert1 PollSwitch ();
                    
    wert2 PollSwitch ();
                }while(
    wert1 != wert2); // wiederholen bis zweimal derselbe Wert gelesen wurde
            
    }while(wert1 == wert3);     // wiederholen bis sich der Wert geändert hat
            
    wert3 wert1;             // neuen Wert merken

            
    if(wert1 0)
            {
                if(
    status == GREENstatus RED; else status GREEN;
                
    StatusLED(status);
            }
        }
        return(
    0);

    auch wieder ungetestet
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    09.05.2010
    Ort
    Legau
    Alter
    28
    Beiträge
    58
    Hallo,

    nimm doch einfach ne boolsche variable und mach immer wenn der Knopf gedrückt ist led_farbe=!led_farbe
    dann wird bei jedem Knopfdruck der Zustand von led_farbe gewechselt.
    Anmerkung: Ich hab keinerlei Erfahrung mit dem Asuro, ich kann nur die Programmiersprache.

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    22.04.2011
    Beiträge
    16

    Idee

    danke für eure Hilfe!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    aber ich habe jetzt über Ostern die Zeit genutzt und solange probiert, bis es funktioniert und die Lösung war: Ich habe als Bedingung statt "werte1 == wert2", "aktuellerwert = 0" genommen und jedem einlesen des aktuellen Wertes danach eine kleine Pause (200ms) einprogrammiert und siehe da, nahezu fehlerfrei!
    aber trotzdem danke!!

Ähnliche Themen

  1. Atmel Tiny- Taster Problem
    Von Sepperli im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 07.11.2010, 23:33
  2. Problem bein Einlesen von Taster
    Von Darki89 im Forum C - Programmierung (GCC u.a.)
    Antworten: 8
    Letzter Beitrag: 07.02.2009, 17:48
  3. Taster erkennungs Problem
    Von patti16 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 01.01.2009, 20:21
  4. Eventuelles Taster Problem
    Von duronus im Forum Asuro
    Antworten: 1
    Letzter Beitrag: 25.01.2007, 11:04
  5. Problem bei Taster Abfrage mit ADC
    Von MartinNRW86 im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 20.09.2006, 15:37

Stichworte

Berechtigungen

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

Solar Speicher und Akkus Tests