led aansturing

IDE gerelateerde berichten
Berichten: 3
Geregistreerd: 04 Mei 2013, 22:25

led aansturing

Berichtdoor overmarsmarinus » 04 Mei 2013, 22:43

een goede dag u allen

Ik ben bezig met een boot te bouwen en daarin zou ik graag ledverlichting in willen aanbrengen. Ik kwam deze sketch tegen. Ik heb dit voor elkaar gemaakt met de arduino en het werkt en de leds gaan om de buurten aan en uit.
Mijn vraag is hoe moet ik het aanpakken om de eerste led op pin 9 bijvoorbeeld 30 sec te laten branden dat de led op pin 8 begint te branden na 10 sec en deze gaat ook uit na 30 sec weer uit. led op pin 9 en de led op pin 8 branden dan 20 sec samen. Kan iemand mij vertellen hoe ik dit moet aanpakken het gebruikte programma staat hier onder.

tijdslijn

...............0........10........20........30........40
led op pin 9 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
led op pin 8 00000000xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx






Ik hoop dat u mij verder kunt helpen
mvgr leo overmars

void setup() // begin met setup parameters
{
pinMode(9, OUTPUT);// initialiseer pin 9 (de linker led als uitgangs pin).
pinMode(8, OUTPUT);// initialiseer pin 8 (de 2de led als uitgangs pin).
pinMode(7, OUTPUT);// initialiseer pin 7 (de 3de led als uitgangs pin).
pinMode(6, OUTPUT);// initialiseer pin 6 (de 4de led als uitgangs pin).
pinMode(5, OUTPUT);// initialiseer pin 5 (de 5de led als uitgangs pin).
pinMode(4, OUTPUT);// initialiseer pin 4 (de 6de led als uitgangs pin).
pinMode(3, OUTPUT);// initialiseer pin 3 (de 7de led als uitgangs pin).
pinMode(2, OUTPUT);// initialiseer pin 2 (de 8de led als uitgangs pin).
}

void loop() //Hier begint het programma te lopen
{
digitalWrite(9, HIGH); // zet de led op pen 9 aan
delay(1000); // wacht 1 seconde
digitalWrite(9, LOW); // zet de led op pen 9 uit
delay(1000); // wacht 1 seconde
digitalWrite(8, HIGH); // zet de led op pen 8 aan
delay(1000); // wacht 1 seconde
digitalWrite(8, LOW); // zet de led op pen 8 uit
delay(1000); // wacht 1 seconde
digitalWrite(7, HIGH); // zet de led op pen 7 aan
delay(1000); // wacht 1 seconde
digitalWrite(7, LOW); // zet de led op pen 7 uit
delay(1000); // wacht 1 seconde
digitalWrite(6, HIGH); // zet de led op pen 6 aan
delay(1000); // wacht 1 seconde
digitalWrite(6, LOW); // zet de led op pen 6 uit
delay(1000); // wacht 1 seconde
digitalWrite(5, HIGH); // zet de led op pen 5 aan
delay(1000); // wacht 1 seconde
digitalWrite(5, LOW); // zet de led op pen 5 uit
delay(1000); // wacht 1 seconde
digitalWrite(4, HIGH); // zet de led op pen 4 aan
delay(1000); // wacht 1 seconde
digitalWrite(4, LOW); // zet de led op pen 4 uit
delay(1000); // wacht 1 seconde
digitalWrite(3, HIGH); // zet de led op pen 3 aan
delay(1000); // wacht 1 seconde
digitalWrite(3, LOW); // zet de led op pen 3 uit
delay(1000); // wacht 1 seconde
digitalWrite(2, HIGH); // zet de led op pen 2 aan
delay(1000); // wacht 1 seconde
digitalWrite(2, LOW); // zet de led op pen 2 uit
delay(1000); // wacht 1 seconde
}

Advertisement

Gebruikers-avatar
Berichten: 229
Geregistreerd: 20 Jan 2013, 12:01

Led sequentie aansturing met bitmaskers

Berichtdoor astrofrostbyte » 05 Mei 2013, 06:41

g' morgen,

ff kop koffie erbij en kom op het volgende:
Het idee is een lang array met bits (verdeeld over bytes)
Iedere bit vertegenwoordigt een seconde dat een led aan of uit moet zijn
Iedere LED heeft zo'n bit tijd masker reeks, in het voorbeeld 71 seconde lang
Door nu '1' led aan en '0' led uit in het masker aan te geven kan iedere sequentie gemaakt worden
Code: Alles selecteren
const byte MAXLED   =  8;
const byte MAXMASKS =  9;

unsigned long bitmask = B10000000;
byte          masknr  = 0 ;
unsigned long led[MAXLED][MAXMASKS] = {
//               1           2           3             4           5           6           7
// t=01234567  89012345  67890123  45678901  23456789  0123456  78901234  56789012  345678901
 { B11111111,B11111111,B11110000,B00000000,B11111111,B11110000,B00000000,B00000000,B00000000}, //pin2 led8
 { B11111111,B11111111,B11111111,B11110000,B11111111,B11110000,B00000000,B00000000,B00000000}, //pin3 led7
 { B00000000,B11110000,B00000000,B00000000,B11111111,B11110000,B00000000,B00000000,B00000000}, //
 { B00000000,B11110000,B00000000,B00000000,B11111111,B11110000,B00000000,B00000000,B00000000},
 { B00000000,B00000000,B00000000,B00000000,B11111111,B11110000,B00000000,B00000000,B00000000},
 { B00000000,B00000000,B00000000,B00000000,B11111111,B11110000,B00000000,B00000000,B00000000},
 { B11111111,B11110000,B00000000,B00000000,B11111111,B11110000,B00000000,B00000000,B00000000},
 { B11111111,B11110000,B00000000,B00000000,B11111111,B11110000,B00000000,B00000000,B00000000}
 };

void setup() // begin met setup parameters
{
  pinMode(2, OUTPUT); // init pin 2 (de 8de led als uitgangs pin).
  pinMode(3, OUTPUT); // init pin 3 (de 7de led als uitgangs pin).
  pinMode(4, OUTPUT); // init pin 4 (de 6de led als uitgangs pin).
  pinMode(5, OUTPUT); // init pin 5 (de 5de led als uitgangs pin).
  pinMode(6, OUTPUT); // init pin 6 (de 4de led als uitgangs pin).
  pinMode(7, OUTPUT); // init pin 7 (de 3de led als uitgangs pin).
  pinMode(8, OUTPUT); // init pin 8 (de 2de led als uitgangs pin).
  pinMode(9, OUTPUT); // init pin 9 (de linker led als uitgangs pin).
}

void loop()
{
  //--------------------------------------- Loop alle uitgangen door,Led aan/uit
  for (byte i=0 ; i<MAXLED ; i++)
  { if ( led[i][masknr] && bitmask )
    { digitalWrite(i+2, HIGH);             // zet de led op pen i+2 aan, i=[0..7]
    }
    else
    { digitalWrite(i+2, LOW);              // zet de led op pen i+2 uit
    }
  }

  //---------------------------------------   update het bitmasker
  bitmask >>= 1;                           // schuif bit in bitmasker naar rechts
  if (bitmask == 0)
  {  bitmask = 0x10000000;
     masknr++;
     if (masknr >= MAXMASKS ) masknr = 0;  // if masknr=9 the masknr=0
  }
  //---------------------------------------   
  delay(1000);

}//loop


het compileerd, maar is ongetest.

ps. dingen waar ik tegenaan liep.
Binairy aanduiding B10100100 werkt alleen voor bytes
als bitmask een ulong is gaat het volgende fout bitmask >>= 1, moet bitmask >>= 1UL zijn
Gear: Arduino- Uno,Due,Ethernet,Mega2560 , OLS LogicAnalyser, TDS1002, Rigol DG1022, J-Link EDU, BusPirate

Berichten: 3
Geregistreerd: 04 Mei 2013, 22:25

Re: led aansturing

Berichtdoor overmarsmarinus » 09 Mei 2013, 11:54

geachte heer

Bedankt voor uw reactie hiermee kan ik vooruit.
Alles werkt perfect.


mvgr leo overmars

Gebruikers-avatar
Berichten: 229
Geregistreerd: 20 Jan 2013, 12:01

Re: led aansturing

Berichtdoor astrofrostbyte » 10 Mei 2013, 18:48

mooi, ... laat ff weten of het gelukt is, en zou leuk zijn als je je code even deelt .
groet.
Gear: Arduino- Uno,Due,Ethernet,Mega2560 , OLS LogicAnalyser, TDS1002, Rigol DG1022, J-Link EDU, BusPirate

Berichten: 3
Geregistreerd: 04 Mei 2013, 22:25

Re: led aansturing

Berichtdoor overmarsmarinus » 14 Mei 2013, 20:09

hallo
Alles werkt en de tijd is goed in te stellen en hoeveel leds er tegelijk aan gestuurd zijn.
Hoe kan ik jouw code delen met de rest.
Hoe gaat dit

groet

Gebruikers-avatar
Berichten: 229
Geregistreerd: 20 Jan 2013, 12:01

Re: led aansturing

Berichtdoor astrofrostbyte » 15 Mei 2013, 02:41

De code kan je gewoon hier dumpen in twee "Code" tags [code][/code]
Gear: Arduino- Uno,Due,Ethernet,Mega2560 , OLS LogicAnalyser, TDS1002, Rigol DG1022, J-Link EDU, BusPirate

Gebruikers-avatar
Berichten: 48
Geregistreerd: 08 Mei 2014, 22:47
Woonplaats: Westervoort

Re: led aansturing

Berichtdoor Grunch » 24 Mei 2014, 00:06

Misschien kon het hier mee gegenereerd worden, maar de intervaltijden in de sketch moesten dan wel aangepast worden.

http://members.chello.nl/e.kaatman1/content/ArduinoMB.zip

GrTz Evert

Terug naar Arduino IDE

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 15 gasten