Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie
Toon posts:

Arduino project LCD keyshield + Sensoren

Pagina: 1
Acties:

  • robin1990
  • Registratie: maart 2011
  • Laatst online: 25-09-2015
Hallo Allen,

Voor een project ben ik bezig om twee HC-SR04 sensoren aan te sluiten op een LCD Keyshield. De Sensoren moeten los van elkaar kunnen werken. De sensoren komen in twee verschillende laden en wanneer er 1 van de twee laden wordt open gestrokken komt er een tekst te staan. Op deze manier:

Laatje 1 open -> activeert sensor -> display: Tekst 1
Laatje 1 dicht -> display: Standaard tekst
Laatje 2 open -> activeert sensor -> display: Tekst 2
Laatje 2 dicht -> display: standaard tekst

Ik ben al ver gekomen maar ik krijg de sensoren niet los van elkaar werkend. Wanner ik voor allebei iets houd gaat het goed maar zodra ik bij sensor 2 iets doe blijft de tekst van sensor 1 staan.

Hierbij de code tot nu toe:

http://pastebin.com/10Yh9N2v

Ik hoop dat iemand me hier bij kan helpen!

  • MdBruin
  • Registratie: maart 2011
  • Laatst online: 14:51
Ik ben nog een redelijke beginner maar snap eigenlijk niet waarom je op deze manier if statements gebruikt om beide lades uit te laten lezen.
Je zou dit makkelijk gewoon achter elkaar kunnen laten uitvoeren. Je krijgt dan alleen een probleem als beide lades geopend zijn.

Het is niet echt een kritisch script waarbij de processor altijd beschikbaar moet zijn (zover ik nu kan bepalen ;) ), daarom zo je gewoon gebruik kunnen maken van een delay(100) i.p.v. de millis() functie.

Door middel van een if eerste la, en een else if tweede la, en uiteindelijk een else om het scherm weer naar standaard te zetten zou je al een stuk op de juiste weg moeten zijn. Wel houd je hierdoor het probleem met als de 2 lades open zijn.
Om dit op te kunnen vangen zou je ook kunnen kijken naar een case structuur waarbij je alle opties kunt aangeven met welk script er vervolgens moet worden uitgevoerd.

  • lordprimoz
  • Registratie: november 2013
  • Laatst online: 14:46
Wat ik in je code kan zien is dat je eerste if statement altijd true is. (millis - een getal >= 0) is in jouw geval altijd waar.

ik zou niet werken met delays, gezien ik niet weet of de library die je gebruikt ook timers heeft. ik zou het dan zo aanpakken:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void setup(){
    lastSensorTime = millis()
}

void loop(){

    if (millis()-lastSensorTime>=100) {
        lastSensorTime = millis()

   //zet de tekst op je scherm terug op standaard tekst

   //lees hier je afstand voor sensor 1 uit
   //lees hier je afstand voor sensor 2 uit
   if(afstand 1 > 100 && afstand 2 > 100) {
       //beide laden open
   } else if( afstand 1 > 100){
      //lade 1 open
   } else if(afstand 2 > 100){
      //lade 2 open
   }
}


Apple iPhone SE (2020) Microsoft Xbox Series X LG CX Google Pixel 4a CES 2020 Samsung Galaxy S20 4G Sony PlayStation 5 Nintendo Switch Lite

'14 '15 '16 '17 2018

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2020 Hosting door True