Arduino camera en flitser aansturing

Projecten die niet passen in bovenstaande onderwerpen
Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Arduino camera en flitser aansturing

Berichtdoor nicoverduin » 06 Jan 2015, 23:57

shooter schreef:nou dat vindt ik wel tegenvallen, want de foto is maar een wirwar en echt geen hifi.

Zelfs dat niet....
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Advertisement

Berichten: 9
Geregistreerd: 14 Dec 2014, 21:42

Re: Arduino camera en flitser aansturing

Berichtdoor kiezel » 25 Jan 2015, 22:07

Goedenavond, de afgelopen tijd heel veel zitten puzzelen en uitzoeken, hieronder het tussentijdse resultaat. Nog niet optimaal, maar het begin is er: led1 aan, led 2 aan, led 2 uit, led 1 uit. En met parameters aan/uitgezet, zodat ik later met een menu een array kan vullen dat wordt uitgelezen.

Probleempje met de code is dat hij wel eens een loop overslaat, dus alleen led1 gaat branden. En het duurt erg lang voordat de sequence van voor af aan begint. Er zitten vast en zeker denkfoutjes in, maar ik zie ze niet :shock:

Als iemand hier wat aanwijzingen of verbetervoorstellen voor heeft, dan zou ik dat geweldig vinden!

Groet, Kiezel 8-)

Code: Alles selecteren
// variabelen
int camDelayBefore = 1000; // de tijd voordat de camera(led) aan gaat
int flashDelay = 1000; // de tijd voordat de flitser(led) aan gaat
int flashTime = 2000; // de brandtijd van de flitser(led)
int camDelayAfter = 1000; // de tijd na het uitgaan van de flitser(led) voordat de camera(led) uitgaat
int loopTime = (flashDelay + flashTime + camDelayAfter);
// pinnen benoemen
const int cameraPin = 4;  // stuurt camera aan
const int flashPin = 5; // stuurt flitser aan

void setup()
{
// pinnen toewijzen aan variabelen
pinMode(cameraPin, OUTPUT);
pinMode(flashPin, OUTPUT);
}
void loop()
{
   unsigned long runTime = millis(); // actuele tijd
   unsigned long previousTime = millis(); // verschiltijd
//   
   
       if (runTime==camDelayBefore)
      {
      previousTime = runTime; // timer updaten
      digitalWrite(cameraPin, HIGH);   // zet the cameraPin aan
      }
   if (runTime==(camDelayBefore+flashDelay))
      {
      previousTime = runTime; // timer updaten
      digitalWrite(flashPin, HIGH); // zet de flashPin aan
      }
   if (runTime==(flashDelay+flashTime))
      {
      previousTime = runTime; //timer updaten
      digitalWrite(flashPin, LOW); // zet de flashPin uit
      }
   if (runTime==(loopTime))
      {
      previousTime = runTime; // timer updaten
      digitalWrite(cameraPin, LOW); // zet de cameraPin uit
delay(2000); // wachten
      }
}

Gebruikers-avatar
Berichten: 270
Geregistreerd: 30 Dec 2012, 11:42

Re: Arduino camera en flitser aansturing

Berichtdoor Rudi » 25 Jan 2015, 23:06

Leer de voorbeeldsketch BlinkWithoutDelay te begrijpen en dan snap je wat er hier verkeerd gaat.
Arduinows!
Why do computer programmers confuse Halloween with Christmas? Because Oct 31 = Dec 25
I got 01100011 problems but a bit ain't 00000001

Berichten: 9
Geregistreerd: 14 Dec 2014, 21:42

Re: Arduino camera en flitser aansturing

Berichtdoor kiezel » 25 Jan 2015, 23:51

Hi Rudi, dank dat je de moeite hebt genomen om te reageren!
Afgelopen tijd heb ik van alles geprobeerd, inclusief variaties op het thema "blinkwithoutdelay". Aangezien ik niet op leraren, collega's of medestudenten kan terugvallen probeer ik wat hulp via het forum te krijgen. Een in mijn ogen wat algemene verwijzing helpt mij niet zoveel verder. Zou je wat specifieker kunnen zijn in het aanduiden waar mijn denkfout zit?
Alvast bedankt!
Groet, Kiezel 8-)

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

Re: Arduino camera en flitser aansturing

Berichtdoor nicoverduin » 26 Jan 2015, 01:00

a) ik zou altijd met een timer werken omdat je daarmee meer flexibiliteit krijgt om andere code gewoon door te laten lopen. "Pseudo parallel verwerking"
b) Je gaat er altijd uit dat je tests precies op dat moment de juiste waarde hebben. Maar wat doe je als je al voorbij dat moment bent ?
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

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

Re: Arduino camera en flitser aansturing

Berichtdoor shooter » 26 Jan 2015, 13:16

de delay eruit halen en de runtime updaten.
paul deelen
shooter@home.nl

Berichten: 9
Geregistreerd: 14 Dec 2014, 21:42

Re: Arduino camera en flitser aansturing

Berichtdoor kiezel » 27 Jan 2015, 10:16

Tks Nico, Shooter, gaan we uitproberen. Resultaten zal ik hier posten.
Groet, Kiezel 8-)

Berichten: 9
Geregistreerd: 14 Dec 2014, 21:42

Re: Arduino camera en flitser aansturing

Berichtdoor kiezel » 31 Jan 2015, 14:31

Er was weer even tijd voor wat puzzelwerk. Doorgevoerde wijzigingen:
- >= ipv == bij het vergelijken van de waarden in de vergelijkingen beviel niet zo goed, daar moet ik nog eens naar kijken. Vooralsnog doet de == het aardig.
- timer update bij elke stap.

Dit lijkt te werken.
Feedback is welkom!

Code: Alles selecteren
// variabelen
int solOpen1 = 1000;
int solTime = 500;
int camDelayBefore = 1000;
int flashDelay = 1000;
int flashTime = 2000;
int camDelayAfter = 1000;
int solenoidTime = (solOpen1 + solTime);
int loopTime = (solenoidTime + camDelayBefore + flashDelay + flashTime + camDelayAfter);
int waitTime = 100;
// pinnen benoemen
const int cameraPin = 4;  // stuurt camera aan
const int flashPin = 5; // stuurt flitser aan
const int solenoid1Pin = 26; //stuurt solenoid 1 aan

void setup()
{
// pinnen toewijzen aan variabelen
pinMode(cameraPin, OUTPUT);
pinMode(flashPin, OUTPUT);
pinMode(solenoid1Pin, OUTPUT);
}
void loop()
{
   unsigned long runTime = millis(); // actuele tijd
   unsigned long previousTime = millis(); // verschiltijd
//   
   previousTime = runTime; // timer updaten
   if (runTime==solOpen1)
      {
      previousTime = runTime; // timer updaten
      digitalWrite(solenoid1Pin, HIGH);   // zet de solenoid1Pin aan
      }
   if (runTime == (solOpen1+solTime))
      {
      previousTime = runTime; // timer updaten
      digitalWrite(solenoid1Pin, LOW);   // zet de solenoid1Pin uit
      }
    if (runTime==(solenoidTime + camDelayBefore))
      {
      previousTime = runTime; // timer updaten
      digitalWrite(cameraPin, HIGH);   // zet de cameraPin aan
      }
   if (runTime==(solenoidTime+camDelayBefore+flashDelay))
      {
      previousTime = runTime; // timer updaten
      digitalWrite(flashPin, HIGH); // zet de flashPin aan
      }
   if (runTime==(solenoidTime+camDelayBefore+flashDelay+flashTime))
      {
      previousTime = runTime; //timer updaten
      digitalWrite(flashPin, LOW); // zet de flashPin uit
      }
   if (runTime==(solenoidTime+camDelayBefore+flashDelay+flashTime+camDelayAfter))
      {
      previousTime = runTime; // timer updaten
      digitalWrite(cameraPin, LOW); // zet de cameraPin uit
      }
   if (runTime >= (loopTime+waitTime)) // wachten tot de loop kan herstarten
      {
      previousTime = runTime; // timer updaten
      //doorgaan
      }
}

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

Re: Arduino camera en flitser aansturing

Berichtdoor nicoverduin » 31 Jan 2015, 16:22

tip1:
Nu het beschikbaar is, gebruik liever de [ code2=cpp ] en [ /code2 ] (zonder de spaties). Dat maakt alles een stuk prettiger om te lezen:
cpp code
// variabelen
int solOpen1 = 1000;
int solTime = 500;
int camDelayBefore = 1000;
int flashDelay = 1000;
int flashTime = 2000;
int camDelayAfter = 1000;
int solenoidTime = (solOpen1 + solTime);
int loopTime = (solenoidTime + camDelayBefore + flashDelay + flashTime
+ camDelayAfter);
int waitTime = 100;
// pinnen benoemen
const int cameraPin = 4; // stuurt camera aan
const int flashPin = 5; // stuurt flitser aan
const int solenoid1Pin = 26; //stuurt solenoid 1 aan

void setup() {
// pinnen toewijzen aan variabelen
pinMode(cameraPin, OUTPUT);
pinMode(flashPin, OUTPUT);
pinMode(solenoid1Pin, OUTPUT);
}
void loop() {
unsigned long runTime = millis(); // actuele tijd
unsigned long previousTime = millis(); // verschiltijd
//
previousTime = runTime; // timer updaten
if (runTime == solOpen1) {
previousTime = runTime; // timer updaten
digitalWrite(solenoid1Pin, HIGH); // zet de solenoid1Pin aan
}
if (runTime == (solOpen1 + solTime)) {
previousTime = runTime; // timer updaten
digitalWrite(solenoid1Pin, LOW); // zet de solenoid1Pin uit
}
if (runTime == (solenoidTime + camDelayBefore)) {
previousTime = runTime; // timer updaten
digitalWrite(cameraPin, HIGH); // zet de cameraPin aan
}
if (runTime == (solenoidTime + camDelayBefore + flashDelay)) {
previousTime = runTime; // timer updaten
digitalWrite(flashPin, HIGH); // zet de flashPin aan
}
if (runTime == (solenoidTime + camDelayBefore + flashDelay + flashTime)) {
previousTime = runTime; //timer updaten
digitalWrite(flashPin, LOW); // zet de flashPin uit
}
if (runTime
== (solenoidTime + camDelayBefore + flashDelay + flashTime
+ camDelayAfter)) {
previousTime = runTime; // timer updaten
digitalWrite(cameraPin, LOW); // zet de cameraPin uit
}
if (runTime >= (loopTime + waitTime)) // wachten tot de loop kan herstarten
{
previousTime = runTime; // timer updaten
//doorgaan
}
}
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

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

Re: Arduino camera en flitser aansturing

Berichtdoor nicoverduin » 31 Jan 2015, 16:27

Tip 2:
Je gaat er vanuit dat je testen op een exact tijdstip voorkomen. bijv:
cpp code
if (runTime == (solenoidTime + camDelayBefore + flashDelay + flashTime))

En als runtime er nu overheen is gegaan?

als ik je code goed begrijp heb je een volgorde van stappen die je wilt doorlopen. Wat meestal handiger kan zijn is eerst ff een tijdlijntje te trekken wat er moet gebeuren. (kost een velletje papier)
Op basis van die tijdlijn kun je de verschillende stappen identificeren en via een truukje je code een stuk overzichtelijker maken. Ik heb dat al een eerder uitgelegd. Moet ff kijken waar dat staat :)
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

VorigeVolgende

Terug naar Overige projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 8 gasten