Blinde Vlek?

IDE gerelateerde berichten
Berichten: 47
Geregistreerd: 29 Sep 2019, 18:42
Woonplaats: Vlijmen

Blinde Vlek?

Berichtdoor Dorus1404 » 20 Sep 2021, 11:33

Was een tijd gestopt met sketches maken. Nu krijg ik zelfs een eenvoudig sketchje niet meer werkend.
Ik zie niet wat ik fout doe. Blinde vlek?

int pinin = 5; // Krijgt 5 volt van schemerschakeling bij invallende duisternis
int pinuit = 6; // activeert al of niet een relaisschakeling

void setup()
{
pinMode(5, INPUT);
pinMode(6, OUTPUT);
digitalWrite(pinuit, LOW);
}

void loop()
{
digitalRead(pinin);

if (pinin == LOW) // Bij daglicht
digitalWrite(pinuit, LOW); // Relais wordt niet geactiveerd
else
digitalWrite(pinuit, HIGH); // Relais gaat aan


Ik vind het vreemd dat de spanning op "pinuit" niet verandert, ongeacht of "pinin" hoog of laag is.

Wie maakt mij weer "ziend"?

Advertisement

Berichten: 68
Geregistreerd: 04 Sep 2021, 08:31

Re: Blinde Vlek?

Berichtdoor RobGood » 20 Sep 2021, 13:20

Hele berg accolades {} vergeten misschien?

Berichten: 47
Geregistreerd: 29 Sep 2019, 18:42
Woonplaats: Vlijmen

Re: Blinde Vlek?

Berichtdoor Dorus1404 » 20 Sep 2021, 17:19

Ja, die tweede accolade van de loop staat wel in het programma, maar die was hier toevallig niet mee gekopieerd. Welke andere berg bedoel je?

Gebruikers-avatar
Berichten: 631
Geregistreerd: 15 Nov 2015, 11:54

Re: Blinde Vlek?

Berichtdoor Gij Kieken » 20 Sep 2021, 19:22

De accolades van de loop (tikfoutje) maar voor de duidelijkheid ook die van if constructie.
Als je die niet plaatst krijg je soms een vertekend beeld omdat de eerste regel in aanmerking komt.
De hint kwam al van RobGood.
Maar gebruik je input-pull_up op de ingang(software oftewel met een weerstandje 10K ofzo,steekt niet al te nauw) ,indien niet zweeft de ingang maar wat.

Berichten: 180
Geregistreerd: 26 Aug 2015, 11:57

Re: Blinde Vlek?

Berichtdoor Frits1956 » 21 Sep 2021, 00:45

In dergelijke gevallen schrijf ik elke verwachtte waarde naar Serial.print(); met de werkelijke waarde. Verschillen zijn gelijk duidelijk.
Zo zie ik dat pinin de waarde 5 heeft. Dat klopt ook wel want in regel 1 geef je die waarde eraan. Je leest pin 5 maar kent de waarde nergens aan toe.
Verander regel 13 in bijvoorbeeld:
byte Gelezenwaarde = digitalRead(pinin);

en regel 15 in:
if (Gelezenwaarde == LOW) //Bij daglicht

dan verwacht ik betere resultaten.

Code: Alles selecteren
int pinin = 5; // Krijgt 5 volt van schemerschakeling bij invallende duisternis
int pinuit = 6; // activeert al of niet een relaisschakeling

void setup()
{ Serial.begin(9600);
  pinMode(5, INPUT);
  pinMode(6, OUTPUT);
  digitalWrite(pinuit, LOW);
}

void loop()
{
  byte Gelezenwaarde = digitalRead(pinin);

  if (Gelezenwaarde == LOW) // Bij daglicht
    digitalWrite(pinuit, LOW); // Relais wordt niet geactiveerd
  else
    digitalWrite(pinuit, HIGH); // Relais gaat aan
  Serial.println(Gelezenwaarde);
}

Berichten: 47
Geregistreerd: 29 Sep 2019, 18:42
Woonplaats: Vlijmen

Re: Blinde Vlek?

Berichtdoor Dorus1404 » 21 Sep 2021, 02:20

Inderdaad, dit werkt goed.

Erg bedankt voor de hulp en de les.

Terug naar Arduino IDE

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 9 gasten