- 3D-Druck Einstieg und Tipps         
Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 26 von 26

Thema: Probleme beim Ausführen/programmieren

  1. #21
    Neuer Benutzer Öfters hier
    Registriert seit
    18.05.2014
    Beiträge
    13
    Anzeige

    Praxistest und DIY Projekte
    Hey!

    So langsam habe ich das Gefühl dass ich irgendwo einen Wackelkontakt oder so habe...gestern war ein Freund da dem ich zeigen wollte, dass das hallo senden nicht funktioniert, auf einmal lief es mit genau dem gleichen Code einwandfrei.
    Na gut, komisch, aber hauptsache es funktioniert. Dann habe ich eben die Daten der Tastsensoren ausgelesen, die passen perfekt, also 1 wenn der erste Taster gedrückt wurde, dann 2, 4,..
    Der Code fürs auslesen:

    Code:
    #include "asuro.h"
    #include <stdlib.h>
    
    int main(void)
    {
      char text[6];
      unsigned char t1, t2;
    
      Init();
      SerWrite("\r\nTastsensor Test\r\n",19);
      while(1)
      {
        t1 = PollSwitch();
        t2 = PollSwitch();
        if(t1 && t2 && t1 == t2)
        {
         itoa(t1,text,10);
    	 SerWrite(text,6);
    	 SerWrite("\r\n", 2);
        }
      }
    }
    hab mich erstmal gefreut und erst ein Programm geschrieben, bei dem ASURO stoppt wenn er gegen eine Wand fährt, danach eins, bei dem er je nachdem ob er rechts oder links gegen eine Wand fährt rechts rückwärts oder links rückwärts dreht und dann wieder geradeaus fährt. Hat erstmal super funktioniert, dann hat sich teilweise nur moch ein Motor gedreht, er hat gar nicht mehr auf die taster reagiert oder nach dem einschalten einfach nur gelb geblinkt.
    Vor allem dass er nicht mehr auf die Taster reagiert hat fand ich komisch, also habe ich die Werte mit dem Programm noch einmal ausgelesen und jetzt bekomme ich auf einmal für jeden Sensor statt einer 1 eine 165, statt einer zwei eine 265, 4 -> 465 usw.
    was hab ich denn jetzt schon wieder falsch gemacht

    LG,

    Chuck

    Edit: Und ist es normal dass die Motoren leicht riechen wenn die sich drehen
    Geändert von Chuck_Norris (19.06.2014 um 11:36 Uhr)

  2. #22
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    char text[6] = {0}; ?

  3. #23
    Benutzer Stammmitglied Avatar von Spacy Bar
    Registriert seit
    10.05.2014
    Beiträge
    34
    Ich sehe da 2 kleine Fehler:
    Code:
    volatile unsigned char t1, t2;
    und

    Code:
    if( (t1) && (t2) && (t1 == t2) ){//.....
    }
    Kleiner Tipp am Ende:

    Code:
    t1 = 0;
    t2 = 0;
    LG
    Spacy Bar

  4. #24
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Ich sehe da 2 kleine Fehler:
    Code:
    volatile unsigned char t1, t2;
    Nein, volatile macht hier keinen Sinn. Die Variablen sind nur im Sketch bekannt, wie kann da äußerlich zugegriffen werden?

    Code:
    if( (t1) && (t2) && (t1 == t2) ){//.....}
    Wie wärs mit:
    Code:
    if(t1 && (t1 == t2) ){//.....}
    oder
    Code:
    if(t1 & t2){//.....}
    Kleiner Tipp am Ende:
    Code:
    t1 = 0;
    t2 = 0;
    Ja, Variablen initialisieren ist guter Stil, und manchmal ist fehlendes Initialisieren Grund von Programmfehlern!
    Geändert von Sisor (22.06.2014 um 09:31 Uhr) Grund: Nach Hinweis korrigiert...

  5. #25
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    if(t1 && t2 >0) ){//.....}

    ist ja nicht das was wir wollen! Wenn schon kürzen, dann richtig:

    if( (t1 > 0) && (t1 == t2) ){//.....}

    Wenn eine Taste gedrückt wurde und zweimal die selbe Taste erkannt wurde, dann...

    Gruß

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

  6. #26
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Verdammte Operatoren... ich meinte:

    if((t1 & t2) > 0) ){//.....}

    bzw gekürzt :

    if(t1 & t2){//.....}
    Geändert von Sisor (22.06.2014 um 09:30 Uhr)

Seite 3 von 3 ErsteErste 123

Ähnliche Themen

  1. Probleme beim Programmieren
    Von ActiveRobo im Forum Asuro
    Antworten: 11
    Letzter Beitrag: 26.01.2012, 19:23
  2. Probleme beim Programmieren
    Von robochick im Forum Asuro
    Antworten: 2
    Letzter Beitrag: 09.04.2011, 01:59
  3. Probleme beim Programmieren eines AtMegas
    Von schwerminator im Forum AVR Hardwarethemen
    Antworten: 5
    Letzter Beitrag: 25.03.2008, 15:58
  4. Probleme beim Programmieren (wegen Windows XP???)
    Von DeadDealer im Forum AVR Hardwarethemen
    Antworten: 4
    Letzter Beitrag: 11.01.2007, 15:00
  5. Antworten: 9
    Letzter Beitrag: 14.03.2005, 20:08

Berechtigungen

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

LiFePO4 Speicher Test