» » X1 – 09.1 Nachtlicht

X1 – 09.1 Nachtlicht

eingetragen in: X1-lernkurs | 0

 

Nachtlicht

Du hast Lichtsensoren, aber was machst du mit ihnen? Wäre es nicht lustig, wenn die Back-LED vom X1 immer dann an geht, wenn der Roboter in einen Schatten läuft? Genau das hast du in diesem Lernkurs vor. Allerdings wirst du ein paar neue Techniken in der if-Verzweigung verwenden.

Video-Beispiel:

 

Code-Beispiel:

#define backLedPin 12

void setup() {
pinMode(backLedPin, OUTPUT);
}

void loop() {
lichtTest();
}

void lichtTest(){
int lichtEins = analogRead(A0);
int lichtZwei = analogRead(A1);
int lichtDrei = analogRead(A2);

//Man kann if auch von mehrerem abhängig machen
if(lichtEins >= 150 && lichtZwei >= 150 && lichtDrei >= 150){
digitalWrite(backLedPin. HIGH);
}
else{
digitalWrite(backLedPin, LOW);
}

delay(100);
}

 
 
 

Step 1

Erstmal bringst du alle Lichtsensoren in den Programmcode ein. Soweit so gut.

 

 

 

void lichtTest(){
  int lichtEins = analogRead(A0);
  int lichtZwei = analogRead(A1);
  int lichtDrei = analogRead(A2);

  ...
}

 

 

 

 
 
 

Step 2

Hier sollte dir direkt auffallen, dass die if-Verzweigung relativ lang aussieht. Das liegt daran, dass du mit dem Operator "&&" weitere Bedingungen, der if-Verzweigung zuweisen kannst. In diesem Fall sind es 3 Bedingungen, die jeweils mit "&&" verbunden sind. Weitere Informationen zu Operatoren findest du hier. Im Grunde sagst du der if-Verzweigung sie soll dann aktiviert werden, wenn alle Lichtsensoren "Größer-Gleich" 200 sind und falls dieser Fall eintrifft, wird die Back-LED angeschaltet.

 

 

 

void lichtTest(){
  ...
  if(lichtEins >= 150 && lichtZwei >= 150 && lichtDrei >= 150){
    digitalWrite(backLedPin. HIGH);
  }

  ...
}

 

 

 

 
 
 

Step 3

Hier verwendest du eine else-Verzweigung, um die Back-LED wieder aus zu schalten sobald die vorherigen if-Verzweigung nicht aktiviert wird.

 

 

 

void lichtTest(){
  ...
  else{
    digitalWrite(backLedPin, LOW);
  }

  delay(100);
}

 

 

 

 
 
 

Step 4

Natürlich musst du auch hier wieder die Funktion in void loop() schreiben.

 

 

 

void loop() {
  lichtTest();
}

 

 

 

 

Fazit

In dieser Lektion hast du dir eine Aufgabe für den X1 ausgedacht und diese umgesetzt. Dir sollte auffallen, dass es relativ einfach ist dem Roboter immer wieder neue Aufgaben zu geben. Im nächsten Lernkurs wirst du das letzte Bauteil vom X1 einbinden. Das bedeutet dass du deinen X1 kennst und jedes Bauteil einmal verwendet hast. Damit daraus ein Roboter mit einer sinnvollen Software wird, folgen in der nächsten Zeit noch weitere Lernkurse, in denen du noch ein wenig mehr in die Tiefen der Programmierung eintauchst.

 
 
 

Bitte hinterlasse eine Antwort