-
Ohh sehe grad die Antwort von Weja.
Dann liege ich wohl gar nicht so falsch mit meiner Vermutung.
Evtl langt schon eine Diode vor R23 um Abhilfe zu schaffen und die Batterien länger nutzen zu können.
Hat jemand von Euch schon ein funktionierendes Programm mit Auswertung der Odometrie?
Ich bin noch etwas ratlos wie ich die OdometrieDaten sinnvoll verwende. Für einen kleinen Denkanstoss wäre ich sehr dankbar.
MfG
Chris
-
Hallo Chris,
wegen der Odometrie Sache siehe mal unter:
https://www.roboternetz.de/phpBB2/viewtopic.php?t=7571
Wie Du die Tasten auch bei eingeschalteten Motoren und schwachen Batterien korrek ausliet kommt da auch, aber teste erstmal die Odometrie Funktion.
Gruß, Weja
-
Hi Leutz,
haben wohl viele Leute, wie auch ich, die Idee von nem ASURO der rumfährt und bei Bedarf zurücksetzt und in einer anderen Richtung weiter fährt.
Habs mal probiert und das ist raus gekommen:
Code:
/* fahren(Kai) */
/* langsam fahren, irgendwo anstoßen, schnell zurücksetzen, 90°drehen, weiterfahren */
/* 02.08.2005 vom Kai */
#include "asuro.h"
int main(void){
int i;
Init();
while(1){
if(PollSwitch()>0){ /* falls taster gedrückt --> */
StatusLED(RED);
BackLED(ON,ON);
MotorDir(RWD,RWD); /* fahre rückwärts -->*/
MotorSpeed(200,200);
for(i=0;i<=270;i++){ /* --> für diese wilkürliche zeitspanne */
Sleep(255);
if(i==270){ /* ist die zeit abgegelaufen--> */
StatusLED(YELLOW);
MotorDir(RWD,FWD); /* --> dreh linksherum --> */
MotorSpeed(152,150);
for(i=0;i<=120;i++){ /* --> für diese wilkürliche zeitspanne */
Sleep(255);
}
}
}
}
else{ /* falls kein taster gedrückt --> */
StatusLED(GREEN);
BackLED(OFF,OFF);
MotorDir(FWD,FWD); /* fahre vorwärts */
MotorSpeed(150,150);
}
}
return 0;
}
und weil mir das noch nicht gereicht hat, hab ich mal versucht das noch ein bißchen schöner zu machen:
Code:
/* fahrenfeiner2 */
#include "asuro.h"
int main(void){
int j,i;
Init();
while(1){
if(PollSwitch() > 0 && PollSwitch() < 8){
StatusLED(RED);
BackLED(ON,ON);
MotorDir(RWD,RWD);
MotorSpeed(200,202);
for(i=0;i<=270;i++){
Sleep(255);
if(i==270){
StatusLED(YELLOW);
BackLED(ON,OFF);
MotorDir(RWD,FWD);
MotorSpeed(150,150);
for(j=0;j<=120;j++){
Sleep(255);
}
}
}
}
else if(PollSwitch() > 7 && PollSwitch() < 60 && PollSwitch() != 12 && PollSwitch() != 18 && PollSwitch() != 30){
StatusLED(RED);
BackLED(ON,ON);
MotorDir(RWD,RWD);
MotorSpeed(200,202);
for(i=0;i<=270;i++){
Sleep(255);
if(i==270){
StatusLED(YELLOW);
BackLED(OFF,ON);
MotorDir(FWD,RWD);
MotorSpeed(150,150);
for(j=0;j<=120;j++){
Sleep(255);
}
}
}
}
else if(PollSwitch() == 12 || PollSwitch() == 18 || PollSwitch() == 30){
StatusLED(RED);
BackLED(ON,ON);
MotorDir(RWD,RWD);
MotorSpeed(200,200);
for(i=0;i<=270;i++){
Sleep(255);
if(i==270){
StatusLED(YELLOW);
BackLED(ON,ON);
MotorDir(RWD,FWD);
MotorSpeed(152,150);
for(j=0;j<=200;j++){
Sleep(255);
}
}
}
}
else{
StatusLED(GREEN);
BackLED(OFF,OFF);
MotorDir(FWD,FWD);
MotorSpeed(150,150);
}
}
return 0;
}
Sorry habs leider noch nicht geschafft mir die anderen Beiträge anzuschauen. Sind bestimmt ganz ähnliche Sachen dabei.
Und habs auch noch nicht geschafft die Dokumentation zu schreiben; aber ist ja eigentlich auch ganz einfach das Programm.
Jetzt will ich fahrenfeiner2 mit noch nen paar Funktionen und vielleicht auch mit einer anderen Struktur verfeinern.
@freq.9: fahren und fahrenfeiner funktionieren ziemlich gut auf meinem ASURO
@Banzai: Das klingt echt gut was du da gemacht hast werd ich direkt mal ausprobieren
@Moebius: Deine Idee mit der Befreiungsschleife gefällt mir, werd ich auch mal probieren in fahrenfeiner2 einzubauen
-
Hi Leutz,
haben wohl viele Leute, wie auch ich, die Idee von nem ASURO der rumfährt und bei Bedarf zurücksetzt und in einer anderen Richtung weiter fährt.
Habs mal probiert und das ist raus gekommen:
Code:
/* fahren(Kai) */
/* langsam fahren, irgendwo anstoßen, schnell zurücksetzen, 90°drehen, weiterfahren */
/* 02.08.2005 vom Kai */
#include "asuro.h"
int main(void){
int i;
Init();
while(1){
if(PollSwitch()>0){ /* falls taster gedrückt --> */
StatusLED(RED);
BackLED(ON,ON);
MotorDir(RWD,RWD); /* fahre rückwärts -->*/
MotorSpeed(200,200);
for(i=0;i<=270;i++){ /* --> für diese wilkürliche zeitspanne */
Sleep(255);
if(i==270){ /* ist die zeit abgegelaufen--> */
StatusLED(YELLOW);
MotorDir(RWD,FWD); /* --> dreh linksherum --> */
MotorSpeed(152,150);
for(i=0;i<=120;i++){ /* --> für diese wilkürliche zeitspanne */
Sleep(255);
}
}
}
}
else{ /* falls kein taster gedrückt --> */
StatusLED(GREEN);
BackLED(OFF,OFF);
MotorDir(FWD,FWD); /* fahre vorwärts */
MotorSpeed(150,150);
}
}
return 0;
}
und weil mir das noch nicht gereicht hat, hab ich mal versucht das noch ein bißchen schöner zu machen:
Code:
/* fahrenfeiner2 */
#include "asuro.h"
int main(void){
int j,i;
Init();
while(1){
if(PollSwitch() > 0 && PollSwitch() < 8){
StatusLED(RED);
BackLED(ON,ON);
MotorDir(RWD,RWD);
MotorSpeed(200,202);
for(i=0;i<=270;i++){
Sleep(255);
if(i==270){
StatusLED(YELLOW);
BackLED(ON,OFF);
MotorDir(RWD,FWD);
MotorSpeed(150,150);
for(j=0;j<=120;j++){
Sleep(255);
}
}
}
}
else if(PollSwitch() > 7 && PollSwitch() < 60 && PollSwitch() != 12 && PollSwitch() != 18 && PollSwitch() != 30){
StatusLED(RED);
BackLED(ON,ON);
MotorDir(RWD,RWD);
MotorSpeed(200,202);
for(i=0;i<=270;i++){
Sleep(255);
if(i==270){
StatusLED(YELLOW);
BackLED(OFF,ON);
MotorDir(FWD,RWD);
MotorSpeed(150,150);
for(j=0;j<=120;j++){
Sleep(255);
}
}
}
}
else if(PollSwitch() == 12 || PollSwitch() == 18 || PollSwitch() == 30){
StatusLED(RED);
BackLED(ON,ON);
MotorDir(RWD,RWD);
MotorSpeed(200,200);
for(i=0;i<=270;i++){
Sleep(255);
if(i==270){
StatusLED(YELLOW);
BackLED(ON,ON);
MotorDir(RWD,FWD);
MotorSpeed(152,150);
for(j=0;j<=200;j++){
Sleep(255);
}
}
}
}
else{
StatusLED(GREEN);
BackLED(OFF,OFF);
MotorDir(FWD,FWD);
MotorSpeed(150,150);
}
}
return 0;
}
Sorry habs leider noch nicht geschafft mir die anderen Beiträge anzuschauen. Sind bestimmt ganz ähnliche Sachen dabei.
Und habs auch noch nicht geschafft die Dokumentation zu schreiben; aber ist ja eigentlich auch ganz einfach das Programm.
Jetzt will ich fahrenfeiner2 mit noch nen paar Funktionen und vielleicht auch mit einer anderen Struktur verfeinern.
@freq.9: fahren und fahrenfeiner funktionieren ziemlich gut auf meinem ASURO
@Banzai: Das klingt echt gut was du da gemacht hast werd ich direkt mal ausprobieren
@Moebius: Deine Idee mit der Befreiungsschleife gefällt mir, werd ich auch mal probieren in fahrenfeiner2 einzubauen
-
Fahren
Fahren jetzt noch feiner:
Code:
/* fahrenfeiner3 */
#include "asuro.h"
int back(void){
int i;
StatusLED(RED);
BackLED(ON,ON);
MotorDir(RWD,RWD);
MotorSpeed(200,202);
for(i=0;i<=270;i++){
Sleep(255);
}
}
int taster(void){
if(PollSwitch() > 0 && PollSwitch() < 8)
return 0;
else if(PollSwitch() > 7 && PollSwitch() < 60 && PollSwitch() != 12 && PollSwitch() != 18 && PollSwitch() != 30)
return 1;
else if(PollSwitch() == 12 || PollSwitch() == 18 || PollSwitch() == 30)
return 2;
}
int main(void){
int j;
Init();
while(1){
if(PollSwitch() != 0){
taster();
taster();
taster();
switch(taster()){
case 0:
back();
StatusLED(YELLOW);
BackLED(ON,OFF);
MotorDir(RWD,FWD);
MotorSpeed(150,150);
for(j=0;j<=120;j++){
Sleep(255);
}
break;
case 1:
back();
StatusLED(YELLOW);
BackLED(OFF,ON);
MotorDir(FWD,RWD);
MotorSpeed(150,150);
for(j=0;j<=120;j++){
Sleep(255);
}
break;
case 2:
back();
StatusLED(YELLOW);
BackLED(ON,ON);
MotorDir(RWD,FWD);
MotorSpeed(152,150);
for(j=0;j<=200;j++){
Sleep(255);
}
break;
}
}
else{
StatusLED(GREEN);
BackLED(OFF,OFF);
MotorDir(FWD,FWD);
MotorSpeed(150,150);
}
}
return 0;
}
So und jetzt werd ich das mal alles ausbauen.
Schönen Abend
-
moibius sehr einfaches program ,gefaelt mir aber sehr gut