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, Was Stimmt an meinem Sketch nicht Andi-1090 12 353 20.03.2020 10:04
Letzter Beitrag: hotsystems
  Bitte um Hilfe für ein Arduino Nano Andi-1090 14 522 08.03.2020 14:55
Letzter Beitrag: Andi-1090
  brauche Hilfe, zeitlicher Ablauf tolotos789 9 535 05.03.2020 13:34
Letzter Beitrag: MicroBahner
  Hilfe bei Facharbeit anonymertom 6 439 03.03.2020 00:44
Letzter Beitrag: Bitklopfer
  COM Port Hilfe HeikeF 8 697 03.01.2020 09:26
Letzter Beitrag: HeikeF
  433Mhz RX + LED Matrix = Hilfe?! Till1 36 2.326 10.12.2019 13:42
Letzter Beitrag: Tommy56
  Anfänger braucht Hilfe Schrittmotorsteuerung für den Hund dg8ngj 4 737 25.08.2019 17:00
Letzter Beitrag: dg8ngj
  Hilfe für Kita-Projekt gesucht. cyberiss 8 1.467 06.08.2019 07:57
Letzter Beitrag: Der Hobbyelektroniker
  Brauche Hilfe bei Arrays mega-hz 23 2.269 10.07.2019 15:59
Letzter Beitrag: MartinZ
  Hilfe benötigt bei der folgenden Aufgabe hanneswave 10 1.413 01.07.2019 18:08
Letzter Beitrag: Wochenendprogrammierer

Gehe zu:


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