Arduino nano: if/els functie

Ik heb wat problemen met het programmeren van mijn arduino (ben nog maar een beginner).
ik heb 2 digitale poorten gebruikt om op iedere poort een ledje te bedienen.
Ik heb ook een analoge poort gebuikt om input waardes te krijgen (dankzij een regelbare weerstand).
Nu wilde ik zodanig instellen dat wanneer de inputwaarde 0 is de ledjes allebei gaan knipperen.
Wanneer de waarde tussen de 0 en 50 komt moet 1 ledje knipperen, en wanneer de waarde tussen de 50 en 100 komt moet de andere led alleen gaan knipperen. En alle waardes boven honderd zorgen er voor dat de 2 leds langzaam aan harder en harder gaan branden.
Hier zien jullie mijn probeersel. Ik heb al van alles geprobeerd, maar ik geraak er maar niet uit.

int sensorWaarde = 0;
void setup() 
{
 pinMode(3, OUTPUT);
 pinMode(5, OUTPUT);
}

void loop() {
  sensorWaarde = analogRead(A0);
  
if (sensorWaarde = 0)
  {
    digitalWrite(5, HIGH);
    digitalWrite(3, LOW);
    delay(100);
    digitalWrite(5, LOW);
    digitalWrite(3, HIGH);
    delay(100);
  }   
  if (0 < sensorWaarde < 50) 
{
    digitalWrite(3, HIGH);
    delay(100);
    digitalWrite(3, LOW);
    delay(100);
    }
  if (50 < sensorWaarde < 100) 
{  
    digitalWrite(5, HIGH);
    delay(100);
    digitalWrite(5, LOW);
    delay(100);
    }
  if (sensorWaarde > 100)
{
 analogWrite(3, A0/4);
 analogWrite(5, A0/4);
} 
}

edit added code tags

Test_2_spanning_op_pin_10.ino (629 Bytes)

AO/4 moet zijn sensorwaarde/4
en gebruik de serial monitor
in setup Serial.begin(9600);
en in de loop serial.println (sensorwaarde);
dan kun je zien wat de waarde is.
verder zou ik zeggen als waarde <50 dan knipperen)
tussen 50 en 100 ofwel de zones een beetje opschuiven, analog is nooit 0 maar altijd iets erboven.
zie de monitor.

Oke zal ik testen, heel hard bedankt. Het zijn nu examens dus heb ik niet zoveel tijd om te testen.

en if (sensorWaarde = 0) moet if (sensorWaarde == 0) zijn want met wat jij nu hebt staan zet je sensorWaarde gewoon op 0 ipv het te vergelijken met 0 :)

het is mij ongeveer gelukt, ik heb wel een andere functie gebruikt (uit ellende). En ik moest mijn waardes vergelijk (==) dus moeten mijn waardes op de kop 50, 100, 150 zijn eerdat er iets gebeurt. Zou iemand mij kunnen zeggen hoe ik kan bepalen dat er een actie alleen word uitgevoerd als de waarde van de analoge input tussen de 50 en de 100 liggen?

Nexus757:
het is mij ongeveer gelukt, ik heb wel een andere functie gebruikt (uit ellende).
En ik moest mijn waardes vergelijk (==) dus moeten mijn waardes op de kop 50, 100, 150 zijn eerdat er iets gebeurt.
Zou iemand mij kunnen zeggen hoe ik kan bepalen dat er een actie alleen word uitgevoerd als de waarde van de analoge input tussen de 50 en de 100 liggen?

lees eens wat programmeer tutorials & voorbeelden zodat je de syntax wat leert kennen.
a<b<c als notatie werkt niet.
het moet zijn
a<b && b<c
dus wat jij zoekt:
if (50 < sensorWaarde && sensorWaarde< 100)

vergeet niet dat het een programmeertaal is, en niet gewone spreektaal :). het zit heel systematisch in mekaar, en eens je die logica kent ga je er vlot mee omkunnen.
In dit geval geeft < of > een waarde true of false terug, dus als je a<b<c doet, dan doet hij eerst a<b, dat is dan true of zo, en daarachter evalueert hij of true < c is… en dat is een rare vraag om te stellen (en hij zal er wel iets mee doen wss, maar niet wat jij wilt).

Heel hard bedankt, ik heb antwoord gekregen op wat ik zocht. Moet ik dit geprek nu stop zetten? En eventueel verwijderen? Ik ben nog niet zo ervaren met dit forum. (Indien ik iets moet doen, liefst wat uitleg erbij)

We zijn natuurlijk blij dat je het gevonden hebt wat je zocht om je project aan de praat te krijgen. Wat we hier wel vaak waarderen is welke code het nu geworden is. Daarmee kunnen andere beginners of zelfs soms ervaren arduino fanaten ook weer iets leren.

En een topic sluiten of verwijderen doet men niet zo vaak, omdat een forum natuurlijk bedoeld is om mensen te helpen die op zoek zijn naar info. Daar kan jouw info/code dan weer aan bijdragen.

Dag,

Zoals ik al zei heb ik mij programma met if functie klaar (Dankzij de goede hulp).
Hieronder zien jullie mij programma.

int sensorWaarde = 0;  // ik heb een analoge potentiometer als input genomen
void setup() {  
  Serial.begin(9600);  //dit dient voor seriële monitor te kunnen gebruiken
 pinMode(3, OUTPUT);    //Digitale poort is pin 3, hier heb ik een rode led op aangesloten
 pinMode(5, OUTPUT);    //Digitale poort is pin 5, hier heb ik een groene led op aangesloten

}
void loop() {
  Serial.println (sensorWaarde);  //dit dient voor seriële monitor te kunnen gebruiken
  sensorWaarde = analogRead(A0);    //dit dient voor seriële monitor te kunnen gebruiken
  if (0 < sensorWaarde && sensorWaarde < 50)  // als de analoge waarde tussen de 0 en 50 is voert hij deze actie uit
  {Serial.println (sensorWaarde);    //dit dient voor seriële monitor te kunnen gebruiken
    sensorWaarde = analogRead(A0);    //dit dient voor seriële monitor te kunnen gebruiken
    digitalWrite(5, HIGH);    
    digitalWrite(3, LOW);
    delay(1000);              // Ledjes gaan ieder om de beurt knipperen
    digitalWrite(5, LOW);
    digitalWrite(3, HIGH);
    delay(1000);
  }  
  if (50 < sensorWaarde && sensorWaarde < 100)  // als de analoge waarde tussen de 50 en 100 is voert hij deze actie uit
  {Serial.println (sensorWaarde);    //dit dient voor seriële monitor te kunnen gebruiken
    sensorWaarde = analogRead(A0);    //dit dient voor seriële monitor te kunnen gebruiken
    digitalWrite(5, LOW);   // Zorgen dat de groene led zeker uit is
    digitalWrite(3, HIGH);
    delay(1000);            // Rode ledje gaat knipperen
    digitalWrite(3, LOW);
    delay(1000);
    }
  if (100 < sensorWaarde && sensorWaarde < 150) // als de analoge waarde tussen de 100 en 150 is voert hij deze actie uit
  {Serial.println (sensorWaarde);    //dit dient voor seriële monitor te kunnen gebruiken
  sensorWaarde = analogRead(A0);      //dit dient voor seriële monitor te kunnen gebruiken
    digitalWrite(3, LOW);   // Zorgen dat de rode led zeker uit is
    digitalWrite(5, HIGH);
    delay(1000);            // Groene ledje gaat knipperen
    digitalWrite(5, LOW);
    delay(1000);
    }
  if (sensorWaarde > 150)  // als de analoge waarde boven de 151 is voert hij deze actie uit
  {Serial.println (sensorWaarde);    //dit dient voor seriële monitor te kunnen gebruiken
    sensorWaarde = analogRead(A0);    //dit dient voor seriële monitor te kunnen gebruiken
 analogWrite(3, sensorWaarde/4);    // ledjes gaan harder branden als 
 analogWrite(5, sensorWaarde/4);    //de waarde van de potentiometer steigt
 
} 
}

edit added code tags

Test_2_spanning_op_pin_10.ino (2.44 KB)

de volgende stap lijkt mij om de serial.print alleen te doen als waarde is verandert. vervolgens de delay vervangen door iets met millis() en zoek eens naar state machines en case.