Ne die müssen doch umgedreht sein, wenn ich nämlich die phototransistoren gegens licht halte dann wird die StatusLED rot. Auf einem weißen blatt wurde sie sofort gelb. Hm...ich weiß net mehr weiter :(
Druckbare Version
Ne die müssen doch umgedreht sein, wenn ich nämlich die phototransistoren gegens licht halte dann wird die StatusLED rot. Auf einem weißen blatt wurde sie sofort gelb. Hm...ich weiß net mehr weiter :(
weisses blatt papier und licht sollten eigentlich den gleichen effekt haben. was passiert bei schwarzem papier bzw. abgedunkeltem raum?
das prinzip ist das folgende: je mehr licht auf die fototransistoren fällt (bzw vom weissen papier reflektiert wird) desto mehr strom kann durchfliessen. je mehr strom durchfliesst, desto höher ist der messwert, den der ADC des prozessors zurückgibt. und je höher der messwert, desto höher ist die zahl, die die funktion LineData() zurückgibt bzw in der variable speichert.
jap ich weiß. aber das is iwi komisch, das weiße blatt is eigentlich noch hell genug gewesen als ich das gemacht hab, also von den lampen her, ina luft hat er noch die rote lampe angezeigt, obwohl sie eigentlich sofort auf gelb hätte schalten sollen, war iwi verwirrend ^^.
auch in der luft bekommen die fototransistoren licht ab. dunkel sie mal komplett ab, und schau was dann passiert. oder leuchte sie extrem an (schreibtischlampe) und schau was dann passiert.
versuch es mal mit dem Quelltext, diesen habe ich geschrieben.
Der Asuro reagiert auf das Licht, macht sich also in einem etwas dunklem Raum und einer Taschenlampe.
einfach mal ausprobieren. :-)
Achja, mein Asuro hat ein kleines Problem FWD ist bei dem RWD und umgekehrt....
Code:#include "asuro.h"
int main(void)
{
unsigned int data[2];
unsigned char tastea;
unsigned char tasteb;
Init();
int i;
StatusLED(GREEN);
FrontLED(OFF);
MotorDir(RWD,RWD);
while(1)
{
tastea = PollSwitch();
Sleep(216);
tasteb = PollSwitch();
if (tastea == tasteb)
{
if (tasteb > 0)
{
MotorDir(FWD,FWD);
MotorSpeed(100,100);
StatusLED(RED);
for(i=0;i<=650;i++)
{
Sleep(216);
}
}
else
{
MotorDir(RWD,RWD);
LineData(data);
StatusLED(GREEN);
if(data[1] > data[0])
{
MotorSpeed(200,100);
BackLED(ON,OFF);
}
else
{
BackLED(OFF,ON);
MotorSpeed(100,200);
}
}
}
}
return 0;
}
dieses problem haben fast alle neuen asuros. das solltest du umlöten, denn sonst laufen deine programme nicht auf fremden asuros und umgekehrt.
das scheint leider ein konstruktionsfehler von arexx zu sein.