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:
  • 1 Bewertungen - 5 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Jeffs 4-Way Button Code auf Arduino Leonardo?
13.11.2015, 23:31
Beitrag #1
Jeffs 4-Way Button Code auf Arduino Leonardo?
Hallo

ich habe die Codes von dieser Seite probiert, leider nimmt die der Compiler nicht.
http://jmsarduino.blogspot.de/2009/10/4-...-hold.html

Kann mir einer sagen, wie ich diese zum funktionieren bekomme?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.11.2015, 10:05
Beitrag #2
RE: Jeffs 4-Way Button Code auf Arduino Leonardo?
Ok, sorry.

Habe also diesen Code so wie er ist in den Compiler eingefügt

Code:
/* 4-Way Button: Click, Double-Click, Press+Hold, and Press+Long-Hold Test Sketch
By Jeff Saltzman
Oct. 13, 2009

To keep a physical interface as simple as possible, this sketch demonstrates generating four output events from a single push-button.
1) Click: rapid press and release
2) Double-Click: two clicks in quick succession
3) Press and Hold: holding the button down
4) Long Press and Hold: holding the button down for a long time
*/

#define buttonPin 19 // analog input pin to use as a digital input
#define ledPin1 17 // digital output pin for LED 1
#define ledPin2 16 // digital output pin for LED 2
#define ledPin3 15 // digital output pin for LED 3
#define ledPin4 14 // digital output pin for LED 4

// LED variables
boolean ledVal1 = false; // state of LED 1
boolean ledVal2 = false; // state of LED 2
boolean ledVal3 = false; // state of LED 3
boolean ledVal4 = false; // state of LED 4

//=================================================

void setup()
{
// Set button input pin
pinMode(buttonPin, INPUT);
digitalWrite(buttonPin, HIGH );
// Set LED output pins
pinMode(ledPin1, OUTPUT);
digitalWrite(ledPin1, ledVal1);
pinMode(ledPin2, OUTPUT);
digitalWrite(ledPin2, ledVal2);
pinMode(ledPin3, OUTPUT);
digitalWrite(ledPin3, ledVal3);
pinMode(ledPin4, OUTPUT);
digitalWrite(ledPin4, ledVal4);
}

void loop()
{
// Get button event and act accordingly
int b = checkButton();
if (b == 1) clickEvent();
if (b == 2) doubleClickEvent();
if (b == 3) holdEvent();
if (b == 4) longHoldEvent();
}

//=================================================
// Events to trigger by click and press+hold

void clickEvent() {
ledVal1 = !ledVal1;
digitalWrite(ledPin1, ledVal1);
}

void doubleClickEvent() {
ledVal2 = !ledVal2;
digitalWrite(ledPin2, ledVal2);
}

void holdEvent() {
ledVal3 = !ledVal3;
digitalWrite(ledPin3, ledVal3);
}

void longHoldEvent() {
ledVal4 = !ledVal4;
digitalWrite(ledPin4, ledVal4);
}

Der compiler wirft dann aus:
Test5:45: error: 'checkButton' was not declared in this scope

So, dann habe ich von dieser Seite (ist auch auf der Jeff Seite verlinkt) die
Bibliothek Button.zip importiert (hoffe das war richtig)
http://playground.arduino.cc/Code/Button

Dann kommt diese Fehlermeldung:
C:\Users\priva\Documents\Arduino\libraries\Button/Button.h:23:22: fatal error: WProgram.h: No such file or directory

Also habe ich in der button.h
Code:
#include "WProgram.h"
in
Code:
#include "Arduino.h"
geändert.

Nun kommt wieder:
Test5:47: error: 'checkButton' was not declared in this scope

Dachte er Code von Jeff wäre komplett. Oder er läuft halt nicht auf dem Leonardo,
kann ja sein. Die Seite ist ja auch schon 7 Jahre alt.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.11.2015, 10:16
Beitrag #3
RE: Jeffs 4-Way Button Code auf Arduino Leonardo?
Hi noxx,
wenn Du die Seite hinter Deinem Link ganz scharf anschaust, dann findest Du vielleicht die Definition von checkbutton().
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.11.2015, 12:39
Beitrag #4
RE: Jeffs 4-Way Button Code auf Arduino Leonardo?
Hmm, keine Ahnung
Leider.

Muss ich die beiden codes an Anfang der Seite zusammen fügen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.11.2015, 12:53
Beitrag #5
RE: Jeffs 4-Way Button Code auf Arduino Leonardo?
Hi,
wie wär's mal mit Grundlagen lernen? Hol Dir ein Starter-Set und mach alle Übungen durch.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.11.2015, 14:21
Beitrag #6
RE: Jeffs 4-Way Button Code auf Arduino Leonardo?
Hmm, ich wollte nur eine Tastatur mit dem Arduino simulieren und hoffentlich
nett gefragt.

Ist ja so, als würde ich im Auto Forum nach Keilriemenwechsel fragen und man
mir sagen würde, mach erstmal eine Ausbildung zum KFZ Mechaniker.

Danke trotzdem
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.11.2015, 19:00
Beitrag #7
RE: Jeffs 4-Way Button Code auf Arduino Leonardo?
(14.11.2015 14:21)noxx schrieb:  Hmm, ich wollte nur eine Tastatur mit dem Arduino simulieren
Davon hast Du nichts gesagt. Ich kann auch im Sketch nichts dergleichen erkennen.

Zitat:Ist ja so, als würde ich im Auto Forum nach Keilriemenwechsel fragen und man
mir sagen würde, mach erstmal eine Ausbildung zum KFZ Mechaniker.
Nein, es ist so, als ob Du im Auto Forum nach Keilriemenwechsel fragst, aber nicht einmal weißt, wo der Motor ist und was ein Schraubenzieher ist.
...ich habe ja nicht gesagt "Studier erstmal Informatik".
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.11.2015, 01:32
Beitrag #8
RE: Jeffs 4-Way Button Code auf Arduino Leonardo?
weiter runter lesen oder seh ich da was falsch...


Code:
salsaOctober 13, 2009 at 10:53 AM

/* 4-Way Button: Click, Double-Click, Press+Hold, and Press+Long-Hold Test Sketch
By Jeff Saltzman
Oct. 13, 2009

To keep a physical interface as simple as possible, this sketch demonstrates generating four output events from a single push-button.
1) Click: rapid press and release
2) Double-Click: two clicks in quick succession
3) Press and Hold: holding the button down
4) Long Press and Hold: holding the button down for a long time
*/

#define buttonPin 19 // analog input pin to use as a digital input
#define ledPin1 17 // digital output pin for LED 1
#define ledPin2 16 // digital output pin for LED 2
#define ledPin3 15 // digital output pin for LED 3
#define ledPin4 14 // digital output pin for LED 4

// LED variables
boolean ledVal1 = false; // state of LED 1
boolean ledVal2 = false; // state of LED 2
boolean ledVal3 = false; // state of LED 3
boolean ledVal4 = false; // state of LED 4

//=================================================

void setup()
{
// Set button input pin
pinMode(buttonPin, INPUT);
digitalWrite(buttonPin, HIGH );
// Set LED output pins
pinMode(ledPin1, OUTPUT);
digitalWrite(ledPin1, ledVal1);
pinMode(ledPin2, OUTPUT);
digitalWrite(ledPin2, ledVal2);
pinMode(ledPin3, OUTPUT);
digitalWrite(ledPin3, ledVal3);
pinMode(ledPin4, OUTPUT);
digitalWrite(ledPin4, ledVal4);
}

void loop()
{
// Get button event and act accordingly
int b = checkButton();
if (b == 1) clickEvent();
if (b == 2) doubleClickEvent();
if (b == 3) holdEvent();
if (b == 4) longHoldEvent();
}

//=================================================
// Events to trigger by click and press+hold

void clickEvent() {
ledVal1 = !ledVal1;
digitalWrite(ledPin1, ledVal1);
}

void doubleClickEvent() {
ledVal2 = !ledVal2;
digitalWrite(ledPin2, ledVal2);
}

void holdEvent() {
ledVal3 = !ledVal3;
digitalWrite(ledPin3, ledVal3);
}

void longHoldEvent() {
ledVal4 = !ledVal4;
digitalWrite(ledPin4, ledVal4);
}
Reply
salsaOctober 13, 2009 at 10:53 AM

/*
MULTI-CLICK: One Button, Multiple Events

Oct 12, 2009
Run checkButton() to retrieve a button event:
Click
Double-Click
Hold
Long Hold
*/

// Button timing variables
int debounce = 20; // ms debounce period to prevent flickering when pressing or releasing the button
int DCgap = 250; // max ms between clicks for a double click event
int holdTime = 2000; // ms hold period: how long to wait for press+hold event
int longHoldTime = 5000; // ms long hold period: how long to wait for press+hold event

// Other button variables
boolean buttonVal = HIGH; // value read from button
boolean buttonLast = HIGH; // buffered value of the button's previous state
boolean DCwaiting = false; // whether we're waiting for a double click (down)
boolean DConUp = false; // whether to register a double click on next release, or whether to wait and click
boolean singleOK = true; // whether it's OK to do a single click
long downTime = -1; // time the button was pressed down
long upTime = -1; // time the button was released
boolean ignoreUp = false; // whether to ignore the button release because the click+hold was triggered
boolean waitForUp = false; // when held, whether to wait for the up event
boolean holdEventPast = false; // whether or not the hold event happened already
boolean longHoldEventPast = false;// whether or not the long hold event happened already

int checkButton()
{
int event = 0;
// Read the state of the button
buttonVal = digitalRead(buttonPin);
// Button pressed down
if (buttonVal == LOW && buttonLast == HIGH && (millis() - upTime) > debounce) {
downTime = millis();
ignoreUp = false;
waitForUp = false;
singleOK = true;
holdEventPast = false;
longHoldEventPast = false;
if ((millis()-upTime) < DCgap && DConUp == false && DCwaiting == true) DConUp = true;
else DConUp = false;
DCwaiting = false;
}
// Button released
else if (buttonVal == HIGH && buttonLast == LOW && (millis() - downTime) > debounce) {
if (not ignoreUp) {
upTime = millis();
if (DConUp == false) DCwaiting = true;
else {
event = 2;
DConUp = false;
DCwaiting = false;
singleOK = false;
}
}
}
// Test for normal click event: DCgap expired
if ( buttonVal == HIGH && (millis()-upTime) >= DCgap && DCwaiting == true && DConUp == false && singleOK == true) {
event = 1;
DCwaiting = false;
}
// Test for hold
if (buttonVal == LOW && (millis() - downTime) >= holdTime) {
// Trigger "normal" hold
if (not holdEventPast) {
event = 3;
waitForUp = true;
ignoreUp = true;
DConUp = false;
DCwaiting = false;
//downTime = millis();
holdEventPast = true;
}
// Trigger "long" hold
if ((millis() - downTime) >= longHoldTime) {
if (not longHoldEventPast) {
event = 4;
longHoldEventPast = true;
}
}
}
buttonLast = buttonVal;
return event;
}

Nicht denken,...
...nachdenken... Rolleyes
http://capsicum-felicitas.de.tl
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Einfacher Tacho für niedrige Geschwindigkeiten – Code optimieren Bastelo 2 261 12.10.2016 20:31
Letzter Beitrag: Bastelo
  Code mit Verifikation über Keypad & LCD machnetz 5 216 10.10.2016 15:01
Letzter Beitrag: torsten_156
  Frage zu One Button in Kombination mit Fast LED Wolfgang_2801 3 241 26.06.2016 22:11
Letzter Beitrag: hotsystems
  Wo kann ich hier noch Code spahren? (SPI-,Ethernet-,SD-,GSM-Library) avoid 4 384 05.06.2016 14:16
Letzter Beitrag: avoid
  Serial Monitor Eingabe über Code Maxi290997 4 523 12.05.2016 18:57
Letzter Beitrag: SkobyMobil
  Problem: RFID code mit Inhalt einer Textdatei auf einer SD Karte vergleichen MartinK 6 516 29.03.2016 16:45
Letzter Beitrag: MartinK
  OSC Arduino Code Fabian_Fabian 5 435 10.03.2016 23:23
Letzter Beitrag: hotsystems
  Code bei fritzing Miro 3 1.381 08.02.2016 16:16
Letzter Beitrag: Uwa
  Leonardo- Anzeige von MIDI-Daten an ws2812b Modinox 7 483 26.01.2016 13:11
Letzter Beitrag: Bitklopfer
  Code für Würfel korrekt? JanGamer11 12 812 12.01.2016 19:41
Letzter Beitrag: Claus_M

Gehe zu:


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