switch case / button state ?
9 berichten
• Pagina 1 van 1
switch case / button state ?
beste
hoe kan ik een schakeling maken waar bij ik gebruik maak van 1 button die 2 relais schakelt in een patroon
bij 1 maal drukken gaat relais 1 dicht
bij nog een keer drukken gaat relais 2 dicht
bij nog een keer drukken gaan relais 1 open
en bij nog een keer drukken gaat relais 1 en 2 open
als ik op internet zoek dan kom ik wel iets tegen maar dat werkt via serial
zoals hieronder maar hoe zou ik dit kunnen veranderen ?
kan iemand een voorzetje geven ?
groet dirk ambu
hoe kan ik een schakeling maken waar bij ik gebruik maak van 1 button die 2 relais schakelt in een patroon
bij 1 maal drukken gaat relais 1 dicht
bij nog een keer drukken gaat relais 2 dicht
bij nog een keer drukken gaan relais 1 open
en bij nog een keer drukken gaat relais 1 en 2 open
als ik op internet zoek dan kom ik wel iets tegen maar dat werkt via serial
zoals hieronder maar hoe zou ik dit kunnen veranderen ?
- Code: Alles selecteren
void setup() {
// initialize serial communication:
Serial.begin(9600);
// initialize the LED pins:
for (int thisPin = 2; thisPin < 7; thisPin++) {
pinMode(thisPin, OUTPUT);
}
}
void loop() {
// read the sensor:
if (Serial.available() > 0) {
int inByte = Serial.read();
// do something different depending on the character received.
// The switch statement expects single number values for each case;
// in this exmaple, though, you're using single quotes to tell
// the controller to get the ASCII value for the character. For
// example 'a' = 97, 'b' = 98, and so forth:
switch (inByte) {
case 'a':
digitalWrite(2, HIGH);
break;
case 'b':
digitalWrite(3, HIGH);
break;
case 'c':
digitalWrite(4, HIGH);
break;
case 'd':
digitalWrite(5, HIGH);
break;
case 'e':
digitalWrite(6, HIGH);
break;
default:
// turn all the LEDs off:
for (int thisPin = 2; thisPin < 7; thisPin++) {
digitalWrite(thisPin, LOW);
}
}
}
}
kan iemand een voorzetje geven ?
groet dirk ambu
Advertisement
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: switch case / button state ?
Tellertje maken:
Na elke button teller++
En als de teller gelijk aan 4 dan teller op 0.
switch teller etc
Case 1:
Case 2:
etc
Tutti
Na elke button teller++
En als de teller gelijk aan 4 dan teller op 0.
switch teller etc
Case 1:
Case 2:
etc
Tutti
Re: switch case / button state ?
hoi nico
ik loop vast
voor als nog heb ik het volgende
wat de } aangaan ik zie niet waar ik iets begin en iets stop in deze
maar boven standen werkt niet
waar ga ik fout of wat doe ik goed ?
ik loop vast
voor als nog heb ik het volgende
- Code: Alles selecteren
const int buttonPin1 = 8; // the pin that the pushbutton is attached to
const int ledPin = 2; // the pin that the LED is attached to
const int ledPin1 = 4; // the pin that the LED is attached to
// Variables will change:
int buttonPushCounter1 = 0; // counter for the number of button presses
int buttonState1 = 0; // current state of the button
int lastButtonState1 = 0; // previous state of the button
void setup() {
pinMode(buttonPin1, INPUT);
digitalWrite(buttonPin1, HIGH); // turn on pullup resistors
pinMode(ledPin, OUTPUT); // initialize the LED as an output
pinMode(ledPin1,OUTPUT);
}
void loop() {
buttonState1 = digitalRead(buttonPin1); // read the pushbutton input pin1
if (buttonState1 != lastButtonState1) // compare the buttonState to its previous state
{ // if the state has changed, increment the counter
if (buttonState1 == HIGH) // if the current state is HIGH then the button
{ // went from off to on.
buttonPushCounter1++;
}
lastButtonState1 = buttonState1; // save the current state as the last state for next time through the loop
if (buttonPushCounter1 %3 == 0) // turns on the LED every four button pushes by checking the modulo of the button push counter.
switch (buttonPushCounter1)
case 1: {
digitalWrite(ledPin, HIGH);
digitalWrite(ledPin1, LOW);
break;
case 2:
{
digitalWrite(ledPin, HIGH);
digitalWrite(ledPin1, HIGH);
break;
case 3:
{
digitalWrite(ledPin, LOW);
digitalWrite(ledPin1, LOW);
break;
}
}
}
}
}
wat de } aangaan ik zie niet waar ik iets begin en iets stop in deze
maar boven standen werkt niet
waar ga ik fout of wat doe ik goed ?
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: switch case / button state ?
Je ging fout in:
- orde en netheid
- structuur in je programma
- geen slimme dingen doen (modulo is leuk maar je teller loopt door en wordt na 32768 negatief
- Je gebruikt pullups dus een button is AAN als je hem naar GND trekt (= LOW)
- Geen accolades bij case. Had je zo kunnen vinden op Google. En als je ze gebruikt, dan moet je ook de sluit accolade gebruiken . Immers dat bepaalt de scope van die regels code
- de state oplossing is veel te ingewikkeld.
Bijgaand de werkende versie
-
- orde en netheid
- structuur in je programma
- geen slimme dingen doen (modulo is leuk maar je teller loopt door en wordt na 32768 negatief
- Je gebruikt pullups dus een button is AAN als je hem naar GND trekt (= LOW)
- Geen accolades bij case. Had je zo kunnen vinden op Google. En als je ze gebruikt, dan moet je ook de sluit accolade gebruiken . Immers dat bepaalt de scope van die regels code
- de state oplossing is veel te ingewikkeld.
Bijgaand de werkende versie
- Code: Alles selecteren
// Do not remove the include below
#include "P1DAmbu.h"
const int buttonPin1 = 14; // the pin that the pushbutton is attached to
const int ledPin = 2; // the pin that the LED is attached to
const int ledPin1 = 4; // the pin that the LED is attached to
// Variables will change:
int buttonPushCounter1 = 2; // counter for the number of button presses. Start at 0 (will loop around first)
bool buttonState;
void setup() {
pinMode(buttonPin1, INPUT);
digitalWrite(buttonPin1, HIGH); // turn on pullup resistors
pinMode(ledPin, OUTPUT); // initialize the LED as an output
pinMode(ledPin1, OUTPUT);
buttonState = false;
}
void loop() {
if (digitalRead(buttonPin1) == LOW) // if the current state is LOW (use of pullups) then the button
{ // went from off to on.
if (buttonState == false) { // allows button to be read and will wait until release
//
// increment counter
//
buttonPushCounter1++;
//
// max 3 different possibilities
//
if (buttonPushCounter1 == 3) {
buttonPushCounter1 = 0;
}
//
// button is processed so wait until released
//
buttonState = true;
}
//
// process button counter
//
switch (buttonPushCounter1) {
case 0:
digitalWrite(ledPin, HIGH);
digitalWrite(ledPin1, LOW);
break;
case 1:
digitalWrite(ledPin, HIGH);
digitalWrite(ledPin1, HIGH);
break;
case 2:
digitalWrite(ledPin, LOW);
digitalWrite(ledPin1, LOW);
break;
}
} else {
//
// button is released
//
buttonState = false;
}
}
-
Re: switch case / button state ?
beste nico
dat ziet er een stuk netter uit dan bij mij dat zeker
maar heb je ook "P1DAmbu.h" voor mij
want deze heb ik niet of is mijn uitdaging nu om deze zelf te maken ??
dan wel het programma aan te passen zodat "P1DAmbu.h" niet nodig is
dat ziet er een stuk netter uit dan bij mij dat zeker
maar heb je ook "P1DAmbu.h" voor mij
want deze heb ik niet of is mijn uitdaging nu om deze zelf te maken ??
dan wel het programma aan te passen zodat "P1DAmbu.h" niet nodig is
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: switch case / button state ?
delete die regel gewoon. Is alleen nodig voor de ECLIPSE omgeving
Re: switch case / button state ?
heb ik net gedaan en het werkt
alleen als ik snel druk of de knop ingedrukt houd dan slaat hij soms een stap over
is dat op te lossen via Debounce ? of zoek ik verkeert ?
alleen als ik snel druk of de knop ingedrukt houd dan slaat hij soms een stap over
is dat op te lossen via Debounce ? of zoek ik verkeert ?
Re: switch case / button state ?
of moet
// Variables will change:
int buttonPushCounter1 = 2; // counter for the number of button presses. Start at 0 (will loop around first)
bool buttonState;
zijn
// Variables will change:
int buttonPushCounter1 = 2; // counter for the number of button presses. Start at 0 (will loop around first)
boolean buttonState;
ik hoor het graag
// Variables will change:
int buttonPushCounter1 = 2; // counter for the number of button presses. Start at 0 (will loop around first)
bool buttonState;
zijn
// Variables will change:
int buttonPushCounter1 = 2; // counter for the number of button presses. Start at 0 (will loop around first)
boolean buttonState;
ik hoor het graag
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: switch case / button state ?
boolean = bool
Je kan altijd nog een debounce inbouwen.
delay van 10-50 milliseconden oid.
Je kan altijd nog een debounce inbouwen.
delay van 10-50 milliseconden oid.
9 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: baculeciki, PatrickAbomi en 38 gasten