ASURO Projekt Einen Motor pausieren
Hallo
Ich bin Schüler und anfänger was Programmieren betrifft... weshalb ich mir leider alles zusammenschnipseln muss.
Mein Problemm ist, dass ich ein Projekt mit dem ASURO erarbeiten muss. Darum habe ich ihn zu einer Sortiermaschine umgebaut die drei verschieden große Murmeln sortiert. Ein Motor wirft meine Murmel in die Rollbahn und die Fototransistoren erkennen die jeweilige Kugelgröße durch mehr oder weniger helligkeit. Je nach Kugelgröße richtet der zweite Motor meinen Sortierarm aus, so das die Kugel in das gewünschte Fach rollt.
Problem ist nun, das der Auswerfmotor {rechter Motor} (ganz am Ende des beigefügten Programmes siehe !!!!!!!! ) die ganze zeit läuft er soll aber eine bestimmte zeit pausieren bis die Kugel jnten ankommt. Mit Msleep funktioniert das ja nicht, da sonst das ganze Programm stopt und meine Fototransistoren die vorbeirollende Kugel nicht erkennen.
Gibt es hier eine Möglichkeit nur den auswerf Motor eine bestimmte Zeit pausieren zu lasen ?
#include <avr/io.h>
#include "asuro.h"
int main(void)
{
Init();
unsigned int data[2]; //Initialisiert zwei Int-werte hintereinander
FrontLED(ON);
Msleep(1000);
while (1)
{
LineData(data);
if ((data[0]<700) && (data [1]<700))
{
MotorDir(FWD,FWD);
MotorSpeed(85,0);
Msleep(160);
MotorSpeed(0,0);
Msleep(3000);
MotorDir(RWD,RWD);
MotorSpeed(85,0);
Msleep(160);
MotorSpeed(0,0);
}
if ((data[0]>700) && (data[1]>700))
{
MotorDir(FWD,FWD);
MotorSpeed(0,0);
}
if ((data[0]>700) && (data[1]<700))
{
MotorDir(RWD,RWD);
MotorSpeed(85,0);
Msleep(160);
MotorSpeed(0,0);
Msleep(3000);
MotorDir(FWD,FWD);
MotorSpeed(85,0);
Msleep(160);
MotorSpeed(0,0);
}
MotorDir(FWD,FWD); !!!!!!!!!!!!
MotorSpeed(0,100);
Msleep(480);
MotorSpeed(0,0);
}
}
Danke
Liste der Anhänge anzeigen (Anzahl: 1)
Kann man machen, aber zum Sortieren, sollen doch drei verschiedene Positionen angefahren werden.
Da der Asuro ja Odometrie hat,
Anhang 32590
kann man auch einfach die Position anfahren und am Ende der Kugelbahn noch eine Lichtschranke anbauen.
Wenn eine Kugel die Sortierlichtschranken durchläuft wird einmal der Motor angewiesen eine Position anzufahren und eine Merkvariable gesetzt.
Wenn der Motor die Position erreicht hat (Zählen der Farbwechsel am Odometriesensor), bleibt diese Positionsvorgabe erhalten, bis die Lichtschranke am ende durchlaufne wird und diese die Merkvariable wieder löscht.
Damit ist dann auch die Freigabe für die nächste Kugel an den Motor 1 gegeben.
Du kannst Den Code übrigens auch in Code Tags packen.
Dann wird der Post nicht ellenlang.
Die Funktion ist unter erweitert.