- Labornetzteil AliExpress         
Seite 9 von 9 ErsteErste ... 789
Ergebnis 81 bis 89 von 89

Thema: 1 Servo mit 2 Tasten ansteuer, aber wie :-(

  1. #81
    Benutzer Stammmitglied
    Registriert seit
    11.10.2007
    Beiträge
    77
    Anzeige

    Powerstation Test
    Also verstehe ich das so, das der PC bei 1 Tastendrück ein Wert rüberschickt und ich erst nochmal drücken muss damit der µC den ersten Wert löscht?

  2. #82
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    02.09.2005
    Ort
    Osnabrücker Land
    Alter
    62
    Beiträge
    534
    Eine Taste am PC-Keyboard ist nunmal keine am uC .. die Logic ist drauf ausgelegt, Zeichen zu schreiben ... ganz vergleichbar einer Schreibmaschine ... wenn ich mich richtig erinnere, genieriert Windows nur zwei Messages: WM_KEYDOWN und WM_KEYUP - eine "KEYISPRESSED" mußt Du Dir selber bauen ...
    Dazu kommt die Repeatfunktionalität der Tastatur, bei längerem Tastendruck.
    Also nix, was Du direkt zur Fernschlatung nutzen kannst.

    Wie oben schon erklärt, brauchst Du zwei Steuerwerte, die ausgewertet werden AN und AUS ... und wenn Du gut bist, implementierst Du noch ein Timeout, wenn das AUS nicht ankommt ... oder keine Steuerinformationen mehr ankommen. Eine Bidirektionale Kommunikation zur Steuerung wäre Vorteilhaft.

    Tipp: gewöhne Dir delays ganz schnell wieder ab im uC-Code - insbesondere solange Du nicht mehr Erfahrung hast!

    Überlege lieber, wie Du Timer geschickt einsetzen kannst ...
    geschickt heißt z.B. daß Du mit Timern eine Tastenentprellung durchführst, gleichzeit auch erkennen kannst, daß eine Taste kurz oder lang gedrückt wurde ... bei Tastern am uC wohlmerkt.

    Viel Erfolg weiterhin.
    Ich kann mir keine Signatur leisten - bin selbständig!

  3. #83
    Benutzer Stammmitglied
    Registriert seit
    11.10.2007
    Beiträge
    77
    Das hört sich alles richtig an bei euch, leider bin ich nicht so weit und verstehe einige sachen noch nicht

    Aber warum funktioniert nicht sowas mit continue?
    Dachte, solange die Taste nicht gedrückt wird, muss die Led aus sein und wenn ich die drücke müsste die leuten... <-- meine Logik ist voll falsch.
    Ist doch schwierieger als ich dachte.


    while(1){

    switch(rxwert){
    if(rxwert!=0x3{
    PORTB &= (~ (1<<PB1));
    continue;
    }

    if(rxwert==0x3{
    PORTB |= (1<<PB1);
    break;
    }
    }
    }

    Hab ihr irgendwo links wo ich das genau durchlesen könnte?

  4. #84
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Wenn du die Taste die direkt am µC angeschlossen ist drückst, dann ist es richtig. Du Fragst die Taste aber auch kontinuierlich ab.
    Über den UART bekommst du aber nur ein "diese Taste wurde gedrückt" aber kein "diese Taste wurde wieder losgelassen". Wenn du das willst musst du dir ein PC-Programm schreiben das genau das macht und es über den UART an den µC weitergibt.
    Dein Codeschnippsel scheitert genau daran. Du sagst zwar unten "wenn 0x38 leuchtet Led" aber wie bekommst du das "wenn nicht 0x38". Ohne PC-Programm geht das nur durch drücken einer anderen Taste oder wie in meinem Programm durch drücken der Taste 0. Also der µC braucht das Kommando " Taste nicht mehr gedrückt", wie du das realisierst ist deine Sache.

  5. #85
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    02.09.2005
    Ort
    Osnabrücker Land
    Alter
    62
    Beiträge
    534
    Schreib doch mal den Code lesbarer!

    Code:
    int main(void)
    {
       InitAVR();
    
       for(;;)
       {
          switch(rxwert)
          { 
             if(rxwert  == 0x11) // löschcode z.b.
             {
                 PORTB &=~  (1 << PB1);
                 continue; // nicht unbedingt nötig
             }
             if(rxwert == 0x38)
             {  
                 PORTB |= (1 << PB1);
                 // break;  wieso soll hier die Hauptschleife gelöscht werden
             } 
          }
       }
       return(0);
    }
    Ich schließ mich meine Vorredner an, der PC muß beides senden,
    Taste gedrückt - Taste losgelassen ...

    So wie Du es bisher verwendest, weiß der uC nix davon, daß Taste losgelassen wird.

    .. ist doch einfach zu verstehen !
    Ich kann mir keine Signatur leisten - bin selbständig!

  6. #86
    Benutzer Stammmitglied
    Registriert seit
    11.10.2007
    Beiträge
    77
    Vielen Danke erstmal!

    Kann erst morgen weiter testen. Heute leider keien Zeit...

  7. #87
    Benutzer Stammmitglied
    Registriert seit
    11.10.2007
    Beiträge
    77
    So habe grade dein Code getestet, leider tut sich nicht bei mir...
    InitAVR(); diese Zeile hab ich raus gelassen.
    Trotzdem tut sich nichts, ist zwar eine forever schleife wie ich gesehen…
    Theoretisch müsste das doch gehen mit deinen Code, komisch.

  8. #88
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    02.09.2005
    Ort
    Osnabrücker Land
    Alter
    62
    Beiträge
    534
    > Schreib doch mal den Code lesbarer!
    das hatte ich mit Deinem Code gemacht .. ihn lesbarer gemacht und um einen Aus-Steuerbefehl ergänzt - mehr nicht (doch, kommentiert und das sinnlose break entfernt).

    Und natürlich eine for(; - so weit ich mich erinnere macht der compiler draus einen jump - ein while(1) beinhaltet eine abfrage und dann einen jump - auch wenn das ein Befehl sein wird .. aber das ist assembler und hier nicht wirklich wichtig.


    InitAVR(); << da gehören ALLE Initialisierungen rein. Und wenn Du das in Unterfunktionen aufgliedern willst, dann eben die Aufrufe dieser.

    Wenn Du keine Initialisierungen machst, sind alle Ports Eingänge - menno!

    Natürlich ändert sich nichts - Du mußt vom PC aus eben eine "mach-an" - Sequenz definieren und schicken UND Du mußt vom PC aus eine "mach aus"-Sequenz definieren und schicken ... Trichter aufn Kopf, reinkippen, verstehen oder hinnehmen!

    Wen Du so weiter machst, biete ich Dir noch eine Sprechstunde am Telefon an
    Ich kann mir keine Signatur leisten - bin selbständig!

  9. #89
    Benutzer Stammmitglied
    Registriert seit
    11.10.2007
    Beiträge
    77
    Das mit der Sprechstunde am Telefon finde ich gut!
    Ich übernehme auch die Kosten

    Bin grade paralle in VB Forum um ein Sende Formular zu erstellen.

Seite 9 von 9 ErsteErste ... 789

Berechtigungen

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

LiFePO4 Speicher Test