Besturing Filmzaal

Projecten die niet passen in bovenstaande onderwerpen
Berichten: 12
Geregistreerd: 17 Apr 2016, 11:38
Woonplaats: Hoedekenskerke

Besturing Filmzaal

Berichtdoor LeoF » 05 Mei 2016, 16:57

Beste Forumleden,

Als vrijwilliger bij een filmhuis wil ik de huidige besturing gaan realiseren met een Controllino Maxi.
Ik ben fasegewijs begonnen, als eerste met de ventilatie van de digitale projector.

De afkoelperiode is 30 minuten. In mijn beleving is "delay" geen optimale optie. Zijn er een andere mogelijkheden??

cpp code
/*
Filmhuis Cinema Middelburg.
Besturing Ventilatie Digitale Projector.
*/

// Aansluitnummers Controllino Maxi:
// =================================
// Analoge Ingangen:
const int Analoog_01 = A0;
const int Analoog_02 = A1;
const int Analoog_03 = A2;
const int Analoog_04 = A3;
const int Analoog_05 = A4;
const int Analoog_06 = A5;
const int Analoog_07 = A6;
const int Analoog_08 = A7;
const int Analoog_09 = A8;
const int Analoog_10 = A9;
// Relais Uitgangen:
const int Relais_01 = 22;
const int Relais_02 = 23;
const int Relais_03 = 24;
const int Relais_04 = 25;
const int Relais_05 = 26;
const int Relais_06 = 27;
const int Relais_07 = 28;
const int Relais_08 = 29;
const int Relais_09 = 30;
const int Relais_10 = 31;
// Digitale uitgangen:
const int Digitaal_01 = 2;
const int Digitaal_02 = 3;
const int Digitaal_03 = 4;
const int Digitaal_04 = 5;
const int Digitaal_05 = 6;
const int Digitaal_06 = 7;
const int Digitaal_07 = 8;
const int Digitaal_08 = 9;
const int Digitaal_09 = 10;
const int Digitaal_10 = 11;
const int Digitaal_11 = 12;
const int Digitaal_12 = 13;

// Status Analoge ingangen:
int A_status_01 = 0;
int A_status_02 = 0;
int A_status_03 = 0;


int D_status_01 = 0;

void setup()
{

// initialiseer Analoge ingangen als input:
pinMode(Analoog_01, INPUT);
pinMode(Analoog_02, INPUT);
pinMode(Analoog_03, INPUT);

// initialiseer Relais als output:
pinMode(Relais_01, OUTPUT);
pinMode(Relais_02, OUTPUT);

// initialiseer Digitale uitgangen als output:
pinMode(Digitaal_01, OUTPUT);
pinMode(Digitaal_02, OUTPUT);
pinMode(Digitaal_03, OUTPUT);

}

void loop()
{

A_status_01 = digitalRead(Analoog_01);
A_status_02 = digitalRead(Analoog_02);
A_status_03 = digitalRead(Analoog_03);

D_status_01 = digitalRead(Digitaal_01);

if (A_status_01 == HIGH && A_status_02 == LOW)
{
digitalWrite(Relais_01, HIGH);
digitalWrite(Digitaal_01, HIGH);
}

if (A_status_02 == HIGH && A_status_01 == LOW)
{
digitalWrite(Relais_01, LOW);
digitalWrite(Digitaal_01, LOW);
}

if (A_status_03 == HIGH && D_status_01 == HIGH)
{
delay(10000);
digitalWrite(Relais_01, LOW);
digitalWrite(Digitaal_01, LOW);
}
}

Advertisement

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Besturing Filmzaal

Berichtdoor nicoverduin » 05 Mei 2016, 19:40

Ik heb geen idee wat je programma doet. Het commentaar ontbreekt volledig. En daar dit software is welke mogelijk door een ander in de toekomst onderhouden moet worden zou ik met klem willen adviseren om jezelf af te vragen "Stel ik val morgen uit, zou een ander binnen de korste keren weten hoe dit werkt?". Zo niet, wat moet je dan doen om dat wel te bewerkstelligen. Dat gezegd hebbende (en je kan uiteraard denken laat die Verduin maar lullen :)) moet je gaan werken met timers. De Arduino kent een functie "millis()". Dat is een teller die gewoon optelt. Een per milliseconde.
Voorbeeld code:
cpp code
uint32_t timer;            // timer veld
#define DUUR 30000 // laat een timer 30 seconden lopen

void setup() {
//
// opzetten timer
//
timer = 1; // als de timer 0 is dan loopt hij niet
}
void loop(){
//
// kijk of de timer loopt
//
if (timer != 0) {
//
// de timer loopt
//
if (millis() - timer > DUUR) {
//
// De timer is verlopen dus nu kun je doen wat je wilt na 30 seconden
//

// hierna hoeft de timer (in dit voorbeeld) te lopen dus zet hem op 0
//
timer = 0;
}
}
}


Met dit voorbeeld wordt er pak'm beet 10000 keer per seconde gekeken of er wat moet gebeuren. anders doet hij helemaal niets. En je hebt dus geen delay nodig.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

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

Re: Besturing Filmzaal

Berichtdoor shooter » 05 Mei 2016, 20:06

@nico, je weet ik ben een zeikerd.
maar ondanks jouw commentaar snap ik even niet wat je hier geschreven hebt.
de timer is 1 oke dat snap ik en dan vraag je of timer() !0 (en dat is een functie?), dan zie ik millis()-1 > duur en dat snap ik niet helemaal.

@Leo
ik vind jouw manier van declaratie prachtig, het is handiger om define te gebruiken dan heb je geen geheugenplaatsen nodig (die dus opgevraagd moeten worden.) en is je programma ook simpeler van opzet.
als je moet wachten dan zet je de tijd (van millis() ergens vast.(starttijd)
in de loop vraag je dan tellekens (kijken of nico deze ziet geintje) of de huidige millis() - starttijd > dan de duur zo ja dan is de tijd voorbij zo nee ga lekker wat anders doen.
zoals je wel ziet zou een statemachine hier prima passen.
paul deelen
shooter@home.nl

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Besturing Filmzaal

Berichtdoor nicoverduin » 05 Mei 2016, 20:24

shooter schreef:@nico, je weet ik ben een zeikerd.
maar ondanks jouw commentaar snap ik even niet wat je hier geschreven hebt.
de timer is 1 oke dat snap ik en dan vraag je of timer() !0 (en dat is een functie?), dan zie ik millis()-1 > duur en dat snap ik niet helemaal.

@Leo
ik vind jouw manier van declaratie prachtig, het is handiger om define te gebruiken dan heb je geen geheugenplaatsen nodig (die dus opgevraagd moeten worden.) en is je programma ook simpeler van opzet.
als je moet wachten dan zet je de tijd (van millis() ergens vast.(starttijd)
in de loop vraag je dan tellekens (kijken of nico deze ziet geintje) of de huidige millis() - starttijd > dan de duur zo ja dan is de tijd voorbij zo nee ga lekker wat anders doen.
zoals je wel ziet zou een statemachine hier prima passen.

@Paul: Je komt niet eens in de buurt van mijn gezeik :mrgreen: :mrgreen: Maar goed gezien en is aangepast. Thx
@leo: Ik weet niet wat je uiteindelijk van plan bent maar hoewel dit vrijwilligerswerk is, heb je hier evengoed niet te maken met allerlei veiligheidseisen? documentatie eisen? etc
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

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

Re: Besturing Filmzaal

Berichtdoor shooter » 05 Mei 2016, 22:24

en waar zet je timer?
paul deelen
shooter@home.nl

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Besturing Filmzaal

Berichtdoor nicoverduin » 05 Mei 2016, 23:42

Dat kan ik hem pas vertellen als ie vertelt wat dit programma doet. Nu ga ik er geen seconde meer energie in steken... Zonde van de tijd. Dit was een voorbeeld van een timer meer niet. Eerst maar eens wat documentatie zien. Nu kan je er niets mee.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 12
Geregistreerd: 17 Apr 2016, 11:38
Woonplaats: Hoedekenskerke

Re: Besturing Filmzaal

Berichtdoor LeoF » 06 Mei 2016, 07:39

Nico en Paul,
Vriendelijk bedankt.

Met deze timer gaat het lukken.

Berichten: 12
Geregistreerd: 17 Apr 2016, 11:38
Woonplaats: Hoedekenskerke

Re: Besturing Filmzaal

Berichtdoor LeoF » 06 Mei 2016, 14:26

Hallo Nico,

Als ik je raad mag geven,
iets genuanceerder reageren is op zijn minst op zijn plaats.
Je had natuurlijk ook rechtstreeks aan mij om aanvullende info kunnen vragen.
Op deze manier schrik nieuwe forumleden minder snel af.

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

Re: Besturing Filmzaal

Berichtdoor shooter » 06 Mei 2016, 16:51

wat me nu pas opvalt leo je doet een digitalread van een analoog pin (ja ik weet dat het kan en normaal is, maar het ziet natuurlijk wel gek uit.
wel mooi die standaard aanhouden, daar kun je zelfs een lib van maken en die aanroepen.
dan hoef je dat niet telkens te schrijven.

over die timer kun je lezen bij blink without delay (dat is bij iedereen zo een beetje les 2 want les 1 is blink.
als je help drukt dan krijg je de site arduino.cc en daar staan dan weer een hele hoop leerdingen (engels dat wel)
paul deelen
shooter@home.nl

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Besturing Filmzaal

Berichtdoor nicoverduin » 06 Mei 2016, 17:48

Eerlijk gezegd vind ik die naamgeving juist het tegenovergestelde. Ik zou (en zo gebruik ik het dan ook) een Pin een explicite naam geven. Digital_xx zegt eigenlijk niets. Je weet nog steeds niet waarvoor deze gebruikt wordt. Komt bij mij over zoals ze in de engineering nog veel gebruiken met uitgebreide IO lijsten waarin je dan weer de vertaling moet zoeken van een pin. Het is tegenwoordig niet meer nodig als je met een taal werkt die meer toelaat. Je kan immers wat meer dan een gemiddelde PLC die een eigen "beperkende" besturingssysteem heeft.
Maar goed ieder zijn meuk.
Ik ben overigens wel nieuwsgierig naar je ervaringen met die controllino. Ik had bijna een klus die ik met zo'n ding wilde doen. Ziet er voor de rest wel grappig uit. En de prijs is best ok. Al dacht die klant er anders over.... Die wilde voor een dubbeltje op de eerste rang zitten. En kocht maar iets anders in China.... That's life.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Volgende

Terug naar Overige projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 29 gasten