- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 9 von 9

Thema: Asuro Helligkeitsbestimmung

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    22.12.2011
    Beiträge
    8

    Asuro Helligkeitsbestimmung

    Hallo,
    ich bin neu hier und habe schon ein Problem:
    Bei einfachen Programmen hat alles geklappt nun will ich jedoch ne Sortiermaschine bauen.

    Wie kann ich es machen, dass sich der Motor dreht, bis sich die Helligkeit des linken Fototransistors ändert. Dannach soll die Helligkeit ausglesen werden und je nach Helligkeit sich der Motor nach Links oder Rechts drehen. Ich habe vor allem Probleme mit dem 1. Teil. Also zu programmieren, dass sich der Motor dreht, bis sich die Helligkeit des 1. Fototransistors ändert. Am besten sollte dies änderung eine Spanne sein, also nicht nur ein einzelner Wert. (Dieser 1 Wert wird schnell vom Umgebungslicht verfälscht.). Meine Versuche führen einfach zu keinem Ergebnis.
    Könnte mir mal jemand nen Ansatz dafür Posten.
    Gruß
    Tom

  2. #2
    Probier mal sowas:
    Code:
    unsigned int data[2]
    while(1) {
       LineData(data);
       while (!((data[0]>"wert1") &&  (data[0]<"wert2"))) {                           // dabei soll Wert 1 und Wert 2 die Spanne darstellen
           MotorDir(FWD,FWD);
           MotorSpeed(SpeedLeft,SpeedRight);
       }
    }

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    22.12.2011
    Beiträge
    8
    So mein jetziges Programm:
    Code:
    #include "asuro.h"
     
    int main(void)
     {
     Init();
    
     while(1)
     {
     unsigned int data[2]; //Initialisiert zwei Int-werte hintereinander
     {
     MotorDir(FWD,FWD);
     MotorSpeed(0,240); //Abwerfen des Steines
     Msleep(1900);
     MotorSpeed(0,0);
    
    while(1) {
       LineData(data);
       while (!((data[0]>90) &&  (data[0]<110)))  // dabei soll Wert 1 und Wert 2 die Spanne darstellen
       {                          
           MotorDir(FWD,FWD);
           MotorSpeed(240,0);		//Bewegung des Förderbands
    	   }
    
    
     LineData(data[0]); //werte auslesen
    
     if (data[0] >= 400)
    {
        MotorSpeed(240,0); 
        Msleep(10000);
    }
    else 
    {
        MotorDir(RWD,FWD); 
        MotorSpeed(240,0);
        Msleep(10000);
    }
    
    
      
    
     
     } 
    return 0;
     }
    Nur kommt in der Letzten Zeile 2 Fehlermeldungen, obwohl da nur "}" steht. Die Meldung lautet: ../Halbjahresprojekt.c:45: error: expected declaration or statement at end of input.

    Dieses Programm soll eine Sortiermaschine steueren, welches Steine nach Farben sortiert. Zu erst wird der Stein abgeworfen, dann dreht sich das Förderband, bis sich die helligkeit ändert( also bis der stein unter dem Sensor liegt). Je nach Helligkeit soll dann der Stein nach links oder rechts transportiert werden. Dies wird dann immer wieder Wiederholt.

    Was habe ich falsch gemacht bzw. kann ich noch verbessern?

    Gruß Tom

    Edit: Ich habs: Am Ende hat noch }} gefehlt.
    Trotzdem Danke
    Geändert von radbruch (07.06.2012 um 23:04 Uhr)

  4. #4
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Ich hab mal etwas an deinem Programm rumgefummelt:
    Code:
    // asuro steuert Sortieranlage
    
    // https://www.roboternetz.de/community/threads/58103-Asuro-Helligkeitsbestimmung
    
    #include "asuro.h"
    
    unsigned int data[2]; //Initialisiert zwei Int-werte hintereinander
    
    int main(void)
    {
    	Init();
    
    	MotorDir(BREAK,FWD); //Abwerfen des Steines
    	MotorSpeed(0,240);
    	Msleep(1900);
    	MotorSpeed(0,0);  // Motor abbremsen
    	Msleep(500);
    
    	StatusLED(YELLOW); //Bewegung des Förderbands
    	MotorDir(FWD,BREAK);
    	MotorSpeed(240,0);
    
    	do
    		LineData(data);
    	while ((data[0]>90) && (data[0]<110)); // solange Helligkeit zwischen 90 und 110
    
    	Msleep(100); // Gegenstand erkannt. Noch etwas weiterfahren (wegen Kante)...
    	LineData(data); // und erneut den Wert einlesen
    
    	if (data[0] >= 400) // heller als 399? Richtigen Gegenstand erkannt, weiterfördern
    	{
    		StatusLED(GREEN);
    		// MotorSpeed(240,0);
    		Msleep(10000);
    	}
    	else // falsche Farbe, zurückfördern
    	{
    		StatusLED(RED);
    		MotorSpeed(0,0);
    		Msleep(500);
    		MotorDir(RWD,BREAK);
    		MotorSpeed(240,0);
    		Msleep(10000);
    	}
    
    	MotorSpeed(0,0); // Band anhalten
    	while(1){StatusLED(RED); Msleep(100); StatusLED(OFF); Msleep(300);} // Programmende
    	return 0;
    }
    (ungetestet)

    Ich hoffe, dass funzt so.

    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!

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    22.12.2011
    Beiträge
    8
    Danke für deine Hilfe. Am Ende des Programms blinkt mein Asuro nur grün mit der Status LED, warum beginnt das Programm nicht wieder von neuem?
    Gruß
    Tom

  6. #6
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo Tom

    Schön, wenn es halbwegs funktioniert. Allerdings sollte die StatusLED rot blinken. Das ist aber nicht weiter schlimm.

    Das Programm beginnt deshalb nicht von vorne, weil ich doch gar nicht weiß, was du noch alles einbauen willst. Eigentlich ging es doch nur darum:
    Könnte mir mal jemand nen Ansatz dafür Posten.
    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!

Ähnliche Themen

  1. Antworten: 13
    Letzter Beitrag: 07.06.2021, 14:38
  2. Antworten: 3
    Letzter Beitrag: 05.08.2008, 22:58
  3. Antworten: 35
    Letzter Beitrag: 28.01.2008, 17:24
  4. Antworten: 3
    Letzter Beitrag: 15.05.2007, 13:35
  5. Antworten: 0
    Letzter Beitrag: 21.08.2006, 17:31

Berechtigungen

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

12V Akku bauen