Pseudo-Zufälle kannst Du über die Arduino-Funktion random() erzeugen. Mit random(100) und anschließender Abfrage auf >49 erzeugst Du eine 50/50 Entscheidung.
Pseudo-Zufälle kannst Du über die Arduino-Funktion random() erzeugen. Mit random(100) und anschließender Abfrage auf >49 erzeugst Du eine 50/50 Entscheidung.
Danke cdk,
das war dann doch einfach.
int trigger=12;
int echo=13;
long dauer=0;
long entfernung=0;
int motor1_A=11;
int motor1_B=10;
int motor2_A=6;
int motor2_B=5;
long randNumber;
void setup()
{
pinMode(trigger, OUTPUT);
pinMode(echo, INPUT);
}
void loop()
{
digitalWrite(trigger, LOW);
delay(2);
digitalWrite(trigger, HIGH);
delay(;
digitalWrite(trigger, LOW);
dauer = pulseIn(echo, HIGH);
entfernung = (dauer/2) / 29.1;
if (entfernung <= 35)
{
digitalWrite(motor1_A,LOW); // Stop
digitalWrite(motor2_A,LOW);
digitalWrite(motor1_B,LOW);
digitalWrite(motor2_B,LOW);
delay(500);
digitalWrite(motor1_A,LOW); // Rückwärts
digitalWrite(motor2_A,HIGH);
digitalWrite(motor1_B,HIGH);
digitalWrite(motor2_B,LOW);
delay(500);
if (random(100)>49)
{
digitalWrite(motor1_A,LOW); //Drehung rechts
digitalWrite(motor2_A,LOW);
digitalWrite(motor1_B,HIGH);
digitalWrite(motor2_B,HIGH);
delay(500);
}
else
{
digitalWrite(motor1_A,HIGH); //Drehung links
digitalWrite(motor2_A,HIGH);
digitalWrite(motor1_B,LOW);
digitalWrite(motor2_B,LOW);
delay(500);
}
}
else
{
digitalWrite(motor1_A,HIGH); // Fahren
digitalWrite(motor2_A,LOW);
digitalWrite(motor1_B,LOW);
digitalWrite(motor2_B,HIGH);
}
}
Hallo!
Ich denke, dass am einfachsten wäre benötigte Anzahl von niedrigstwertigen Bits aus freilaufendem Timer, falls noch freien gibt, in zufälligen Zeitabständen ablesen.![]()
MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!
Das verstehe ich jetzt nicht wirklich. Kannst du das kurz erklären oder mit einen Linke geben?
Sorry, aber das ist meine "verrückte Idee" und deshalb bitte um konkrete Fragen, aber ich k.A. über "Cäh" habe.![]()
MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!
Meine Lösung Funktioniert ja zufriedenstellend. Also Danke für den Beitrage mit dem freilaufenden Timer
Ich denke sowas in der Art wird die random Funktion intern auch machen. Der Arduino startet ja nach Reset freiwillig einen Zähler im us Takt (läßt sich per micros() abfragen), der dann nach 70min überläuft und von vorne beginnt. Ich denke dessen untere Bits wären für unkritische Zufallsfunktionen ganz gut brauchbar.
@akjra
Stell dir einen solchen Zähler mal binär vor und frage z.B. die unteren 4 Bit, welche ständig durchrotieren, spontan ab. Da wirst Du dann auch scheinbar zufällige Zahlenwerte von 0..15 erhalten.
@ cdk
Besten Dank für perfekte Erklärung meiner Idee, weil ich Arduino gar nicht kenne.![]()
MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!
Also frei nach CDK:
Random True oder False:
#define ZUFALL (micros() & 1)
if (ZUFALL) links();
else rechts();
Geändert von Sisor (30.01.2015 um 00:36 Uhr)
Wenn ich das richtig verstehe wird der Wert ZUFALL erzeugt +1. Folgt daraus nicht das immer links gedreht wird?
Mit der Funktion habe ich noch keine Erfahrung.
Lesezeichen