VRI wachttijd voorspeller met waarschuwingstekst

IDE gerelateerde berichten
Berichten: 2
Geregistreerd: 01 Aug 2019, 07:08

VRI wachttijd voorspeller met waarschuwingstekst

Berichtdoor mbo405 » 01 Aug 2019, 07:29

Goedemorgen,

voor een collega ben ik bezig met een VRI lantaarn met afteller via een Arduino aan te sturen. Ik heb nogal wat tijd verloren door een draadbreuk in draad voor de voeding van het relaisboard, maar inmiddels heb ik de hele hardware af en werkt het aftellen, maar voor de verdere programmering kom ik simpelweg tijd te kort, omdat ik het morgen zou afleveren.

De opstelling

VRI wachttijd voorspeller met waarschuwingstekst "wacht BUS"
https://www.verkeerslantaarn.nl/verkeer ... se-module/
42 volt voeding
Arduino Uno (kloon)
Relais board 8x

De wachttijd voorspeller word binair aangestuurd via draad/relais LED1t/m5
De tekst "wacht bus" word aangestuurd door LEDK / relais 6
Voeding is 42V, vandaar de relais aansturing

Programma wat continu werkt, is reeds paar uur getest

const byte led1 = 5;
const byte led2 = 6;
const byte led3 = 7;
const byte led4 = 8;
const byte led5 = 9;
const byte ledK = 10;
byte count = 0;

void setup()
{
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(ledK, OUTPUT);
}

void loop()
{
digitalWrite(ledK, HIGH); // sets the digital pin 13 on
delay(150); // waits for a second
digitalWrite(ledK, LOW); // sets the digital pin 13 off
delay(300); // waits for a second

digitalWrite(led5, !bitRead(count,4));
digitalWrite(led4, !bitRead(count,3));
digitalWrite(led3, !bitRead(count,2));
digitalWrite(led2, !bitRead(count,1));
digitalWrite(led1, !bitRead(count,0));
count=count+1;
delay(250);
}

Screenshot_20190801-073413.jpg
De afteller
Screenshot_20190801-073413.jpg (23.46 KiB) 4817 keer bekeken


De Vraag
1. Het programma draait continu, hoe kan ik na elke ronde een wacht of stopmoment inbouwen?

En heel brutaal, want dan vraag ik eigenlijk om het gehele programma te maken :oops: :
2. Ik heb een schakelaar 2 standen en een drukknop. Die ik wil inzetten om te schakelen tussen continu en op aanvraag programma, waarbij de aanvraag komt via een druk op de knop en vervolgens drukken wat je wil, maar het aftellen moet eerst voltooid worden.

Alvast bedankt,
Freek

Advertisement

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

Re: VRI wachttijd voorspeller met waarschuwingstekst

Berichtdoor shooter » 02 Aug 2019, 11:39

de count loopt vol na 6 bits dat is dus als count 32 is of zo iets
dus als je de vraag stelt
if (count >32){
count=0;
delay (1000);
}
dan springt de teller terug.

en voor je drukknop kun je hetzelfde doen
while (!drukknop){}
dan blijft het programma daar dus staan.
je kunt hier natuurlijk een timer inzetten dat je demo vanzelf gaat draaien. Dat is een groot nadeel van delay dat je proces stopt, dus als dit draait dan kijk eens gauw hoe een timer werkt.
paul deelen
shooter@home.nl

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

Re: VRI wachttijd voorspeller met waarschuwingstekst

Berichtdoor shooter » 02 Aug 2019, 16:39

dan gaat er nog iets niet goed met de drukknop, dat komt omdat je delay gebruikt en nog niet weet hoe je iets kunt interupten en ookm nog niet weet hoe een timer werktdus je hebt nog heel wat voor de boeg.
Je zult ook nog iets moeten gaan doen aan de voorspeller want dat is niet variabel.
paul deelen
shooter@home.nl

Berichten: 2
Geregistreerd: 01 Aug 2019, 07:08

Re: VRI wachttijd voorspeller met waarschuwingstekst

Berichtdoor mbo405 » 04 Aug 2019, 23:27

Goedenavond,

weer even zitten rommelen. Ik heb het programma uitgebreid en met de tip ontdekt dat het stukje moest worden uitgebreid met een (count >31) en (count =32), zodat alle Leds uitzien als de cyclus rond is.

Ik heb ook met de drukknop geprobeerd, maar kwam nog niet verder dan dat alles aan of juist uit bleef, waar zou je de while (!drukknop){} plaatsen?


Bedankt voor de tip,
Freek

Tot nu toe heb ik:

const int drukknop = 2;
const byte led1 = 4;
const byte led2 = 5;
const byte led3 = 6;
const byte led4 = 7;
const byte led5 = 8;
const byte ledK = 10;
byte count = 0;


void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(ledK, OUTPUT);
pinMode(drukknop, INPUT);

}

void loop()
{

digitalWrite(ledK, HIGH); // sets the digital pin 13 on
delay(150); // waits for a second
digitalWrite(ledK, LOW); // sets the digital pin 13 off
delay(300); // waits for a second
digitalWrite(led5, !bitRead(count,4));
digitalWrite(led4, !bitRead(count,3));
digitalWrite(led3, !bitRead(count,2));
digitalWrite(led2, !bitRead(count,1));
digitalWrite(led1, !bitRead(count,0));
count=count+1;
delay(500);
if (count >31){
delay (10000);
count=32;
digitalWrite(ledK, LOW); // sets the digital pin 13 off
count=-1;

}

}

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

Re: VRI wachttijd voorspeller met waarschuwingstekst

Berichtdoor shooter » 05 Aug 2019, 11:05

zet die while maar eens aan het begin van de loop.
dan gebeurt er dus niks tot je op de knop drukt.
lees ook iets over de timer dat helpt straks erg als je de delay eruithaalt.
paul deelen
shooter@home.nl

Terug naar Arduino IDE

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 12 gasten