Loop mit Taster und Serieller Monitor starten

Hallo :slight_smile:

Ich möchte mein Programm per Taster an einem digitalen Eingang und über Eingabe eins Tastendrucks (Tastatur) im seriellen Monitor starten können.

Geht das überhaupt? Wenn ja wie ?

Bis jetzt habe ich es nur geschafft, das ich das Programm entweder nur per Taster oder nur über den seriellen Monitor starten kann. :frowning:

Ich bedanke mich jetzt schon für eure Hilfe :slight_smile:

Grüße Optimus

Geht das überhaupt?
Nein und ja.

Wenn ja wie ?
Den fraglichen Codeabschnitt nur durchführen wen ein Flag gesetzt ist.
Das Flag über Taster oder die Serielle verändern.

Oder anders gesagt:
zeig mal deine zwei Sketche und stelle sie hier ein, vieleicht kann man dir helfen.

int Poti= A0; 
int Motor = 9; 
int Potiwert;
int Ausgangswert;
char befehl;


void setup() 
{

pinMode (Poti, INPUT);
pinMode (Motor, OUTPUT); 
Serial.begin(9600);
Serial.println("Motor Steuerung");

}
 
void loop() {
 
  
Serial.println("Einschalten: 'e'");

while (befehl != 'e' )
{
befehl = Serial.read();  
}
Potiwert = analogRead(Poti); 
Ausgangswert = Potiwert / 4;
  {

  }
if (befehl == 'e'){
 analogWrite(Motor, Ausgangswert);
 {
 Serial.println("Der Motor wurde eingeschaltet ");
  }
analogWrite(Motor, Ausgangswert);
delay(5000);
digitalWrite (Motor,LOW);
Serial.println("Der Motor wurde ausgeschaltet ");

befehl = 'r';
  }

}
int EIN = 2;
int Poti= A0; 
int Motor = 9; 
int Potiwert;
int Ausgangswert;



void setup() 
{
pinMode (EIN, INPUT);
pinMode (Poti, INPUT);
pinMode (Motor, OUTPUT); 
Serial.begin(9600);

}

void loop()
{

while(digitalRead(EIN)==HIGH){
Potiwert = analogRead(Poti); 
Ausgangswert = Potiwert / 4;
analogWrite(Motor, Ausgangswert);
Serial.println(Ausgangswert);
delay(5000);
digitalWrite (Motor,LOW);

Optimus98:
Ich möchte mein Programm per Taster an einem digitalen Eingang ... starten können.
Geht das überhaupt? Wenn ja wie ?

Siehe hier (dritte Überschrift).

Gruß

Gregor

wenn du dir zwei Sachen ansiehst:

if (befehl == 'e'){

versus:

while(digitalRead(EIN)==HIGH){

dann lies bitte mal || - Arduino-Referenz . Ich denke das wird dir helfen.

wenn du den Rest von 2 in 1 integrierst wirst du auf ca so etwas kommen:

if (befehl == 'e' || digitalRead(EIN)){

Danke, hat geklappt! :slight_smile: :slight_smile:

wenn du an weiterem Feedback an deinem Code interessiert bist, drück mal STRG-T in der IDE und stell noch mal deinen Sketch ein, wie er nun aussieht.