Go Down

Topic: Void Setup gebruiken (Read 2401 times) previous topic - next topic

Dijkie

Nov 20, 2019, 09:20 pm Last Edit: Nov 20, 2019, 09:24 pm by Dijkie
Beste Mensen,

Ik ben nieuw met arduino en ben bezig om een lucht bevochtiger te maken.

Ik wil de arduino aan en uit laten schakelen op en bewegingssensor. ik heb dit geprobeerd met de slaapstandfunctie alleen dit wil niet werken met mijn uno board.

Omdat de arduino toch aan een vaste voeding hangt wil ik dit oplossen door te schakelen van void script.
 
dus void aan en void uit,
Om uit te proberen of het werkt heb ik pin2 als aan uit contact ipv een bewegingssensor.

Helaas kom ik niet voorbij het compileer gedeelte. Ik heb gezocht op google, maar wat ik ook probeer het wil niet lukken. Zou iemand mij een handje kunnen helpen?

Deze melding krijg ik met compileren bij de void Off sectie.
exit status 1
a function-definition is not allowed here before '{' token

#include <GravityTDS.h>
#include <EEPROM.h>
#include <Bounce2.h>
#include <DHT.h>
#include <LiquidCrystal_I2C.h>
#define setBUTTON 12
#define upBUTTON 8
#define downBUTTON 13
#define DHTPIN 7
#define DHTTYPE DHT11
#define TdsSensorPin A1

Bounce set;
Bounce up;
Bounce down;

GravityTDS gravityTds;
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27,20,4);  // set the LCD address to 0x27 for a 16 chars and 2 line display

 
  byte HsetpointHIGH = 55;
  byte HsetpointLOW = 50;
  byte FANspeed = 70;
  float temperature = 25,tdsValue = 0;
  int Relaystate;
  int outputValue;
  int sensorValue = 0;
  int ledState;
  int Sensor;
  unsigned long previousMillis1;
  unsigned long previousMillis2;
  unsigned long previousMillis3;
  static byte prevdownButton;
  static byte prevupButton;
  static byte prevsetButton;
  static byte  prevSetMode;
  byte setMode;
  const int Hrelay = 5;
  const int Mosfet = 3;
  const int sensorWater = A0;
  const int waterklep = 6;
  const int led = 9;
  const int PIR = 2;
  const int Display = 10;
  long OnTime = 0;         
  long OffTime = 10000;     


void setup() {


lcd.init();                      // initialize the lcd
lcd.backlight();
lcd.begin(16, 2);
dht.begin();
 digitalWrite (Display, LOW);
 digitalWrite (Hrelay, LOW);
 digitalWrite (waterklep, HIGH);
 analogWrite(led,255);
    set.attach (setBUTTON);
    set.interval(30);
    up.attach (upBUTTON);
    up.interval(30);
    down.attach (downBUTTON);
    down.interval(30);

      pinMode (setBUTTON, INPUT_PULLUP);
      pinMode (upBUTTON, INPUT_PULLUP);
      pinMode (downBUTTON, INPUT_PULLUP);
      pinMode (waterklep, OUTPUT);
      pinMode (Hrelay, OUTPUT);
      pinMode (PIR, INPUT_PULLUP);
     
  HsetpointHIGH = EEPROM.read(0);
  HsetpointLOW = EEPROM.read(1);
  FANspeed = EEPROM.read(2);

gravityTds.setPin(TdsSensorPin);
gravityTds.setAref(5.0);  //reference voltage on ADC, default 5.0V on Arduino UNO
gravityTds.setAdcRange(1024);  //1024 for 10bit ADC;4096 for 12bit ADC
gravityTds.begin();  //initialization

}

void loop() {


PIR, Sensor; 
if (PIR == 0){Sensor = LOW;}
if (PIR == 1){Sensor = HIGH;}
if (Sensor == HIGH){
void On();
 }

 if (Sensor == LOW) {
void Off();
  }

void On(){
 
 unsigned long currentMillis = millis();

 
  set.update();
  up.update();
  down.update();
sensorValue = analogRead(sensorWater);
  unsigned long h = dht.readHumidity();
  float         t = dht.readTemperature();

analogWrite(Mosfet, outputValue);

  //temperature = readTemperature();  //add your temperature sensor and read it
gravityTds.setTemperature(t);  // set the temperature and execute temperature compensation
gravityTds.update();  //sample and calculate
tdsValue = gravityTds.getTdsValue();  // then get the value


 
 
 
  if (isnan(h) || isnan(t)) {
    lcd.clear();
    lcd.setCursor(1,0);
    lcd.print("Failed to read ");
    lcd.setCursor(0,1);
    lcd.print("from DHT sensor!");
    delay(2000);
    lcd.clear();
    return;
  }

  if (h<HsetpointHIGH) {Relaystate = LOW;
 
  outputValue = map(FANspeed, 0, 100, 126, 140);}   
  if (h>HsetpointLOW)  {Relaystate = HIGH; 
  analogWrite(Mosfet,0);}
 
   
 digitalWrite (Hrelay, Relaystate);
 
 sensorValue = analogRead(sensorWater);
  if   (sensorValue<=20){ledState = LOW;}
  if   (sensorValue>=21){ledState = HIGH;}
 
 
  if((ledState == HIGH) && (currentMillis - previousMillis1 >= OnTime))
  {
    ledState = LOW;  // Turn it off
    analogWrite(led,0);
    previousMillis1 = currentMillis;  // Remember the time
    digitalWrite(waterklep, ledState);  // Update the actual LED
  }
  else if ((ledState == LOW) && (currentMillis - previousMillis1 >= OffTime))
  {
    ledState = HIGH;  // turn it on
    analogWrite(led,255);
    previousMillis1 = currentMillis;   // Remember the time
    digitalWrite(waterklep, ledState);    // Update the actual LED
  }
 
 

 
  if ( setMode != 0) {
    if (currentMillis - previousMillis2 >= 5000) {
      setMode = 0;
      previousMillis2 = currentMillis;
    }
  }

    if (set.fell()) {
      setMode++;
    }
    prevsetButton = setBUTTON;
 
  if (setMode >= 4) {
    setMode = 0;
  }
  if (setMode != prevSetMode) {
    lcd.clear();
    prevSetMode = setMode;
  }

  switch (setMode) {
      case 0://normal
   lcd.setCursor(0,0);
   lcd.print("Hum:");
   lcd.setCursor(5,0);
   lcd.print(h);
   lcd.setCursor(7,0);
   lcd.print("%");
   lcd.setCursor(0,1);
   lcd.print("Temp:");
   lcd.setCursor(7,1);
   lcd.print(t);
   lcd.setCursor(12,1);
   lcd.print((char)223);
   lcd.print("C");
   lcd.setCursor(9,0);
   lcd.print(tdsValue,0);
   lcd.setCursor(12,0);
   lcd.print("ppm");
   previousMillis2 = currentMillis;
      break;
   
    case 1://edit temp
   HsetpointLOW = constrain(HsetpointLOW, 00, 100);
      if ('upButton' != prevupButton) {
        if (up.fell()) {
          HsetpointLOW = HsetpointLOW + 1;
        }
        prevupButton = 'upButton';
      }
      if ('downButton' != prevdownButton) {
        if (down.fell()) {
          HsetpointLOW = HsetpointLOW - 1;
        }
        prevdownButton = 'downButton';
      }
      lcd.setCursor(0, 0);
      lcd.print("Set Humidity ON:");
      lcd.setCursor(7, 1);
      lcd.print(HsetpointLOW);
      lcd.setCursor(10,1);
      lcd.print("%");
      EEPROM.write(1, HsetpointLOW);
      break;
 
    case 2://edit humidity
      HsetpointHIGH = constrain(HsetpointHIGH, 00, 100);
      if ('upButton' != prevupButton) {
        if (up.fell()) {
          HsetpointHIGH = HsetpointHIGH + 1;
        }
        prevupButton = 'upButton';
      }
      if ('downButton' != prevdownButton) {
        if (down.fell()) {
          HsetpointHIGH = HsetpointHIGH - 1;
        }
        prevdownButton = 'downButton';
      }
      lcd.setCursor(0, 0);
      lcd.print("Set Humidity OFF:");
      lcd.setCursor(7, 1);
      lcd.print(HsetpointHIGH);
      lcd.setCursor(10,1);
      lcd.print("%");
      EEPROM.write(0, HsetpointHIGH);
      break;

  case 3://edit FANspeed
      FANspeed = constrain(FANspeed, 0, 100);
      if ('upButton' != prevupButton) {
        if (up.fell()) {
          FANspeed = FANspeed + 10; 
      }
        prevupButton = 'upButton';
      }
      if ('downButton' != prevdownButton) {
        if (down.fell()) {
          FANspeed = FANspeed - 10;
     
        }
        prevdownButton = 'downButton';
     
      }
      lcd.setCursor(0, 0);
      lcd.print("Set FANspeed:");
      lcd.setCursor(7, 1);
      lcd.print(FANspeed);
      lcd.setCursor(9,1);
      lcd.print("%");
   
     

      EEPROM.write(2, FANspeed);
      break;
  }
}

void Off(){
PIR, Sensor;
digitalWrite (Display, HIGH);
digitalWrite (Hrelay, HIGH);
digitalWrite (waterklep, HIGH);
analogWrite(led,0);
outputValue,0
}
}








MAS3

Hoi Dijkie, welkom.

Je hebt je code in een kadertje gezet, dus weet je hoe je tags gebruikt.
Graag de volgende keer de [code] [/code] tags te gebruiken, want dan komt de tekst er op de juiste wijze te staan en bovendien is deze dan heel gemakkelijk te kopiëren naar de favoriete editor van de persoon die jouw code eens wil gaan proberen.

De Arduino IDE geeft meer informatie over de fout dan wat je hier hebt laten zien.
Daar word namelijk ook bij verteld waar die fout dan volgens de IDE zou zitten.
Dat zeg ik zo omdat deze informatie soms niet helemaal klopt, maar het is wel een heel grote hulp.
In het geval van de code die je hier in het kader hebt gezet, laat mijn IDE deze (relevante) fouten zien:

Code: [Select]
sketch_nov21a.ino:100:10: error: a function-definition is not allowed here before '{' token
sketch_nov21a.ino:292:1: error: expected '}' at end of input


De getallen geven aan dat er een fout is gevonden in regel 100 op positie 10, en in regel 292 positie 1.

In beide gevallen geldt dat je schijnbaar niet helemaal goed hebt bijgehouden hoe het met je { curly braces } staat.
Het lijkt er op dat je een functie wil gaan definiëren binnen de functie loop().
Dat zou ik nooit doen, en daarom weet ik ook niet of dat überhaupt wel is toegestaan.

De 2e melding is heel duidelijk; je moet uitkomen op een gelijke hoeveelheid { en }, en in dit geval mis je schijnbaar een }.
Hierdoor trek je het hele verloop van je sketch uit elkaar want 1 van je functies word nooit gesloten, en daarmee raakt de compiler de weg kwijt.
Dit is overigens een fout die iedereen wel eens maakt, en daarom biedt de IDE je daar wel wat hulp bij.
Als je je cursor naast een { zet, dan zet de IDE een klein blauw kadertje om de bijbehorende }, en ook andersom dus naast een } een kadertje om diens {.
Het is dan aan jou om te zien of dit ook wel is zoals je bedoeld hebt.
Vuistregel voor die { } is dat je tijdens het typen, wanneer je een{ zet, je er meteen de bijbehorende } naast typt.
Daarna kun je de ruimte tussen de { } gaan vullen.
De IDE helpt je nog meer doordat die dan ook gaat proberen bij elke { } passend in te springen en daarmee word de code een heel stuk gemakkelijker te volgen.
Wanneer dat om 1 of andere reden niet meer klopt, kun je in de IDE ook nog op ctrl- T te drukken (auto format), dan gaat de IDE opnieuw het inspringen corrigeren.


In het kort:
Controleer je {curly braces}.
Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

Dijkie

#2
Nov 21, 2019, 08:37 pm Last Edit: Nov 21, 2019, 08:40 pm by Dijkie
Hoi MAS3 bedankt voor je reactie,

Ik ben alweer een stap verder en het compileren lukt nu wel alleen vraag ik me af of het genen wat ik wil bereiken wel kan?

ik heb 2 manieren geprobeerd

Op deze manier worden alle 3 de voids achter elkaar uitgevoerd en heb ik disco.

Code: [Select]


void loop() {
  Sensor = digitalRead(PIR);

  if (Sensor == HIGH) {
    analogWrite(led, 0);
    void Off();
  }

  if (Sensor == LOW) {
    analogWrite(led, 255);
    void On();
  }


void On();

void Off();
}


De volgende manier word alleen de void loop uitgevoerd. en als ik de PIR pin verbind gaat de led aan of uit maar er word niet geschakeld naar de void On of de void Off loop.

Code: [Select]


void loop() {
  Sensor = digitalRead(PIR);

  if (Sensor == HIGH) {
    analogWrite(led, 0);
    void Off();
  }

  if (Sensor == LOW) {
    analogWrite(led, 255);
    void On();
  }
}

void On(){Code van de loop}

void Off(){Code van de loop}



Handig trouwens dat IDE de foute regels aangeeft! Dat was mij nog niet opgevallen omdat de console bijna helemaal dichtgevouwen zat. Bedankt voor de tip! ;)

ik zat ook aan de switch functie te denken alleen dan blijft de rest van de script ook draaien wat dus niet de bedoeling is.

shooter

begin eens met het lezen hoe en waar je een functie kunt definieren en daarna gebruiken in de loop.
paul deelen
shooter@home.nl
making controls with codesys PLC and arduino

Dijkie

#4
Nov 22, 2019, 03:07 pm Last Edit: Nov 22, 2019, 03:08 pm by Dijkie
Het is gelukt de oplossing was simpel :smiley-lol:

de (if else) funtie is de oplossing! Ik was veelste moeilijk aan het denken. het void verhaal maakte het verwarrend.

Wat ik niet begrijp wat is nou de redenen dat sommige mensen de void functie meerdere malen gebruiken?
Ik kan hier over ook niks vinden in mijn boek.

nu alleen nog een vertraging bijvoegen zodat wanneer er beweging gedetecteerd word. dat de code "if (Sensor == HIGH) {}" voor een half uur word uitgevoerd.

Bedankt mannen!

Code: [Select]

#include <GravityTDS.h>
#include <EEPROM.h>
#include <Bounce2.h>
#include <DHT.h>
#include <LiquidCrystal_I2C.h>
#define setBUTTON 12
#define upBUTTON 8
#define downBUTTON 13
#define DHTPIN 7
#define DHTTYPE DHT11
#define TdsSensorPin A1

Bounce set;
Bounce up;
Bounce down;

GravityTDS gravityTds;
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 20, 4); // set the LCD address to 0x27 for a 16 chars and 2 line display


byte HsetpointHIGH = 55;
byte HsetpointLOW = 50;
byte FANspeed = 70;
float temperature = 25, tdsValue = 0;
int Relaystate;
int outputValue;
int sensorValue = 0;
int ledState;
int Sensor;
unsigned long previousMillis1;
unsigned long previousMillis2;
unsigned long previousMillis3;
static byte prevdownButton;
static byte prevupButton;
static byte prevsetButton;
static byte  prevSetMode;
byte setMode;
const int Hrelay = 5;
const int Mosfet = 3;
const int sensorWater = A0;
const int waterklep = 6;
const int led = 9;
const int PIR = 2;
const int Display = 10;
long OnTime = 0;
long OffTime = 10000;


void setup() {

  digitalWrite (Display, LOW);
  lcd.init();                      // initialize the lcd
  lcd.backlight();
  lcd.begin(16, 2);
  dht.begin();
  digitalWrite (Hrelay, LOW);
  digitalWrite (waterklep, HIGH);
  analogWrite(led, 255);
  set.attach (setBUTTON);
  set.interval(30);
  up.attach (upBUTTON);
  up.interval(30);
  down.attach (downBUTTON);
  down.interval(30);

  pinMode (setBUTTON, INPUT_PULLUP);
  pinMode (upBUTTON, INPUT_PULLUP);
  pinMode (downBUTTON, INPUT_PULLUP);
  pinMode (waterklep, OUTPUT);
  pinMode (Hrelay, OUTPUT);
  pinMode (Display, OUTPUT);
  pinMode (PIR, INPUT);

  HsetpointHIGH = EEPROM.read(0);
  HsetpointLOW = EEPROM.read(1);
  FANspeed = EEPROM.read(2);

  gravityTds.setPin(TdsSensorPin);
  gravityTds.setAref(5.0);  //reference voltage on ADC, default 5.0V on Arduino UNO
  gravityTds.setAdcRange(1024);  //1024 for 10bit ADC;4096 for 12bit ADC
  gravityTds.begin();  //initialization

}

void loop() {
  Sensor = digitalRead(PIR);

  if (Sensor == HIGH) {
  digitalWrite (Display, LOW);
  unsigned long currentMillis = millis();


  set.update();
  up.update();
  down.update();
  sensorValue = analogRead(sensorWater);
  unsigned long h = dht.readHumidity();
  float         t = dht.readTemperature();

  analogWrite(Mosfet, outputValue);

  //temperature = readTemperature();  //add your temperature sensor and read it
  gravityTds.setTemperature(t);  // set the temperature and execute temperature compensation
  gravityTds.update();  //sample and calculate
  tdsValue = gravityTds.getTdsValue();  // then get the value





  if (isnan(h) || isnan(t)) {
    lcd.clear();
    lcd.setCursor(1, 0);
    lcd.print("Failed to read ");
    lcd.setCursor(0, 1);
    lcd.print("from DHT sensor!");
    delay(2000);
    lcd.clear();
    return;
  }

  if (h < HsetpointHIGH) {
    Relaystate = LOW;

    outputValue = map(FANspeed, 0, 100, 126, 140);
  }
  if (h > HsetpointLOW)  {
    Relaystate = HIGH;
    analogWrite(Mosfet, 0);
  }


  digitalWrite (Hrelay, Relaystate);

  sensorValue = analogRead(sensorWater);
  if   (sensorValue <= 20) {
    ledState = LOW;
  }
  if   (sensorValue >= 21) {
    ledState = HIGH;
  }


  if ((ledState == HIGH) && (currentMillis - previousMillis1 >= OnTime))
  {
    ledState = LOW;  // Turn it off
    analogWrite(led, 0);
    previousMillis1 = currentMillis;  // Remember the time
    digitalWrite(waterklep, ledState);  // Update the actual LED
  }
  else if ((ledState == LOW) && (currentMillis - previousMillis1 >= OffTime))
  {
    ledState = HIGH;  // turn it on
    analogWrite(led, 255);
    previousMillis1 = currentMillis;   // Remember the time
    digitalWrite(waterklep, ledState);    // Update the actual LED
  }




  if ( setMode != 0) {
    if (currentMillis - previousMillis2 >= 5000) {
      setMode = 0;
      previousMillis2 = currentMillis;
    }
  }

  if (set.fell()) {
    setMode++;
  }
  prevsetButton = setBUTTON;

  if (setMode >= 4) {
    setMode = 0;
  }
  if (setMode != prevSetMode) {
    lcd.clear();
    prevSetMode = setMode;
  }

  switch (setMode) {
    case 0://normal
      lcd.setCursor(0, 0);
      lcd.print("Hum:");
      lcd.setCursor(5, 0);
      lcd.print(h);
      lcd.setCursor(7, 0);
      lcd.print("%");
      lcd.setCursor(0, 1);
      lcd.print("Temp:");
      lcd.setCursor(7, 1);
      lcd.print(t);
      lcd.setCursor(12, 1);
      lcd.print((char)223);
      lcd.print("C");
      lcd.setCursor(9, 0);
      lcd.print(tdsValue, 0);
      lcd.setCursor(12, 0);
      lcd.print("ppm");
      previousMillis2 = currentMillis;
      break;

    case 1://edit temp
      HsetpointLOW = constrain(HsetpointLOW, 00, 100);
      if ('upButton' != prevupButton) {
        if (up.fell()) {
          HsetpointLOW = HsetpointLOW + 1;
        }
        prevupButton = 'upButton';
      }
      if ('downButton' != prevdownButton) {
        if (down.fell()) {
          HsetpointLOW = HsetpointLOW - 1;
        }
        prevdownButton = 'downButton';
      }
      lcd.setCursor(0, 0);
      lcd.print("Set Humidity ON:");
      lcd.setCursor(7, 1);
      lcd.print(HsetpointLOW);
      lcd.setCursor(10, 1);
      lcd.print("%");
      EEPROM.write(1, HsetpointLOW);
      break;

    case 2://edit humidity
      HsetpointHIGH = constrain(HsetpointHIGH, 00, 100);
      if ('upButton' != prevupButton) {
        if (up.fell()) {
          HsetpointHIGH = HsetpointHIGH + 1;
        }
        prevupButton = 'upButton';
      }
      if ('downButton' != prevdownButton) {
        if (down.fell()) {
          HsetpointHIGH = HsetpointHIGH - 1;
        }
        prevdownButton = 'downButton';
      }
      lcd.setCursor(0, 0);
      lcd.print("Set Humidity OFF:");
      lcd.setCursor(7, 1);
      lcd.print(HsetpointHIGH);
      lcd.setCursor(10, 1);
      lcd.print("%");
      EEPROM.write(0, HsetpointHIGH);
      break;

    case 3://edit FANspeed
      FANspeed = constrain(FANspeed, 0, 100);
      if ('upButton' != prevupButton) {
        if (up.fell()) {
          FANspeed = FANspeed + 10;
        }
        prevupButton = 'upButton';
      }
      if ('downButton' != prevdownButton) {
        if (down.fell()) {
          FANspeed = FANspeed - 10;

        }
        prevdownButton = 'downButton';

      }
      lcd.setCursor(0, 0);
      lcd.print("Set FANspeed:");
      lcd.setCursor(7, 1);
      lcd.print(FANspeed);
      lcd.setCursor(9, 1);
      lcd.print("%");



      EEPROM.write(2, FANspeed);
      break;
  }
  }

else{

  digitalWrite (Display, HIGH);
  digitalWrite (Hrelay, HIGH);
  digitalWrite (waterklep, HIGH);
  analogWrite(led, 0);
  analogWrite(Mosfet, 0);

}
}

nicoverduin

Als je nou eens doet wat shooter zei dan zou je begrijpen wat functies zijn en void betekent
Met vriendelijke groet / kindest regards
Nico Verduin
www.verelec.nl
Do not PM me for personal consultancy unless you are willing to pay for it.

Dijkie

#6
Nov 23, 2019, 12:39 pm Last Edit: Nov 23, 2019, 12:40 pm by Dijkie
Ik begrijp dat de standaard arduino maar 1 loop kan uitvoeren dus mij lijkt het logisch dan dat er maximaal void loop kan zijn.

Wanneer ik naar een slaapstand sketch kijk zie ik wel meerder void's staan. Ik heb deze sketch uitgeprobeerd en het werkt gewoon op mijn arduino uno.


Code: [Select]

/**
 * Author:Ab Kurk
 * version: 1.0
 * date: 24/01/2018
 * Description:
 * This sketch is part of the beginners guide to putting your Arduino to sleep
 * tutorial. It is to demonstrate how to put your arduino into deep sleep and
 * how to wake it up.
 * Link To Tutorial http://www.thearduinomakerman.info/blog/2018/1/24/guide-to-arduino-sleep-mode
 */

#include <avr/sleep.h>//this AVR library contains the methods that controls the sleep modes
#define interruptPin 2 //Pin we are going to use to wake up the Arduino


void setup() {
  Serial.begin(115200);//Start Serial Comunication
  pinMode(LED_BUILTIN,OUTPUT);//We use the led on pin 13 to indecate when Arduino is A sleep
  pinMode(interruptPin,INPUT_PULLUP);//Set pin d2 to input using the buildin pullup resistor
  digitalWrite(LED_BUILTIN,HIGH);//turning LED on
}

void loop() {
 delay(5000);//wait 5 seconds before going to sleep
 Going_To_Sleep();
}

void Going_To_Sleep(){
    sleep_enable();//Enabling sleep mode
    attachInterrupt(0, wakeUp, LOW);//attaching a interrupt to pin d2
    set_sleep_mode(SLEEP_MODE_PWR_DOWN);//Setting the sleep mode, in our case full sleep
    digitalWrite(LED_BUILTIN,LOW);//turning LED off
    delay(1000); //wait a second to allow the led to be turned off before going to sleep
    sleep_cpu();//activating sleep mode
    Serial.println("just woke up!");//next line of code executed after the interrupt
    digitalWrite(LED_BUILTIN,HIGH);//turning LED on
  }

void wakeUp(){
  Serial.println("Interrrupt Fired");//Print message to serial monitor
   sleep_disable();//Disable sleep mode
  detachInterrupt(0); //Removes the interrupt from pin 2;
}



Zou het op deze manier wel gaan werken?

Code: [Select]


const int PIR = 2;

void setup(){
pinMode (PIR, INPUT_PULLUP);
}

void loop(){
PIR, Sensor;
}

void On(Sensor = LOW){
}

void Off(Sensor = HIGH){
}


nicoverduin

#7
Nov 23, 2019, 02:28 pm Last Edit: Nov 23, 2019, 02:30 pm by nicoverduin
We zijn inmiddels 4 uur verder dus heb je tijd zat gehad om daar zelf het antwoord op te geven. Tips zijn zinloos want je doet er toch niets mee.

Overigens als een van mijn studenten met deze vraag zouden komen krijgen ze de standaard vraag:
"Waarom heb je het niet al zelf uitgeprobeerd?". Rook zal er niet uitkomen. Programmatisch de Uno opblazen zal niet gebeuren. Dus wat houdt je tegen?
Met vriendelijke groet / kindest regards
Nico Verduin
www.verelec.nl
Do not PM me for personal consultancy unless you are willing to pay for it.

Dijkie

Nico doe eens aardig . Een forum is gemaakt om elkaar te helpen ongeacht op wel niveau deze persoon zich bevind.

Als je dit een probleem vind reageer gewoon niet of meld je af op dit forum!

Wat mij opvalt is wel dat veel mensen deze topic al bekeken hebben dus misschien is er wel behoefte aan meer informatie over dit onderwerp.




nicoverduin

Heeft niets met aardig zijn te maken. Jij hulp. Die krijg je. En vervolgens schuif je die opzij en blijft doorprutsen. Die tip van shooter is belangrijker dan jij je kennelijk kan voorstellen.
Met vriendelijke groet / kindest regards
Nico Verduin
www.verelec.nl
Do not PM me for personal consultancy unless you are willing to pay for it.

MAS3

Hoi Dijkie.

Wil je dit hele onderwerp nog eens aandachtig doorlezen ?
Dus jouw vragen en alle antwoorden.

Ik probeer altijd mijn berichten zo zorgvuldig mogelijk te maken.
En meestal komt dat er dan op neer dat er meerdere lagen in die berichten zitten.

In mijn eerdere antwoord kun je al een antwoord vinden op de vraag die je daarna stelt, maar jij herkent dat antwoord waarschijnlijk niet.
Dat komt omdat je niet de juiste terminologie gebruikt, en dat is dan weer de reden waarom deze thread dreigt te ontsporen.

Ik hoop dat je dit zult herkennen als je deze hele thread nog een keer doorneemt.

En ik adviseer je sowieso mijn berichten altijd 2 keer te lezen zodat je alle informatie die erin zit, er ook uit zal krijgen.
Al zal dat bij dit bericht minder belangrijk zijn.
Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

Dijkie

Ik snap wat jullie bedoelen ik ben soms wel is een beetje chaotisch en het liefst doe ik alles tegelijk. Maar het is wel belangrijk om te weten wat void is en wat je er mee kunt doen.

Ik heb de functie van void nog eens doorgenomen. Als ik het nu goed begrijp doet de void alleen afspelen wat tussen de {} tekens staat.

Door meerdere voids toe te voegen kun je makkelijker zeggen wanneer een void uitgevoerd mag worden.

Ik heb een voorbeeld gemaakt:

De leds gaan in volgorde Blauw, Rood, Uit

Code: [Select]

const int BLAUW_LED = 5;
const int ROOD_LED = 6;

void setup() {
pinMode (BLAUW_LED, OUTPUT);
pinMode (ROOD_LED, OUTPUT);
digitalWrite(6, HIGH);
digitalWrite(5, HIGH);
}

void loop() {
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
delay(3000);
Going_To_Sleep();
}

void Going_To_Sleep(){
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
delay(3000);
wakeUp();
}

void wakeUp(){
digitalWrite(6, LOW);
digitalWrite(5, HIGH);
delay(3000);
}



De leds gaan op volgorde Rood, Blauw, Uit

Code: [Select]

const int BLAUW_LED = 5;
const int ROOD_LED = 6;

void setup() {
pinMode (BLAUW_LED, OUTPUT);
pinMode (ROOD_LED, OUTPUT);
digitalWrite(6, HIGH);
digitalWrite(5, HIGH);
}

void loop() {
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
delay(3000);
wakeUp();
}

void Going_To_Sleep(){
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
delay(3000);
}

void wakeUp(){
digitalWrite(6, LOW);
digitalWrite(5, HIGH);
delay(3000);
Going_To_Sleep();
}

nicoverduin

#12
Nov 24, 2019, 06:24 pm Last Edit: Nov 24, 2019, 06:25 pm by nicoverduin
Ik zou dat stuk over die functies nog eens goed nalezen en de tijd nemen. Een ding kan ik je wel vertellen een functie void bestaat niet.

De vertaling uit het engels van  "void"
a completely empty space.
Met vriendelijke groet / kindest regards
Nico Verduin
www.verelec.nl
Do not PM me for personal consultancy unless you are willing to pay for it.

shooter

allereerst is void een type (net zoals int en float etc) het wordt gebruikt om een functie te laten draaien die niets teruggeeft (dus bij return geen resultaat).
dus gewoon doorgaan en begin eenvoudig ipv een hele listing copieren en dan je afvragen waarom die B52 niet wil vliegen zoals jouw papieren vliegtuig..
Je vragen zijn terecht maar verwacht geen wonderen.
Kijk voor de grap eens naar SCRATCH dat is programmeren met blokjes, is een stuk eenvoudiger, maar ook dan leer je programmeren.
scrhijf eens een programma dat in de loop na drie seconde (met millis (ofwel 3000) de leds omschakeld, je kunt er dan twee functies aanhangen die elk een ledje laten omschakelen.
en zet er dan een paar serial prints in zodat je kunt zien wat er gebeurt.)
en natuurlijk commentaar wat waar gebeurt.
paul deelen
shooter@home.nl
making controls with codesys PLC and arduino

Go Up