-         

Ergebnis 1 bis 7 von 7

Thema: Habe probleme mit meinen sensoren

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    01.02.2010
    Beiträge
    10

    Habe probleme mit meinen sensoren

    Anzeige

    Hallo,

    ich möchte gerne eine abfage starten das mein asuro wenn er eine linie verlässt trotzdem geradeaus weiterfährt ich dachte mir das so

    if(data[0]==data[1]) MotorSpeed(125,125);


    aber mein asuro geht nicht in diesem befehl rein und fährt nurnoch im kreis da er die linie nicht findet

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    33
    Beiträge
    2.383
    deine lininensensoren geben unter data[0] und data[1] einen wert von 0-1023 wieder, 0 steht dabei für totale finsternis und 1023 für totale helligkeit ... der zustand dass beide Sensoren exakt denselben wert haben ist schon allein technisch unwahrscheinlich

    du müsstest deine if abfrage anpassen und bedenken, dass du den übergang von linie zu hintergrund/boden erst einmal ausmessen müsstest! und dann einen gewissen toleranzbereich einräumen, eine linie ist nicht immer gleich dunkel und das umgebungslicht tut sein übriges

    PS: kleiner trick wenn deine Sensoren empfindlich auf umgebungslicht reagieren, "differenzielles messen" ... du schaltest die frontled an, machst eine messung und du schaltest die frontled aus und machst ne messung ... da Sensoren und frontled auf so ziemlich dieselbe stelle zeigen, sollte die differenz beider werte dem echten reflektionswertt des untergrund wiederspiegeln egal wieviel licht von der seite einfällt .. aber vorsicht wenn deine Sensoren von der umgebung schon auf 1023 getriebe werden, können sie das zusätzliche licht der LED nicht mehr messen

    PPS: und noch ein tip beim programmieren, egal welche sensordaten du verwendest ... speichere sie IMMER ZUERST in eine variable und stelle dann damit berechnungen bzw. vergleiche an ... so umgehst du nebeneffekte beim abfragen der werte die dein programm bei der fehlersuche unlogisch erscheinen lassen!

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    01.02.2010
    Beiträge
    10
    so ich habe mal eine neue abfrage erstellt die bei mir auch nicht geht


    int d3=d1-d2;

    int d4=d2-d1;

    if(d3==0 || d4==0)

    oder auch geht nicht

    if(d3<1000 || d4<1000)

    kann mir nicht erklären warum nicht zumindest da muss doch nu was passieren oder?

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    26.12.2009
    Beiträge
    24
    Hallo,

    habe auch erst von einer Woche mit einem Linienprogramm angefangen und hatte ähnliche Probleme.
    Zu deinem Programm ist zu sagen, dass die If-Abfrage
    Zitat Zitat von javaisttoll
    if(d3==0 || d4==0)
    gar nicht(oder sehr sehr unwahrscheinlich) erfüllt ist da wenn d3 oder d4 gleich 0 ist herrscht absolute Dunkelheit
    (und diese eigentlich nie vorhanden ist).
    Und deine If-Abfrage
    Zitat Zitat von javaisttoll
    if(d3<1000 || d4<1000)
    ist so gut wie immer erfüllt, da es eigentlich niemals so hell wird, dass d3 oder d4 größer als 1000 werden.

    so ich hoffe ich konnte dir damit ein bischen helfen


    Grüße mize03

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    01.02.2010
    Beiträge
    10
    Zitat Zitat von mize03


    if(d3<1000 || d4<1000)
    ist so gut wie immer erfüllt, da es eigentlich niemals so hell wird, dass d3 oder d4 größer als 1000
    das dachte ich mir ja auch aber der asuro reagiert trotzdem nicht auf diese abfrage ;P sonst hätte ich ja kein problem mehr xD

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    33
    Beiträge
    2.383
    okay nochmal von vorne diesmal mit lösung ^^

    wenn die LED an ist, ist der wert potentiell höher als wenn sie aus ist, also LED an, messen und in D1 speichern, dann LED aus, messen und in D2 speichern ... jetzt ziehst du D2 von D1 ab und hat den relativ zuverlässigen helligkeitswert des untergrund .... jetzt solltest du erstmal mit einem switch case konstrukt folgendes machen

    switch
    wenn wert < niedriger wert -> statusLED rot
    wenn wert >= niedriger wert und wert <= hoher wert -> statusLED grün
    wenn wert > hoher wert -> statusLED gelb

    dann spielst du ein wenig mit den werten rum und probierst dich an deinen untergründen und darauf aufgebrachte testlinien bis dein asuro entsprechend anspricht ... diese schwellwerte notierst du dir dann für data[0] und data[1] da diese nie gleich sind und dann schreibst du nochmal hier ins forum

    was deine abfragen angeht, du musst eigentlich nur kontrollieren, ob der wert eines sensor [b]deutlich[\b] von deinem ermittelten schwellwert abweicht und dann ggensteuern ... damit er nicht so zappelt sollte die korrektur erst beendet werden, wenn der wert deutlich unter dem schwellwert liegt ... wenn du verstehst wie ich das meine ^^

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    01.02.2010
    Beiträge
    10
    Vielen dank das hat mir weitergeholfen habe es geschafft und programmiere nun weiter

Berechtigungen

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