(2)

163 {

164 Richtung = Rgo; // Turn Left

165 }

166

167 if (Lspeedd <100 && Rspeedd <100) // If the distance to the left and right are less than 10 cm distance

168 {

169 Richtung = Bgo; // To go after

170 }

171 }

172 else // Add as front not less than (greater than) 25 cm

173 {

174 Richtung = Fgo; // Move forward

175 }

176

177 }

178

179 int UltraMessung() {

180 // Einen Impuls auslösen

181 digitalWrite(Trigger, LOW);

182 delayMicroseconds(2);

183 digitalWrite(Trigger, HIGH);

184 delayMicroseconds(5);

185 digitalWrite(Trigger, LOW);

186

187 // Messen, wann der reflektierte Impuls zurückkommt

188 int Laufzeit = pulseIn(Echo, HIGH);

189 // Pro Meter benötigt der Schall in Luft ca. 2,9 ms

190 // pulseIn misst Mikrosekunden, also 2,9 µs pro Millimeter

191 // Weg geht hin und zurück, also mal 2

192 int Entfernung = (double) Laufzeit / (2.9 * 2.0);

193

194 //Serial.print(„Entfernung zum Objekt: „);

195 //Serial.print(Entfernung);

196 //Serial.println(“ mm“);

197 delay(100);

198 return Entfernung;

199

200 }

201

202 void MessungVorne () { // vordere Entfernung messen

203

204 myservo.write (ServoGerade); // Ultraschallkopf nach vorne ausrichten

205 Fspeedd = UltraMessung(); // Entfernung zurueck geben

206 delay(ZeitServoStellung); // kurze Pause bis der Kopf ausgerichtet ist

207 Serial.print(„Entfernung vorne: „);

208 Serial.print(Fspeedd);

209 Serial.print(“ mm“);

210 }

211

212 void MessungLinks () { // linke Entfernung messen

213

214 myservo.write (ServoLinks); // Ultraschallkopf nach vorne ausrichten

215 Lspeedd = UltraMessung(); // Entfernung zurueck geben

216 delay(ZeitServoStellung); // kurze Pause bis der Kopf ausgerichtet ist

217 Serial.print(„Entfernung links: „);

218 Serial.print(Lspeedd);

219 Serial.print(“ mm“);

220 }

221

222 void MessungRechts () { // rechte Entfernung messen

223

224 myservo.write (ServoRechts); // Ultraschallkopf nach vorne ausrichten

225 Rspeedd = UltraMessung(); // Entfernung zurueck geben

226 delay(ZeitServoStellung); // kurze Pause bis der Kopf ausgerichtet ist

227 Serial.print(„Entfernung rechts: „);

228 Serial.print(Rspeedd);

229 Serial.print(“ mm“);

230 }

231

232 void loop () {

233

234 myservo.write (ServoGerade); // Ultraschallkopf nach vorne ausrichten

235

236 detection (); // Measure the angle and direction of judgment to where to move

237

238 if (Richtung == 2) // If direction (direction) = 2 (reverse)

239 {

240 FahrtRueckwaerts (8); // Retrogression (car)

241 turnL (2); // Move slightly to the left (to prevent stuck in dead alley)

242 Serial.println („…. Rueckwaerts“);

243 }

244 if (Richtung == 6) // If direction (direction) = 6 (right turn)

245 {

246 FahrtRueckwaerts (1);

247 turnR (6); // Right

248 Serial.println („…. Fahrt Rechts“);

249 }

250 if (Richtung == 4) // If direction (direction) = 4 (turn left)

251 {

252 FahrtRueckwaerts (1);

253 turnL (6); // Left

254 Serial.println („…. Fahrt Links“);

255 }

256 if (Richtung == 8) // If direction (direction) = 8 (forward)

257 {

258 FahrtVorwaerts (1); // Normal Forward

259 Serial.println („…. Fahrt Vorwaerts“);

260 }

261

262

263 }

 

17.1 Grundstruktur von Arduino- Sketches

1 void setup() { // wird einmal zu Beginn ausgeführt

2 }

3

4 void loop() { // wird endlos (also immer wieder) ausgeführt

5 }

 

17.4.1 Int/Long-Variablen

1 int Temperatur;

2

3 int Wasserstand = -5;

4

5 int PIN1=1;

6

7 long GrosseZahl = 3328231;

Natürlich kannst du mit diesen Variablen auch rechnen:

1 int A=6;

2

3 int A_Quadrat;

4 ind A_Kubik;

5

6 A_Quadrat=A*A;

7 A_Kubik=A*A*A;

 

17.4.2 String-Variablen

1 string Minuten=’10‘;

2 string Stunden=’08‘;

3

4 string ZeitString;

5

6 ZeitString=Minuten+‘:’+Sekunden;

7

8 lcd.print(Zeitstring);

 

17.4.3 Float/Double-Variablen

1 float Temperatur = 12.4;

2 float Koerpergroesse = 1.82;

3 float Gewicht= 83.3

4 float BMI = Gewicht/(Koerpergroesse*Koerpergroesse);

 

17.4.4 Boolean-Variablen

1 boolean TASTE_GEDRUECKT:

2 if(digitalRead(TASTE)==HIGH) TASTE_GEDRUECKT=true;

14 else TASTE_GEDRUECKT=false;

 

 

1 String Sortimentskasten[4]; // String-Array mit 4 Elementen

2 int[] Zahlenreihe= {1,1,2,3,5,8} // Int-Array undefinierter

3 Länge mit Initialisierungswerten

4 Sortimentskasten[0]=“Widerstände“;

5 Sortimentskasten[1]=“Jumperkabel“;

6 // Zugreifen auf einzelne Elemente:

7 if (Sortimentskasten[0]!=“Widerstände“) lcd.print(„Keine

8 Widerstände gefunden.“);

9 Zahlenreihe[2]=Zahlenreihe[0]+Zahlenreihe[1]

 

17.5 Serieller Monitor

1 void setup() {

2 // Serielle Verbindung über den USB Port mit 9600 baud

3 öffnen:

4 Serial.begin(9600);

5 }

6 void loop() {

7 //Ausgabe der Sekunden seit reset

8 long secs=millis()/1000;

9 Serial.print(String(secs));

10 Serial.print(„\tSekunden\n“);

11 delay(1000);

12 }

 

17.6.1 If-Abfragen

1 if(BEDINGUNG) {BEFEHL1; BEFEHL2;} else {ALTERNATIVE1;}

2

3 //Beispiele:

4

5 if (Uhrzeit==Weckzeit) alarm();

6

7

8 if (digitalRead(TASTER)==HIGH) LED_ein(); else LED_aus();

 

17.6.2 Case-Abfragen

1 //In der Variablen TASTE steht 1, 2 oder 3 je nachdem,

2 welche Taste der User drückt

3

4 switch (TASTE)

5 {

6 case 1:

7 bearbeite_taste1();

8 break;

9 case 2:

10 bearbeite_taste2();

11 break;

12 case 3:

13 reset();

14 break;

15 default:

16 lcd.print(„Wert für Taste unzulässig“);

17 break;

18 }

 

17.7.1 For-Schleifen

1 // Zählschleife 1 bis 10

2 for (int i=1; i<=10; i++) {

3 Serial.print(i);Serial.print(‚\n‘);}

4

5

6 // Und jetzt in Zehnerschritten von 20 bis 100:

7

8 for (int k=20 ; k<=100; k+=10) {Serial.print(k);Serial.print(‚\n‘);}

 

17.7.2 Do while-Schleifen

1 do {

2 Temperatur=ReadTemperature(A0);

3 delay(1000);}

4 while(Temperatur >30);

 

17.8 Definition eigener Funktionen und Prozeduren

1 typ name (Parameter1, Parameter2,…)

2 { befehl1;

3 befehl2;

4 return wert;

5 }

/

1 long quadrat (int Wert) {

2

3 // quadriert den übergebenen Wert

4

5 return Wert*Wert;

6 }

/

1 void alarm(){

2 for(int i=0;i<3;i++){

3 tone(BUZZER,500);

4 delay(1000);

5 tone(BUZZER,700);

6 delay(1000);

7 noTone(BUZZER);}

8 }