Newbie vraagt: wat doe ik fout?

algemene C code
Berichten: 1
Geregistreerd: 03 Jul 2013, 21:43

Newbie vraagt: wat doe ik fout?

Berichtdoor Hamradio » 03 Jul 2013, 21:52

Ik wil een relais schakelen op pin 2.
Ik gebruik een RFID kaartlezer en wil het volgende bewerkstelligen:
Als een bepaalde tag wordt gelezen, pin 2 hoog. Wordt dezelfde tag nogmaals gelezen, pin 2 laag.
Alles werkt wel, maar dat wisselen van hoog naar laag niet.
Ik dacht het alsvolgt op te lossen:

if (relay == HIGH)
{
digitalWrite(relay, LOW);
}
if (relay == LOW)
{
digitalWrite(relay, HIGH);

De variabele relay is wel goed geïnitieerd en werkt wel, alleen het wisselen van hoog naar laag (en omgekeerd) niet.

Bedoeling is om een alarm aan/uit te zetten.

Kortom wat doe ik fout?

Advertisement

Gebruikers-avatar
Berichten: 700
Geregistreerd: 05 Mrt 2012, 21:56
Woonplaats: Appingedam

Re: Newbie vraagt: wat doe ik fout?

Berichtdoor pjh » 03 Jul 2013, 22:35

met digitalWrite(relay, LOW);
maak je de variabele 'relay' niet LOW.

Code: Alles selecteren
if (relay == HIGH)
{
digitalWrite(relay, LOW);
relay = LOW;
}
if (relay == LOW)
{
digitalWrite(relay, HIGH);
relay = HIGH;

Gebruikers-avatar
Berichten: 188
Geregistreerd: 23 Dec 2011, 00:12

Re: Newbie vraagt: wat doe ik fout?

Berichtdoor Duality » 12 Jul 2013, 15:50

besides als relay een pin is dan is het of 1 of 0 dus pin 1 of 0 en dat is serieel ?

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

Re: Newbie vraagt: wat doe ik fout?

Berichtdoor nicoverduin » 17 Aug 2013, 08:57

pjh schreef:met digitalWrite(relay, LOW);
maak je de variabele 'relay' niet LOW.

Code: Alles selecteren
if (relay == HIGH)
{
digitalWrite(relay, LOW);
relay = LOW;
}
if (relay == LOW)
{
digitalWrite(relay, HIGH);
relay = HIGH;

Ik weet niet of dit inmiddels is opgelost maar in deze vorm krijg je onvoorspelbare situaties.

Om het relay om te gooien kun je gewoon het volgende gebruiken:
Code: Alles selecteren
digitalWrite(relay, !digitalRead(relay));


Daarnaast zou ik onderscheid maken tussen variabelen in je programma en pinnen etc.

bijvoorbeeld:
pinRelay voor de pin
relay voor de variabele als je die echt nodig hebt

Zelf zou ik voor harde definities die toch niet veranderen zoals de pin van de relay het volgende gebruiken
Code: Alles selecteren
#define PINRELAY 3    // relay op pin 3

unsigned int relay; //  variabele relay
//
// omgooien relais
//
digitalWrite(PINRELAY, !digitalRead(PINRELAY));

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

Terug naar C code

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 16 gasten