Hallo,
Ik ben helemaal nieuw in Arduino, en heb er nu al enkele dagen mee geëxperimenteerd. Ik ben in het bezit van een Arduino Nano en een 4-richtingen tilt sensor
. En LEDs en weerstanden ook natuurlijk
momenteel ben ik bezig met een project waarbij er iets moet kantelen, en per keer het kantelt, moet er een extra LED gaan branden. Dit is tot dusver gelukt.
(code hieronder)
Nu wil dat product inschakelen door eraan te schudden.
Ik dacht iets in de richting van:
if inPin2 and/or inPin3 signaal ontvangt en geen signaal ontvangt (HIGH & LOW) 5 keer in 3 seconden
'start onderstaande'
int ledPin12 = 12;
int ledPin11 = 11;
int ledPin10 = 10;
int ledPin9 = 9;
int ledPin8 = 8;
int ledPin7 = 7;
int inPin2 = 2;
int inPin3 = 3;
int val = 0;
void setup()
{
pinMode(ledPin7,OUTPUT);
pinMode(ledPin8,OUTPUT);
pinMode(ledPin9,OUTPUT);
pinMode(ledPin10,OUTPUT);
pinMode(ledPin11,OUTPUT);
pinMode(ledPin12,OUTPUT);
pinMode(inPin2, INPUT);
pinMode(inPin3, INPUT);
}
void loop()
{
val = digitalRead(inPin2); // read input value
if (val == HIGH) { // check if the input is HIGH (button released)
digitalWrite(ledPin7, HIGH); // turn LED ON
} else {
digitalWrite(ledPin7, HIGH); // turn LED ON
digitalWrite(ledPin8, HIGH); // turn LED ON
val = digitalRead(inPin2); // read input value
if (val == HIGH) { // check if the input is HIGH (button released)
digitalWrite(ledPin7, HIGH); // turn LED ON
} else {
digitalWrite(ledPin7, HIGH); // turn LED ON
digitalWrite(ledPin8, LOW); // turn LED ON
val = digitalRead(inPin3); // read input value
if (val == HIGH) { // check if the input is HIGH (button released)
digitalWrite(ledPin9, LOW); // turn LED ON
} else {
digitalWrite(ledPin8, HIGH); // turn LED ON
digitalWrite(ledPin9, HIGH); // turn LED ON
val = digitalRead(inPin2);
if (val == HIGH) { // check if the input is HIGH (button released)
digitalWrite(ledPin7, HIGH); // turn LED ON
digitalWrite(ledPin9, HIGH); // turn LED ON
digitalWrite(ledPin10, HIGH); // turn LED ON
digitalWrite(ledPin8, HIGH); // turn LED ON
} else {
digitalWrite(ledPin10, LOW); // turn LED ON
val = digitalRead(inPin2); // read input value
if (val == HIGH) { // check if the input is HIGH (button released)
digitalWrite(ledPin7, HIGH); // turn LED ON
} else {
digitalWrite(ledPin7, HIGH); // turn LED ON
digitalWrite(ledPin8, HIGH); // turn LED ON
}
}
}
}
}
en om hem uit te zetten klinkt het in mijn gedachten als:
if inPin2 and/or inPin3 signaal ontvangt en geen signaal ontvangt (HIGH & LOW) && ledPin7,(HIGH) and/or ledPin8,(HIGH) and/or ledPin9,(HIGH) and/or ledPin10,(HIGH) and/or ledPin11,(HIGH) and/or ledPin12,(HIGH) 5 keer in 3 seconden
Loop naar het begin
Ik heb ondertussen al iets gevonden om 1 LED aan te zetten. Maar als ik het commando van de brandende LED vervang door het gehele schema, doet hij het niet. hieronder zie je de code om 1 LED te laten branden door te schudden.
int ledPin12 = 12;
int ledPin11 = 11;
int ledPin10 = 10;
int ledPin9 = 9;
int ledPin8 = 8;
int ledPin7 = 7;
int inPin2 = 2;
int inPin3 = 3;
int val = 0;
int buttonPushCounter = 0; // counter for the number of button presses
int buttonState = 0; // current state of the button
int lastButtonState = 0; // previous state of the button
long firstPress = 0;
long countingTime = 5000;
int presses = 0;
void setup()
{
pinMode(ledPin7,OUTPUT);
pinMode(ledPin8,OUTPUT);
pinMode(ledPin9,OUTPUT);
pinMode(ledPin10,OUTPUT);
pinMode(ledPin11,OUTPUT);
pinMode(ledPin12,OUTPUT);
pinMode(inPin2, INPUT);
pinMode(inPin3, INPUT);
}
void loop()
{
if(digitalRead(inPin2) == HIGH)
{
firstPress = millis();
presses = 1;
while(millis() - firstPress < countingTime)
{
if(digitalRead(inPin2) == HIGH)
{
presses++;
}
}
if(digitalRead(inPin2) == HIGH)
{
firstPress = millis();
presses = 5;
digitalWrite(ledPin7,HIGH);
}
}
}
Bedankt,
Samory