Regels HIGH en LOW werken contra in de code

Arduino specifieke Software
Gebruikers-avatar
Berichten: 48
Geregistreerd: 15 Jan 2019, 16:28

Re: Regels HIGH en LOW werken contra in de code

Berichtdoor Bosch » 01 Feb 2019, 16:06

Oeps iets teveel gepost vrees ik, weet naar welke ik terug moet.

Maar alvorens mijn "prachtige" test opstelling te slopen....dacht ik dat deze code zou moeten werken:

Via > meten() kom ik hier terecht.....en de led zou 5 sec moeten branden.

Klopt dit of terug naar de lessenaar?

Een tweede Arduino is een uitkomst voor dit soort deel testen.:)


int ledState = LOW;
unsigned long previousMillis;
unsigned long interval = 5000;

void setup(){
pinMode( LED_BUILTIN, OUTPUT);
}

void loop(){

unsigned long currentMillis = millis();

if( currentMillis - previousMillis >= interval)
{
previousMillis = currentMillis;

if(ledState == LOW)
{
ledState = HIGH;

digitalWrite( LED_BUILTIN,ledState);}
}
ledState = LOW;

}

Advertisement

Gebruikers-avatar
Berichten: 48
Geregistreerd: 15 Jan 2019, 16:28

Re: Regels HIGH en LOW werken contra in de code

Berichtdoor Bosch » 02 Feb 2019, 18:59

Bovenstaand probeersel werkt niet.

Ik zal wel het domste jongetje van de klas zijn, maar ik begrijp de werking van Millis() niet
en zonder begrip geen vooruitgang.

Niet getreurt, de code eigen maken is geen kwestie van 'of' maar van 'wanneer'.

Opgeven is geen optie:)

Gebruikers-avatar
Berichten: 631
Geregistreerd: 15 Nov 2015, 11:54

Re: Regels HIGH en LOW werken contra in de code

Berichtdoor Gij Kieken » 02 Feb 2019, 20:49

Ik weet je bedoeling niet echt maar des al niet te min misschien,
Code: Alles selecteren
int ledState = LOW;                                          // Initiëele  ledState
unsigned long previousMillis;                             // De vorige tijd
unsigned long interval = 5000;                          // Kies 5 sec interval

void setup() {
  pinMode( LED_BUILTIN, OUTPUT);                  // Gebruik de ingebouwde Led
}

void loop() {
  unsigned long currentMillis = millis();
  if ( currentMillis - previousMillis >= interval) { // Kijk of er 5 seconden voorbij zijn
    previousMillis = currentMillis;                       // Reset de variabelen
    ledState = !ledState;                                  // Toggle de ledState
    digitalWrite( LED_BUILTIN, ledState);          // Schrijf naar de uitgang
  }
}

Gebruikers-avatar
Berichten: 48
Geregistreerd: 15 Jan 2019, 16:28

Re: Regels HIGH en LOW werken contra in de code

Berichtdoor Bosch » 02 Feb 2019, 23:23

Dank u, hier kan ik verder mee.

Vraagje: kan ik..... !ledState zien als..

if (ledState == LOW){ledState = HIGH;}else {ledState =LOW;} ?

De vertaling van "Toggle" is swichen, vandaar de vraag.

Gebruikers-avatar
Berichten: 631
Geregistreerd: 15 Nov 2015, 11:54

Re: Regels HIGH en LOW werken contra in de code

Berichtdoor Gij Kieken » 03 Feb 2019, 00:07

Ja dat is het zowat.
Hier heb je misschien ook iets aan (het is in het nederlands)http://www.arduino.nu/
dan navigeren naar rechts en een beetje zakken staat er NIEUW in rood hier downloaden.
Dit is zeker ook een opsteker (en ook in nederlands) https://arduino-lessen.nl/

Gebruikers-avatar
Berichten: 48
Geregistreerd: 15 Jan 2019, 16:28

Re: Regels HIGH en LOW werken contra in de code

Berichtdoor Bosch » 03 Feb 2019, 11:34

Top, beide linken zijn prachtig les materiaal, ga ik ernstig bestuderen.

Aankomende dagen om versie 'kippenluik' met delay() en 'kippenluik' met Millis()
tot één werkend geheel te smeden en uit te testen.

Ik ben reuze benieuwd of dat zonder hulp gaat slagen!
Reuze bedankt voor de hulp tot zover.

Gebruikers-avatar
Berichten: 48
Geregistreerd: 15 Jan 2019, 16:28

Re: Regels HIGH en LOW werken contra in de code

Berichtdoor Bosch » 11 Mrt 2019, 21:15

Eindelijk is een werkbare versie klaar! De beweging sensor is nog niet actief
en de licht waarden worden nu getoetst en ingesteld op hun werkzaamheid.

Met dank voor jullie support, tips and tricks blijven welkom, om het beter te maken.

Hieronder de code:

// Automatisch Kippenluik versie 10032019
// Geschreven voor Arduino Nano ATmega 328 (oldBootloader)

int Luikstatus = 0;
int ledState2 = 2;
int ledState5 = 5;
int ledState6 = 6;
int in2 = 7;
int in1 = 8;
int enA = 9;
int licht = (analogRead(A0));
int pirPin = 12; // Pin voor de HC-S501 sensor
int pirValue; // Uitgelezen sensor waarde

void setup() {

Serial.begin(9600);
pinMode(A0, INPUT);
pinMode(enA, OUTPUT);
pinMode(ledState2, OUTPUT);
pinMode(ledState5, OUTPUT);
pinMode(ledState6, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in1, OUTPUT);
digitalWrite(ledState2,HIGH);
pinMode(pirPin, INPUT); // Stel de pirPin in als invoer
}

void openen() {

digitalWrite(ledState5,HIGH);
digitalWrite(in1,LOW);
digitalWrite(in2,HIGH);

// Set speed to 200 out of possible range 0~255
analogWrite(enA, 200);

Serial.print("Luikstatus = ");
Luikstatus = 1;
Serial.println(Luikstatus);
delay(8000);
digitalWrite(ledState5,LOW);
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
meten();
}

void sluiten(){

digitalWrite(ledState6,HIGH);
digitalWrite(in1,HIGH);
digitalWrite(in2,LOW);

// Set speed to 200 out of possible range 0~255
analogWrite(enA, 200);

Serial.print("Luikstatus = ");
Luikstatus = 0;
Serial.println(Luikstatus);
delay(8000);
digitalWrite(ledState6,LOW);
digitalWrite(in1,LOW);
digitalWrite(in2,LOW);
meten();
}
void meten(){

//pirValue = digitalRead(pirPin); // Lees de waarde van de PIR uit
//if (pirValue == 1){Serial.println("Er is beweging");}
//else { Serial.println("Er is geen beweging");}
//Serial.println(pirValue);

int licht = (analogRead(A0));
Serial.print("lichtsterkte = ");
Serial.println(licht);
delay(5000);

if
(licht >220 && Luikstatus == 1){Serial.println("Luik is open");}
if
(licht >220 && Luikstatus == 0){Serial.println("Luik openen"); openen();}
if
(licht <180 && Luikstatus == 0){Serial.println("Luik is dicht");}
if
(licht <180 && Luikstatus == 1){Serial.println("Luik sluiten"); sluiten();}}

void loop(){meten();}


//

Vorige

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Bing [Bot] en 15 gasten