Waar moet ik beginnen??

Alles wat niet past in bovenstaande onderwerpen
Berichten: 20
Geregistreerd: 28 Apr 2020, 21:24

Re: Waar moet ik beginnen??

Berichtdoor RichardZ » 10 Jul 2021, 19:37

[code][/code]

/*
Under construction
Date: 11/05/2021
Author: Gij kieken
Purpose: Switch a couple of Led's On and Off at different times
*/

const byte LED1PIN = 4; //LED 1 on pin D4


#define On true
#define Off false
unsigned long currenttime = millis();
unsigned long previousMillis1 = 0; //will store last time LED 1 was updated

//unsigned long previousMillisn = 0; //will store last time LED n was updated
const byte num1Events = 10; //max number of time events for Led 1


int time1Seq[num1Events] = {2000, 20, 50, 60, 50, 1000, 3000, 20, 60, 30}; //incremental On/Off sequences Led 1


bool led1State = Off; //initial led1State



void setup() {
pinMode(LED1PIN, OUTPUT); //Led 1 as output

Serial.begin(9600);
}

void loop() {
static byte T1 = 0;
static byte T2 = 0;
unsigned long currentMillis = millis();
const byte ledState = digitalRead(LED1PIN);
Serial.println(ledState);
Serial.println(millis() );
digitalWrite( 4,led1State);

if (currentMillis - previousMillis1 >= time1Seq[T1]) {
T1++;
previousMillis1 = currentMillis;
if (led1State == Off) {
led1State = On;
} else {
led1State = Off;
}

if (T1 == num1Events) {
T1 = 0; //start over again
}
}

}

Beste mensen ,

nou is mijn vraag hoe ik hier een 2de led aan toegevoegd krijg. of hoe ik een led kan aansturen met de zelfde soort code maar dan op een ander tijdstip en via poort 2 of een andere

mvg Richard

Advertisement

Berichten: 287
Geregistreerd: 15 Apr 2021, 20:05

Re: Waar moet ik beginnen??

Berichtdoor ctunes » 10 Jul 2021, 23:16

Code: Alles selecteren
#define On true
#define Off false


Waar heb je dit geleerd?

En met welke reden pas je het toe?

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

Re: Waar moet ik beginnen??

Berichtdoor Gij Kieken » 11 Jul 2021, 16:58

Hey Richard,
Ik had nochtans reeds een stukje code geplaatst voor twee Led's
Maar voor het gemak nog maar eens,
Begin je die al een een beetje te snappen,of is het toch dat niet wat je wilt?
Code: Alles selecteren
/*
   Under construction
   Date:    11/07/2021
   Author:  Gij kieken
   Title:      MultipleMillisArray
   Purpose: Switch a couple of Led's On and Off at different times
*/

const byte LED1PIN = 4; //LED 1 on pin D4
const byte LED2PIN = 5; //Led 2 on pin D5
//const byte LED3PIN =6; //Led 3 on pin D6
#define On true
#define Off false

unsigned long previousMillis1 = 0; //will store last time LED 1 was updated
unsigned long previousMillis2 = 0; //will store last time LED 2 was updated
//unsigned long previousMillisn = 0; //will store last time LED n was updated
const byte num1Events = 10;  //max number of time events for Led 1
const byte num2Events = 8;  //max number of time events for Led 2
//const byte numnEvents = n;  //max number of time events for Led n
int time1Seq[num1Events] = {2000, 200, 500, 600, 500, 1000, 3000, 200, 600, 300};  //incremental On/Off sequences Led 1
int time2Seq[num2Events] = {3000, 350, 750, 960, 1550, 1000, 2000, 250};       //incremental On/Off sequences Led 2
//int timenSeq[numnEvents] = {n1, n 2, n..n};  //incremental On/Off sequences Led n
bool led1State = Off; //initial led1State
bool led2State = Off; //initial led2State
//bool lednState = Off; //initial led n State

void setup() {
  pinMode(LED1PIN, OUTPUT); //Led 1 as output
  pinMode(LED2PIN, OUTPUT); //Led 2 as output
  //pinMode(LEDnPIN, OUTPUT); //Led n as output
}

void loop() {
  static byte T1 = 0;
  static byte T2 = 0;
  unsigned long currentMillis = millis();

  if (currentMillis - previousMillis1 >= time1Seq[T1]) {
    T1++;
    previousMillis1 = currentMillis;
    if (led1State == Off) {
      led1State = On;
    } else {
      led1State = Off;
    }
    digitalWrite(LED1PIN, led1State);
    if (T1 == num1Events) {
      T1 = 0; //start over again
    }
  }

  if (currentMillis - previousMillis2 >= time2Seq[T2]) {
    T2++;
    previousMillis2 = currentMillis;
    if (led2State == Off) {
      led2State = On;
    } else {
      led2State = Off;
    }
    digitalWrite(LED2PIN, led2State);
    if (T2 == num2Events) {
      T2 = 0; //start over again
    }
  }
}

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Waar moet ik beginnen??

Berichtdoor shooter » 12 Jul 2021, 08:11

pak het programma blink en verander daar gewoon de tijden in verder niets, dan moet je het uploaden naar je arduino door op het pijltje te drukken. Met veel geluk zal dan het ledje anders gaan knipperen, als het uploaden is gelukt.
als dit werkt dan kun je eens kijken of blink wothout delay ook werkt, dan ben je al behoorlijke stap gemaakt hoor, want dan kun je verder bouwen.
paul deelen
shooter@home.nl

Berichten: 20
Geregistreerd: 28 Apr 2020, 21:24

Re: Waar moet ik beginnen??

Berichtdoor RichardZ » 12 Jul 2021, 20:46

He beste mensen,

bedankt voor jullie snelle reacties.
ctunes dat heb ik uit de code van gij kieken .
Gij kieken dat is precies wat ik nodig had en het werkt naar mijn zin.
dus ik kan hier op verder borduren.
shooter blink withoutdelay leer ik alleen maar een led aan en uit te krijgen met een interval
terwijl ik op een onregelmatige patroon wil hebben

gr Richard

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Waar moet ik beginnen??

Berichtdoor shooter » 13 Jul 2021, 12:07

ctunes dat met define gebruik ik heel vaak omdat aan ook vaak OFF kan zijn zoals relais.
ja richard dat is ook zo, maar je mag de tijden ook in een array zetten zoals gij je laat zien.
paul deelen
shooter@home.nl

Berichten: 287
Geregistreerd: 15 Apr 2021, 20:05

Re: Waar moet ik beginnen??

Berichtdoor ctunes » 13 Jul 2021, 22:23

Jullie hebben allemaal gelijk, maar ook een beetje ongelijk.

Ik was van mening dat On/Off reeds gedefinieerd was in "arduino.h".

Blijkt dat enkel "HIGH" en "LOW" dat zijn; respectievelijk: "true" en "false". (Wat weer in "stdboolean.h" gedefinieerd is als "1" en "0")

Leuke problemen die je kan krijgen door boolean te mixen met integers:
Code: Alles selecteren
if (2 == true) Serial.print("2 = TRUE")
else Serial.println("2 = FALSE");


Erg duidelijk: "2 = FALSE", is de uitkomst.


Desalniettemin kan het gebruik van dergelijke definities onduidelijk overkomen ...

Code: Alles selecteren
if (PINC1 == ON) PORTD13 = true;

of erger:
Code: Alles selecteren
if (PINC == ON) PORTD13 = true;


Dan moet je ervan uitgaan dat met "ON", "true" gemeend is, hergeen uit de code niet evident is.
(Mits inderdaad een: "#define ON false" is geven, ergens in de code.)


Laat ik het zo zeggen: Ik vind het gevaarlijk.

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

Re: Waar moet ik beginnen??

Berichtdoor Gij Kieken » 14 Jul 2021, 13:02

Als je weet waar je mee bezig bent is dit geen probleem.
Maar voor Richard wordt het op die manier alleen maar onduidelijker.

Berichten: 287
Geregistreerd: 15 Apr 2021, 20:05

Re: Waar moet ik beginnen??

Berichtdoor ctunes » 17 Jul 2021, 23:44

Gij Kieken schreef:Als je weet waar je mee bezig bent is dit geen probleem.
Maar voor Richard wordt het op die manier alleen maar onduidelijker.


Heil Richard, die geen lering nodig heeft?

Met welke reden houd jij ervan om altijd maar oplossingen te geven?
OF
Waar leg jij de grens tussen opvoeden en opleiden?

Berichten: 180
Geregistreerd: 26 Aug 2015, 11:57

Re: Waar moet ik beginnen??

Berichtdoor Frits1956 » 18 Jul 2021, 00:20

shooter schreef:ctunes dat met define gebruik ik heel vaak omdat aan ook vaak OFF kan zijn zoals relais.


Hoi shooter, ook ik maak regelmatig gebruik van #define.

Nu ben ik me wat aan het verdiepen in C en in een van de boekjes daarover, schrijven ze dat de compiler bij #define pi 3.14159 een variabele pixelnummer vervangt door 3.14159xelnummer. ik heb er met arduino volgens mij nooit problemen mee gehad. Is jou daar iets over bekend?

ctunes schreef:
Heil Richard, die geen lering nodig heeft?

Met welke reden houd jij ervan om altijd maar oplossingen te geven?
OF
Waar leg jij de grens tussen opvoeden en opleiden?


Ctunes, kan het zijn dat je wat moeite hebt met je te verplaatsen in mensen die in een wat ander tempo kennis opdoen? Als dat zo is, is een forum voor hobbyisten mogelijk niet de meest optimale plek om jouw kennis te etaleren.

VorigeVolgende

Terug naar Theekransje

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 6 gasten