Uitgang puls met IR code zolang als ingedrukt FFFFFFFF

algemene C code
Gebruikers-avatar
Berichten: 4836
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Uitgang puls met IR code zolang als ingedrukt FFFFFFFF

Berichtdoor nicoverduin » 10 Okt 2017, 09:16

Ik zou me niet zo druk maken over de snelheid van binnenkomen. Dat spul is zo traag als de nete:)
Docent HBO Software Engineering, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Advertisement

Berichten: 5
Geregistreerd: 08 Okt 2017, 22:34

Re: Uitgang puls met IR code zolang als ingedrukt FFFFFFFF

Berichtdoor Runu88 » 10 Okt 2017, 19:53

@nicoverduin
@koepel

De werking is als volgt:

op het moment dat ik een knop indruk op de ir remote moet een uitgang hoog worden.
zodra ik deze knop loslaat moet de uitgang meteen weer laag worden.
ik gebruik 8 knoppen op de ir remote die alle 8 een aparte uitgang aansturen.
knop 1 = uitgang 1
knop 2 = uitgang 2
enz enz.

om de uitgang hoog te zetten bij een bepaalde Ir decoder value waarde lukt me wel.
daarvoor gebruik ik
Code: Alles selecteren
 if (results.value == 0x1FE807F)
    {
      digitalWrite(out8, HIGH);
}


op het moment dat de code 0xFFFFFFFF
hoeft arduino eigenlijk niets te doen omdat de uitgang dan al HIGH is gezet door de waarde die word ontvangen vòòr 0xFFFFFFF.

de Ir remote stuurt altijde de HEX waarde 0x1FE807F voordat hij daarna een constante stream van 0xFFFFFFF stuurt.

eigenlijk moet er een timer gaan lopen op het moment dat hij een waarde ontvangt. dat mag bij 0x1FE807F of 0xFFFFFFF zijn. Elke keer als hij een waarde ontvangen moet de timer opnieuw beginnen te lopen. zodat de timer niet afloopt op het moment dat ik de knop ingedrukt blijf houden. zorda ik dus de ir knop loslaat moet de timer gaan lopen

aan het einde van de timer moeten de uitgangen weer laag gezet worden.


de arduino ontvangt ongeveer 16-18 waardes per seconde als ik de ir remote ingedrukt houd

Code: Alles selecteren
 if (irrecv.decode(&results))
    {
      value = results.value;     // The received value
      irrecv.resume();               // Get ready for next value to be received

      Serial.println(value, HEX);
      previousMillis = millis();    // make a timestamp of this event.
      timerActive = true;         // activate the software timer.


timeractive = true; klopt het dat hiermee de tier begint te lopen ?


timeractive = false; klopt het dat dit het einde van de timer is ?
en kan ik hier dan een actie aan koppelen ?


dus bijvoorbeeld:
Code: Alles selecteren
if
(timerActive = false;)
    {
      digitalWrite(out2, LOW);
      digitalWrite(out3, LOW);
      digitalWrite(out4, LOW);
      digitalWrite(out5, LOW);
      digitalWrite(out6, LOW);
      digitalWrite(out7, LOW);
      digitalWrite(out8, LOW);
      digitalWrite(out9, LOW);
    }


ik hoor graag van jullie :D

Gebruikers-avatar
Berichten: 1774
Geregistreerd: 06 Aug 2016, 01:03

Re: Uitgang puls met IR code zolang als ingedrukt FFFFFFFF

Berichtdoor Koepel » 10 Okt 2017, 21:32

Het (juiste) gebruik van millis() gaat op een bepaalde manier. Daar help ik je wel mee.

Je hebt een belangrijk deel weggelaten: drie regels commentaar.
Code: Alles selecteren
  // ----------------------------------------
  // Get data from the remote control
  // ----------------------------------------
Die regels commentaar zijn belangrijker dan de code die er na komt.


Het deel van de timer ziet er zo uit:
Code: Alles selecteren
  // ----------------------------------------
  // Check if nothing was received for a while.
  // ----------------------------------------

  if( timerActive)    // check if the software timer is active
  {
    if( millis() - previousMillis >= REMOTE_TIMEOUT)
    {
      timerActive = false;     // stop this software timer.
     
      // Nothing was received, and the timer has finished.
      // That means that the button was released.
      // Set all outputs low.
      digitalWrite(out2, LOW);
      ...
    }
  }

Je hebt natuurlijk ook nog een #define REMOTE_TIMEOUT 200 nodig, of 500 ms, of iets anders. Ik weet niet hoe snel je kunt reageren.

Wat als er "1FE20DF", "10E03FC", "FFFFFFFF", "FFFFFFFF", "FFFFFFFF" binnen komt ? Dus er wordt heel snel overgeschakeld van de ene naar de andere knop.

Vorige

Terug naar C code

Wie is er online?

Gebruikers in dit forum: Google [Bot] en 2 gasten