If -else werkt niet??
12 berichten
• Pagina 1 van 2 • 1, 2
If -else werkt niet??
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
Re: If -else werkt niet??
Het probleem is dat het high of low maken van pin 12 geen enkel effect heeft op pin 11.
- Gij Kieken
- Berichten: 631
- Geregistreerd: 15 Nov 2015, 11:54
Re: If -else werkt niet??
Je hebt een variabele tekort voor digitalRead
https://www.arduino.cc/reference/en/lan ... gitalread/
https://www.arduino.cc/reference/en/lan ... gitalread/
Re: If -else werkt niet??
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
}}
Re: If -else werkt niet??
Was er iets mis met mijn antwoord (http://arduinoforum.nl/viewtopic.php?f=17&t=3937&start=10#p26658) ?
- Gij Kieken
- Berichten: 631
- Geregistreerd: 15 Nov 2015, 11:54
Re: If -else werkt niet??
Sorry Koepel had het niet gezien.
@Dorus, haja inderdaad Koepel zijn antwoord nogmaals lezen.
Het is niet Gelijk wat je schrijft (beetje cryptisch omschreven)
@Dorus, haja inderdaad Koepel zijn antwoord nogmaals lezen.
Het is niet Gelijk wat je schrijft (beetje cryptisch omschreven)
Re: If -else werkt niet??
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?
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
}}
Re: If -else werkt niet??
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:
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.
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
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
Re: If -else werkt niet??
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
En nogmaals erg bedankt.
- 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.
- Gij Kieken
- Berichten: 631
- Geregistreerd: 15 Nov 2015, 11:54
Re: If -else werkt niet??
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.
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.
12 berichten
• Pagina 1 van 2 • 1, 2
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 12 gasten