Fahrzeug bewegt sich auf eine Lichtquelle zu
In dem folgendem Programm ist zu sehen, wie sich der Arduino dreht, die Lichtwerte in seiner Umgebung misst, den höchsten heraussucht und darauf zufährt.
Vorraussetzungen:
- Arduino Mega
- Lichtsensor
- Fahrgestell
Probleme:
- Die Drehgeschwindigkeit herausfinden
- Anbau des Lichtsensors
Code:
const int Lichtsensor = 8;
const int MotorVR = 11;
const int MotorVL = 9;
const int MotorHR = 10;
const int MotorHL = 12;
int gesch = 100;
int sensorValue = 0;
void setup() {
pinMode(MotorVR, OUTPUT);
pinMode(MotorVL, OUTPUT);
pinMode(MotorHR, OUTPUT);
pinMode(MotorHL, OUTPUT);
Serial.begin(9600);
}
void halt() {
digitalWrite(MotorVR, LOW);
digitalWrite(MotorVL, LOW);
digitalWrite(MotorHR, LOW);
digitalWrite(MotorHL, LOW);
}
void drehen() {
analogWrite(MotorVR, gesch);
digitalWrite(MotorVL, LOW);
analogWrite(MotorHR, gesch);
digitalWrite(MotorHL, LOW);
}
void geradeaus() {
analogWrite(MotorVR, gesch);
analogWrite(MotorVL, gesch);
analogWrite(MotorHR, gesch);
analogWrite(MotorHL, gesch);
}
void loop() {
/*sensorValue = analogRead(Lichtsensor);
Serial.println(sensorValue);*/
int wertMAX;
int wert1;
int wert2;
int wert3;
int wert4;
int wert5;
int wert6;
int wert7;
int wert8;
int wert9;
int wert10;
int wert21;
int wert22;
int wert23;
int wert24;
int wert25;
int wert26;
int wert27;
int wert28;
int wert29;
int wert210;
drehen();
delay(1000);
halt();
wert1 = analogRead(Lichtsensor);
drehen();
delay(1000);
halt();
wert2 = analogRead(Lichtsensor);
if (wert1 > wert2) {
wert1 = wertMAX;
}
else {
wert2 = wertMAX;
}
drehen();
delay(1000);
halt();
wert3 = analogRead(Lichtsensor);
if (wert3 > wertMAX) {
wert3 = wertMAX;
}
drehen();
delay(1000);
halt();
wert4 = analogRead(Lichtsensor);
if (wert4 > wertMAX) {
wert4 = wertMAX;
}
drehen();
delay(1000);
halt();
wert5 = analogRead(Lichtsensor);
if (wert5 > wertMAX) {
wert5 = wertMAX;
}
drehen();
delay(1000);
halt();
wert6 = analogRead(Lichtsensor);
if (wert6 > wertMAX) {
wert6 = wertMAX;
}
drehen();
delay(1000);
halt();
wert7 = analogRead(Lichtsensor);
if (wert7 > wertMAX) {
wert7 = wertMAX;
}
drehen();
delay(1000);
halt();
wert8 = analogRead(Lichtsensor);
if (wert8 > wertMAX) {
wert8 = wertMAX;
}
drehen();
delay(1000);
halt();
wert9 = analogRead(Lichtsensor);
if (wert9 > wertMAX) {
wert9 = wertMAX;
}
drehen();
delay(1000);
halt();
wert10 = analogRead(Lichtsensor);
if (wert10 > wertMAX) {
wert10 = wertMAX;
}
/*
------------------------------------------------------
*/
drehen();
delay(1000);
halt();
wert21 = analogRead(Lichtsensor);
if ((wertMAX - 15) <= wert21 <= (wertMAX + 15)) {
geradeaus();
}
else {
drehen();
delay(1000);
halt();
wert22 = analogRead(Lichtsensor);
if ((wertMAX - 15) <= wert22 <= (wertMAX + 15)) {
geradeaus();
}
else {
drehen();
delay(1000);
halt();
wert23 = analogRead(Lichtsensor);
if ((wertMAX - 15) <= wert23 <= (wertMAX + 15)) {
geradeaus();
}
else {
drehen();
delay(1000);
halt();
wert24 = analogRead(Lichtsensor);
if ((wertMAX - 15) <= wert24 <= (wertMAX + 15)) {
geradeaus();
}
else {
drehen();
delay(1000);
halt();
wert25 = analogRead(Lichtsensor);
if ((wertMAX - 15) <= wert25 <= (wertMAX + 15)) {
geradeaus();
}
else {
drehen();
delay(1000);
halt();
wert26 = analogRead(Lichtsensor);
if ((wertMAX - 15) <= wert26 <= (wertMAX + 15)) {
geradeaus();
}
else {
drehen();
delay(1000);
halt();
wert27 = analogRead(Lichtsensor);
if ((wertMAX - 15) <= wert27 <= (wertMAX + 15)) {
geradeaus();
}
else {
drehen();
delay(1000);
halt();
wert28 = analogRead(Lichtsensor);
if ((wertMAX - 15) <= wert28 <= (wertMAX + 15)) {
geradeaus();
}
else {
drehen();
delay(1000);
halt();
wert29 = analogRead(Lichtsensor);
if ((wertMAX - 15) <= wert29 <= (wertMAX + 15)) {
geradeaus();
}
else {
drehen();
delay(1000);
halt();
wert210 = analogRead(Lichtsensor);
if ((wertMAX - 15) <= wert210 <= (wertMAX + 15)) {
geradeaus();
}
}
}
}
}
}
}
}
}
}
Serial.println(''Maximalwert:'');
Serial.println(wertMAX);
}
Von: Johannes Scholz, Philipp Lopinski, Aljoscha Malek