Go Down

Topic: Logikproblem (Read 224 times) previous topic - next topic

Michael1978

Hallo liebe Gemeinde.
Wie so viele Newbies bin auch ich nun an meine Logikgrenze gekommen.
Für ein Projekt zur tastengesteuerten Kontrolle eines ESC's aus dem Modellbau komme ich an einer Stelle nicht weiter.
Taster Pin2 gedrückt, Motor beschleunigt definiert, Taster Pin3 gedrückt, Motor verzögert definiert, Taster Pin4 gedrückt, Motor kommt augenblicklich zum Stillstand. Soweit funktioniert alles stabil und einwandfrei...einzig die Funktion Taster Pin2 / Pin3 gleichzeitig gedrückt kommt der Motor nicht wie gewünscht zum Stillstand. Ich sehe den Fehler in der Logik nicht
könnt ihr mir helfen?
Gruß,Micha

HotSystems

Hallo liebe Gemeinde.
Wie so viele Newbies bin auch ich nun an meine Logikgrenze gekommen.
Für ein Projekt zur tastengesteuerten Kontrolle eines ESC's aus dem Modellbau komme ich an einer Stelle nicht weiter.
Taster Pin2 gedrückt, Motor beschleunigt definiert, Taster Pin3 gedrückt, Motor verzögert definiert, Taster Pin4 gedrückt, Motor kommt augenblicklich zum Stillstand. Soweit funktioniert alles stabil und einwandfrei...einzig die Funktion Taster Pin2 / Pin3 gleichzeitig gedrückt kommt der Motor nicht wie gewünscht zum Stillstand. Ich sehe den Fehler in der Logik nicht
könnt ihr mir helfen?
Gruß,Micha

Poste deinen Sketch bitte direkt im Forum.
Bitte Code-Tags verwenden, dann können wir den Sketch auch an Mobilgeräten lesen.
I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

Tommy56

Grundlagen lesen ;)
Das wird nix:
Code: [Select]

//Das wird nix:
(digitalRead(2&&3))
// so wird ein Schuh draus
(digitalread(2) && digitalRead(3))


Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

postmaster-ino

Hi

Ohne den Sketch angeschaut zu haben, muß dann aber auch in den anderen Abfragen, wo die Tasten zum definierten Beschleunigen/Verzögern benutzt werden, die gegenspielende Taste auf ungedrückt getestet werden - wobei, wenn ich 1x +1 und 1x -1 rechne, kommt das Gleiche raus, als ob die die Routinen übersprungen habe - ob die Geschwindigkeit drunter leidet, müsste man Mal ausmessen.

MfG

Michael1978

Super...danke danke... Funktioniert nun vollkommen.
@HotSystems
Werde mich mal mit dem Thema CodeTags beschäftigen, sorry...hatte mich lange lange Zeit von Foren fern gehalten weil der angeschlagene Ton mehr als übel geworden ist... Ich gelobe Besserung... Auch was die Grundlagen und ihr Verständnis angeht. Habe die Vergleiche in der Art nur in Abwandlungen gesehen, konnte sie aber nicht auf mein Projekt verstehen
Nochmals vielen Dank

Michael1978

#5
Oct 12, 2017, 10:18 pm Last Edit: Oct 12, 2017, 11:04 pm by Michael1978 Reason: add CODE TAGS </>
Originalsketch mit dem Fehler...damit der Thread vollständig ist :-)
Code: [Select]
int Pulse=1100; //minimum pulse for arming ESC
int wait=0; // delay time to wait human to acknowledge the press

void setup ()
{ Serial.begin(9600);

pinMode(2, INPUT);
pinMode(3, INPUT);
pinMode(4, INPUT);
pinMode(6, OUTPUT);


} // end of setup

void loop ()
{
//The function that control the speed of the motor
Speedy();

//This is the sketch that generate PWM
digitalWrite(6, HIGH);
delayMicroseconds(Pulse);
digitalWrite(6, LOW);
delayMicroseconds(10000-Pulse);
delayMicroseconds(10000);

Serial.println(Pulse); //So you can view Pulse on serial window
} // end of loop


void Speedy()
{digitalWrite(6, LOW);

//Scan for button switch starts here:
if (digitalRead(2&&3)==HIGH) //emergency cut-off if both switches pulled
{Pulse=1100;digitalWrite(6,HIGH);}

else if(digitalRead(2)==HIGH)//Start Speedup button at Pin 2
{wait=wait+1;
if (wait>10) {Pulse=Pulse+50; wait=0;digitalWrite(6, HIGH);}
if (Pulse>2000) {Pulse=2000;}
}//End speedup button at Pin 2

else if (digitalRead(3)==HIGH)//Start slow down button at Pin 3
{wait=wait+1;
if (wait>10) {Pulse=Pulse-50; wait=0; digitalWrite(6, HIGH);}
if (Pulse<1100) {Pulse=1100;}//In any case the ESC will remain Arm
}//End slow down button at Pin 3

else if (digitalRead(4)==HIGH) //Cut-off button at Pin 4
{Pulse=1100; digitalWrite(6, HIGH);}

else {Pulse=Pulse;digitalWrite(6, LOW);}//If no button press, pulse remains as last pulse
}

HotSystems

Und warum verwendest du keine Code-Tags ?

Verwende dazu die Schaltfläche </> oben links im Editorfenster.
Das kannst du auch nachträglich machen.
Dazu den Sketch markieren und die Schaltfläche klicken.


Damit wird dieser für alle besser lesbar.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

ElEspanol

Du weißt aber schon, das der Sketch grosser Mist ist? Arg viel mehr als das, was er macht, kannst du mit dieser Art der Programmierung nicht reinpacken.

Tommy56

#8
Oct 12, 2017, 10:46 pm Last Edit: Oct 13, 2017, 10:45 am by Tommy56
Das stimmt aber er hat erst mal ein Erfolgserlebnis. Mit dem Lernen kommt (hoffentlich) die Erkenntnis. Dann schreibt man den Sketch halt neu.

Wie oft haben wir als Neulinge von vorn angefangen, weil wir uns verrannt haben? Das gehört zum Lernprozess dazu.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

Michael1978

#9
Oct 12, 2017, 10:53 pm Last Edit: Oct 12, 2017, 11:01 pm by Michael1978
Habs versucht aber die Schaltfläche <\> existiert bei mir nicht
evtl weil ich mit dem Smartphone im Forum bin?
@ElEspanol

Mag sein das es großer Mist ist aber ich bin erst mal zufrieden eine Lösung gefunden zu haben.
Wie würdest Du diese Funktionalität angehen?

HotSystems

Habs versucht aber die Schaltfläche <\> existiert bei mir nicht
Doch die ist bei jedem vorhanden.
Geh unten rechts auf "More-Modify" und evtl. noch auf Preview.

Im übrigen steht alle in "How to use this forum - please read. "
I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

ElEspanol

#11
Oct 12, 2017, 11:14 pm Last Edit: Oct 12, 2017, 11:16 pm by ElEspanol
1. ohne delay, ich stehe da eher auf INTERVAL.h
2. Servo Lib
3. Funktionen verwenden
4. EVA Prinzip

Aber ich denke, dass ich damit nicht der einzige bin

P.S. bei mir am Ipad fehlen auch alle Schaltflächen. In allen Browsern. Im IPhone sind sie inzwischen wieder aufgetaucht

Go Up