Ein einfaches Testprogramm für die wichtigsten Komponenten:
S1 Ultraschallsensor
S2 Color-Sensor
#pragma config(Sensor, S1, sonar, sensorEV3_Ultrasonic)
#pragma config(Sensor, S2, colour, sensorEV3_Color, modeEV3Color_Color)
//*!!Code automatically generated by 'ROBOTC' configuration wizard !!*//
task main()
{
displayBigTextLine(1, "Testprogramm");
delay(2000);
displayBigTextLine(3, "PlayTone");
delay(1000);
// Achtung: -> playTone(Tonhöhe, 10x(Länge in ms))
playTone(261, 30);
delay(400);
playTone(293, 30);
delay(400);
playTone(330, 30);
delay(1000);
displayBigTextLine(5, "Rotation A + D");
delay(1000);
moveMotorTarget(motorA, 1000, 80);
moveMotorTarget(motorD, 1000, 80);
delay(3000);
displayBigTextLine(7, "Reverse A + D");
delay(1000);
moveMotorTarget(motorA, 1000, -80);
moveMotorTarget(motorD, 1000, -80);
delay(3000);
while(true)
{
int Abstand = SensorValue[sonar]; // Sensor auslesen
displayBigTextLine(9, "Abst: %3d cm", Abstand);
int Color = SensorValue[colour];
displayBigTextLine(11, "Color: %6d Raw", Color);
switch(Color)
{
case 0: displayCenteredBigTextLine(4, "keine"); break;
case 1: displayCenteredBigTextLine(4, "schwarz"); break;
case 2: displayCenteredBigTextLine(4, "blau"); break;
case 3: displayCenteredBigTextLine(4, "gruen"); break;
case 4: displayCenteredBigTextLine(4, "gelb"); break;
case 5: displayCenteredBigTextLine(4, "rot"); break;
case 6: displayCenteredBigTextLine(4, "weiss"); break;
case 7: displayCenteredBigTextLine(4, "braun"); break;
default: displayCenteredBigTextLine(4, "unbekannt");
}
delay(100);
}
}
Quadrat fahren:
task main()
{
for(int i=0; i<5; i++)
{
setMotorSpeed(motorA, 50); // Motor A mit 50 %
setMotorSpeed(motorD, 50);
delay(2000);
setMotorSpeed(motorA, 0); // Motor A und D mit 0 %
setMotorSpeed(motorD, 0);
delay(500);
moveMotorTarget(motorA, 720, 50);
moveMotorTarget(motorD, 720, -50);
delay(1000);
setMotorSpeed(motorA, 0); // Motor A und D mit 0 %
setMotorSpeed(motorD, 0);
delay(500);
}
}
Musik aus Arrays abspielen:
// Musik mit dem EV3
// Autor: Niels Nikolaisen
// Definieren der Noten und Tonlängen:
#define C4 262
#define D4 294
#define E4 330
#define F4 349
#define G4 392
#define A4 440
#define H4 494
#define C5 523
#define ACHTEL 50
#define PAUSE 100
// Noten und Tonlängen stecken in Arrays:
int Tonarray[] = {C4, D4, E4, F4};
int Tonlaenge[] = {ACHTEL, ACHTEL, 2*ACHTEL, 2*ACHTEL};
task main()
{
displayBigTextLine(1, "Musik!");
// Die "4" ist die Anzahl der Noten im Tonarray!
for(int i = 0; i < 4; i++)
{
playTone(Tonarray[i], Tonlaenge[i]); // Zeit = Wert * 10 ms
delay(PAUSE+(Tonlaenge[i])*10); // Zeit in ms
}
delay(1000);
}
Hindernis erkennen mit Ultraschall und "zufälliges" Ausweichen
#pragma config(Sensor, S2, taster, sensorEV3_Touch)
#pragma config(Sensor, S4, ultraschall, sensorEV3_Ultrasonic)
//*!!Code automatically generated by 'ROBOTC' configuration wizard !!*//
#define MIN_ENTFERNUNG 20
task main()
{
// BigText braucht 2 Zeilen
displayBigTextLine(1, "Hindernislauf");
delay(1000);
while(SensorValue(taster)==false)
{}
while(true)
{
setMotorSpeed(motorA, 50);
setMotorSpeed(motorD, 50);
if(SensorValue(ultraschall)<MIN_ENTFERNUNG)
{
setMotorSpeed(motorA, 0);
setMotorSpeed(motorD, 0);
delay(500);
setMotorSpeed(motorA, -30);
setMotorSpeed(motorD, -30);
delay(500);
setMotorSpeed(motorA, 0);
setMotorSpeed(motorD, 0);
delay(500);
setMotorSpeed(motorA, 30);
delay(random(1000));
setMotorSpeed(motorA, 0);
setMotorSpeed(motorD, 0);
delay(500);
}
}
}