If -else werkt niet??

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

If -else werkt niet??

Berichtdoor Dorus1404 » 05 Okt 2019, 13:22

Ik probeer een simpele If else vergelijking met wisselende waardes op pin 11 en 12, maar ik krijg het niet werkend. Ik moet iets over het hoofd zien, maar ik weet niet wat.

Code: Alles selecteren

int pinin = 12;
int pinuit = 11;

void setup() {

pinMode (11, OUTPUT);
 
 }
void loop() {

digitalRead (pinin);
if (pinin == LOW) 

   digitalWrite (pinuit, LOW); // Pin 11 wordt 0 volt

else if (pinin == HIGH) 

    digitalWrite (pinuit, HIGH);  // Pin 11 wordt 5 volt
}}
   

Advertisement

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

Re: If -else werkt niet??

Berichtdoor Dorus1404 » 05 Okt 2019, 15:08

Het probleem is dat het high of low maken van pin 12 geen enkel effect heeft op pin 11.

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

Re: If -else werkt niet??

Berichtdoor Gij Kieken » 05 Okt 2019, 16:24

Je hebt een variabele tekort voor digitalRead
https://www.arduino.cc/reference/en/lan ... gitalread/

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

Re: If -else werkt niet??

Berichtdoor Dorus1404 » 05 Okt 2019, 18:29

Bedoelde jij dit? Maar pin 11 blijf high, of pin 12 nu 0 of 5 volt krijgt. Het maakt geen verschil.

int pinin = 12;
int pinuit = 11;
int val = 0;

void setup() {

pinMode (11, OUTPUT);

}
void loop() {

val = digitalRead(pinin);
if (val = LOW)
{
digitalWrite (pinuit, LOW); // Pin 11 wordt 0 volt
}
else if (val = HIGH)

{
digitalWrite (pinuit, HIGH); // Pin 11 wordt 5 volt
}}

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

Re: If -else werkt niet??

Berichtdoor Koepel » 05 Okt 2019, 19:44


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

Re: If -else werkt niet??

Berichtdoor Gij Kieken » 05 Okt 2019, 22:59

Sorry Koepel had het niet gezien.
@Dorus, haja inderdaad Koepel zijn antwoord nogmaals lezen.
Het is niet Gelijk wat je schrijft (beetje cryptisch omschreven)

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

Re: If -else werkt niet??

Berichtdoor Dorus1404 » 06 Okt 2019, 04:03

Met het antwoord was niks mis. Heb het nu al minstens 5 keer gelezen, maar in die voorbeelden komt de if - else niet voor.
Wat ik wil is heel simpel: Pin 11 (output) is low, pin 12 (input) is low. Als pin 12 5 volt krijgt moet pin 11 ook high worden, anders blijft pin 11 low. Ik kom echt niet verder dan deze. Pin 11 blijft 5 volt ongeacht 5 of 0 volt op pin 12. Ik begin me zo langzamerhand een zwakbegaafde te voelen
Kan iemand deze simpele sketch zo aanpassen dat het werkt?

int pinin = 12;
int pinuit = 11;
int val = 0;

void setup() {

pinMode (11, OUTPUT);
digitalWrite (pinin, LOW); // Pin 12 0 volt
digitalWrite (pinuit, LOW); // Pin 11 0 volt
}
void loop()
{
// Er komt van extern 5 volt op pin 12

val = digitalRead(pinin); // Kan 0 of 5 volt zijn
if (val = HIGH) // als ik 5 volt op pin 12 zet
{
digitalWrite (pinuit, HIGH); // dan krijgt pin 11 ook 5 volt
}
else
{
digitalWrite (pinuit, LOW); // zoniet dan blijft pin 11 op 0 volt
}}

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

Re: If -else werkt niet??

Berichtdoor Koepel » 06 Okt 2019, 05:36

Kun je de "Code" knop proberen ? Voor de code-tags.
Als je jouw sketch tussen [ code ] en [ /code ] zet (aan elkaar, zonder spaties), dan zien we je sketch beter.
Je kunt ook bekijken hoe ik de code-tags gebruik, door eerst in te loggen, en dan bij mijn bericht op de knop "Quote" te drukken. Dan zie je de broncode van mijn bericht, zoals ik het heb ingetypt.

Het eerste dat me opvalt is dat de tekst van de code niet netjes is. Dat vind ik erg belangrijk. Kun je proberen het netter te doen ? Dat doe je niet voor mij, maar voor jezelf.
Met programmeren is het belangrijk om netjes te zijn, vooral in de taal 'C' en 'C++'.
In de Arduino IDE kun je op Ctrl+T drukken. Dat is een andere stijl dan ik gebruik, kies zelf maar wat je mooier vind.

Voor iedere functie kun je eerst de beschrijving bij Arduino.cc doorlezen.

Laten we eens beginnen met de setup().
Daar zet je of een pin een OUTPUT of INPUT of INPUT_PULLUP wordt met pinMode().
https://www.arduino.cc/reference/en/language/functions/digital-io/pinmode/.

Dan krijg je:
Code: Alles selecteren
void setup()
{
  pinMode (pinin, INPUT);
  pinMode (pinout, OUTPUT);
}


Je gebruikt nu digitalRead(), dat is goed.

Een if-statement staat hier beschreven: https://www.arduino.cc/reference/en/language/structure/control-structure/if/.
Vergelijken of iets aan elkaar gelijk is, gebeurt met een "==". Dat is nu eenmaal zo. Dat hoort bij de 'C' en 'C++' taal.
Code: Alles selecteren
void loop()
{
  val = digitalRead(pinin); // Kan 0 of 5 volt zijn
  if (val == HIGH) // als ik 5 volt op pin 12 zet
  {
    digitalWrite (pinuit, HIGH); // dan krijgt pin 11 ook 5 volt
  }
  else
  {
    digitalWrite (pinuit, LOW); // zoniet dan blijft pin 11 op 0 volt
  }
}


Een pin die met pinMode() als INPUT of INPUT_PULLUP is gezet, daar kun je een digitalRead() op doen.
Een pin die met pinMode() als OUTPUT is gezet, daar kun je een digitalWrite() op doen.
Dus nu klopt alles.

Als het werkt, laat dan je sketch nog eens zien. Dat kijk ik of iedere spatie, ieder haakje, iedere lege regel, iedere komma, ieder inspringen enzovoorts op een nette manier is gedaan :geek:

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

Re: If -else werkt niet??

Berichtdoor Dorus1404 » 06 Okt 2019, 09:56

Bedankt voor je hulp. BTW, ik had de code-knop gebruikt; dat kun je zien aan het kleurverschil van de achtergrond, maar een enter gedaan na
Code: Alles selecteren
.
Je zegt: "Je moet netjes werken." Je hebt ongetwijfeld gelijk, maar wat is netjes werken? Kan ik dat ook ergens nalezen?
Met jouw kleine aanpassing werkt het perfect. Hier nogmaals de gehele schets:

[code]int pinin = 12;
int pinuit = 11;
int val = 0;

void setup() {

pinMode (pinin, INPUT);
pinMode (pinuit, OUTPUT);
digitalWrite (pinin, LOW); // Pin 12 0 volt
digitalWrite (pinuit, LOW); // Pin 11 0 volt
 }
void loop()
{
  val = digitalRead(pinin); // Kan 0 of 5 volt zijn
  if (val == HIGH) // als ik 5 volt op pin 12 zet
  {
    digitalWrite (pinuit, HIGH); // dan krijgt pin 11 ook 5 volt
  }
  else
  {
    digitalWrite (pinuit, LOW); // zoniet dan blijft pin 11 op 0 volt
  }
}


En nogmaals erg bedankt.

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

Re: If -else werkt niet??

Berichtdoor Gij Kieken » 06 Okt 2019, 11:11

Eigenlijk hoef je deze regel niet te schrijven
pinMode (pinin, INPUT);
standaard zijn de pinnen als Input geconfigureerd, het verduidelijkt soms je Setup maar meer niet.

Met de volgende regel schakel je de INPUT_PULLUP uit
digitalWrite (pinin, LOW); // Pin 12 0 volt
standaard is deze ook uitgeschakeld, dus hoef deze ook niet te schrijven.
Waarschijnlijk denk je daardoor de Input laag te zetten,maar dat klopt niet helemaal ,het betekent dat de ingang zwevend is.
Dus als je niets aansluit op die pin kan ze zowel Hoog of Laag zijn.

Volgende

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 8 gasten