INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Hilfe mit Funktinen/Bedingungen
12.01.2020, 17:19
Beitrag #9
RE: Hilfe mit Funktinen/Bedingungen
Gut, dann eine Frage:

Was sagt "const byte CapsLock = 193;" aus,
das CapsLock die 193 ist?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.01.2020, 17:29 (Dieser Beitrag wurde zuletzt bearbeitet: 12.01.2020 17:30 von Tommy56.)
Beitrag #10
RE: Hilfe mit Funktinen/Bedingungen
(12.01.2020 17:19)maxxctv schrieb:  Gut, dann eine Frage:

Was sagt "const byte CapsLock = 193;" aus,
das CapsLock die 193 ist?
Ja und dass es sich zuir Laufzeit nicht ändert (const) - da kann der Kompiler besser optimieren, wenn er das weiß, dass es 8 Bit groß ist (und nicht 16 wie bei int).
Das kann man dann in den Aufrufen von press und release nutzen.

keyboard.press(CapsLock) liest sich doch viel entspannter, als wenn man jedes Mal nachschauen muss, wass denn die blöde 193 nun wieder bedeutet.
Wenn Du das für alle Deine Codes machsat, wird der Sketch viel übersichtlicher und leichter verständlich.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.01.2020, 19:23
Beitrag #11
RE: Hilfe mit Funktinen/Bedingungen
so nach dem mir schon mehrmals die Haare raus gefallen sind, hab ich das geschrieben.

Code:
#include <Keyboard.h>

int keypadPins[5] = {2, 4, 7, 8, 12};
const byte LEFT_CTRL = 128;
const byte CAPS_LOCK = 193;
const byte KEYPAD_1 = 225;
const byte KEYPAD_2 = 226;
const byte KEYPAD_3 = 227;
int buttonApin = 2;    //Kanal 1, Numpad 1
int buttonBpin = 4;   //Kanal 2, Numpad 2
int buttonCpin = 7;   //Kanal 3, Numpad 3
int buttonDpin = 8;   //Sprechtaste, Feststelltaste (KLEIN)
int buttonEpin = 12;  //Sprechtaste, Strg-li + Feststelltaste (GROSS)
int ledPin1 = 3;    //Signalisierung Taster 1
int ledPin2 = 5;    //Signalisierung Taster 2
int ledPin3 = 6;    //Signalisierung Taster 3
int ledPin4 = 9;    //Signalisierung senden
int ledPin5 = 10;   //Signalisierung senden


void setup()
{
  pinMode(buttonApin, INPUT_PULLUP);
  pinMode(buttonBpin, INPUT_PULLUP);
  pinMode(buttonCpin, INPUT_PULLUP);
  pinMode(buttonDpin, INPUT_PULLUP);
  pinMode(buttonEpin, INPUT_PULLUP);
  pinMode(ledPin1, OUTPUT);
  pinMode(ledPin2, OUTPUT);
  pinMode(ledPin3, OUTPUT);
  pinMode(ledPin4, OUTPUT);
  pinMode(ledPin5, OUTPUT);
  Keyboard.begin();
}
void loop()
{
  if (digitalRead(buttonApin) == LOW)
  {
  digitalWrite(ledPin2, LOW);
  digitalWrite(ledPin3, LOW);
  digitalWrite(ledPin1, HIGH);
  Keyboard.write(KEYPAD_1);
  delay(100);
  }
  if (digitalRead(buttonBpin) == LOW)
  {
  digitalWrite(ledPin1, LOW);
  digitalWrite(ledPin3, LOW);
  digitalWrite(ledPin2, HIGH);
  Keyboard.write(KEYPAD_2);
  delay(100);
  }
  if (digitalRead(buttonCpin) == LOW)
  {
  digitalWrite(ledPin1, LOW);
  digitalWrite(ledPin2, LOW);
  digitalWrite(ledPin3, HIGH);
  Keyboard.write(KEYPAD_3);
  delay(100);
  }
  if (digitalRead(buttonDpin) == LOW)
  {
  delay(100);
  digitalWrite(ledPin4, HIGH);
  digitalWrite(ledPin5, HIGH);
  delay(100);
  digitalWrite(ledPin4, LOW);
  digitalWrite(ledPin5, LOW);
  Keyboard.press(CAPS_LOCK);
  delay(100);
  }
  if (digitalRead(buttonEpin) == LOW)
  {
  delay(100);
  Keyboard.press(LEFT_CTRL);
  Keyboard.press(CAPS_LOCK);
  delay(100);
  }
}

Hast Recht, liest sich leichter, mein Problem löst es dennoch nicht.
Caps Lock und Ctrl+Caps Lock sollen so lang gedrückt bleiben,
wie ich auf ButtonD und Button E drücke.
Als drücken und so lang halten, bis ich los lasse.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.01.2020, 19:29
Beitrag #12
RE: Hilfe mit Funktinen/Bedingungen
Was hälst Du hiervon?
Code:
if (digitalRead(buttonDpin) == LOW)   Keyboard.press(CAPS_LOCK);
else Keyboard.release(CAPS_LOCK);

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.01.2020, 11:13 (Dieser Beitrag wurde zuletzt bearbeitet: 16.01.2020 11:14 von biologist.)
Beitrag #13
RE: Hilfe mit Funktinen/Bedingungen
Was mich mal interessieren würde: Warum sind im Code eigentlich so viele Delays enthalten? Die machen den Sketch ja nur unnötig langsam.
Eine Sache gebe ich noch zu bedenken: Taster prellen in der Regel beim Betätigen. Falls du also bemerken solltest, dass irgendwelche Signale mehrfach geschickt werden, dann ist das der Grund.
Wenn man möglichst konstante Bedingungen möchte, dann ist es am besten, den Zustand der Taster zyklisch mit einem Hardware-Timer abzufragen. 1000 Hz zB. Da Taster wie gesagt prellen, bietet es sich an, hier per Software für einen Debounce zu sorgen. Heißt: Wenn man erkennt, dass sich der Zustand des Tasters einmalig geändert hat, dann nimmt man dieses Signal auf und ignoriert für zB die nächsten 20ms erstmal weitere Zustandsänderungen.

Zur (kostenlosen) C-Lektüre würde ich das hier empfehlen: http://openbook.rheinwerk-verlag.de/c_von_a_bis_z/
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.01.2020, 11:24 (Dieser Beitrag wurde zuletzt bearbeitet: 16.01.2020 11:39 von Tommy56.)
Beitrag #14
RE: Hilfe mit Funktinen/Bedingungen
(16.01.2020 11:13)biologist schrieb:  Zur (kostenlosen) C-Lektüre würde ich das hier empfehlen: http://openbook.rheinwerk-verlag.de/c_von_a_bis_z/

Vorsicht! In dem Buch sind einige schwerwiegende Fehler enthalten, z.B hier diskutiert.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.01.2020, 11:00
Beitrag #15
RE: Hilfe mit Funktinen/Bedingungen
Ich war die letzten Tage auf Montage und konnte nichts machen.
Ich werde dann

Code:
if (digitalRead(buttonDpin) == LOW)   Keyboard.press(CAPS_LOCK);
else Keyboard.release(CAPS_LOCK);

versuchen.

Zitat:Was mich mal interessieren würde: Warum sind im Code eigentlich so viele Delays enthalten?

Das hab ich so aus den Beispielen der Arduino-Referenz übernommen.
100ms ist ja nicht so lang und im Sketch spielt Zeit auch keine Rolle.
Wenn ich kein Delay brauche, nehm ich sie raus.

Ich hatte auch was zum Thema Zustandsänderungen abfragen gelesen.

Zitat:Wenn du eine Taste haben willst die man drücken und auch halten kann müßtest du:
wenn gedrückt wird den press befehl senden und in einer variable merken das die taste gedrückt ist
wenn wieder los gelassen wird den release befehl senden und wieder merken das nicht mehr gedrückt ist.

Das wurde dann so gelöst:

Zitat:Es geht mit Keyboard.press(), einer Variablen als Zwischenspeicher und einem kleinen delay() gegen das prellen:

int key5 =0;

if ( digitalRead(23) == LOW && key5 == 0) {Keyboard.press(KEY_5); key5 = 1; delay(20);}
if ( digitalRead(23) == HIGH && key5 == 1) {Keyboard.release(KEY_5); key5 = 0; }

Leider kann ich mir unter "einer Variablen als Zwischenspeicher" nichts vorstellen.
Noch bin ich dabei diesen Zauber zu verstehen.

Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.01.2020, 11:05
Beitrag #16
RE: Hilfe mit Funktinen/Bedingungen
key5 ist die Variable.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Brauche Hilfe bei Arrays mega-hz 25 3.908 02.02.2021 16:57
Letzter Beitrag: Tommy56
  Erbitte Hilfe bei Counter für Einsteiger Gravtiy 19 730 25.01.2021 17:30
Letzter Beitrag: hotsystems
Question Hilfe bei Programmierung (Rainbow) AlexTimo1995 5 349 06.01.2021 17:26
Letzter Beitrag: Harry
  Hilfe, Bitweises Einschalten von Digitalausgängen Portregisterübergreifend Christian_Moba-Arduino 9 567 22.12.2020 01:25
Letzter Beitrag: Bitklopfer
  Benötige dringende Hilfe bei CHAR DO3GE 4 546 07.10.2020 10:41
Letzter Beitrag: Tommy56
  RGB Controller Hilfe bei der Programmierung Jumbo_27 1 510 15.08.2020 17:32
Letzter Beitrag: Tommy56
  Brauch Hilfe bei Laser Nevelierung mit Traktor Schild SiR WonG 4 1.017 26.07.2020 10:00
Letzter Beitrag: SiR WonG
  Wie mehrere Bedingungen in if-Definition einbauen? Gelegenheitsbastler 7 33.284 18.05.2020 09:53
Letzter Beitrag: SimonTau
  Hilfe Millis treibt mich in den Wahnsinn Nefrett 17 2.371 04.05.2020 20:53
Letzter Beitrag: Tommy56
  Brauche Hilfe, Was Stimmt an meinem Sketch nicht Andi-1090 12 1.831 20.03.2020 10:04
Letzter Beitrag: hotsystems

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste