const int lineSensor1 = 7; // Left Line Sensor const int lineSensor2 = 8; // Center Line Sensor const int lineSensor3 = 10; // Right Line Sensor const int motorOUT1 = 3; //gschiidi nama sind wichtiger als ma denkt const int motorOUT2 = 5; const int motorOUT3 = 6; const int motorOUT4 = 11; const int baseSpeed = 180; bool debug = 1; //debug = 1: debug on, debug = 0:debug off warum immer debugga? Glaub nid dass ier as Kabel am roboter drah //haend wenn er am fahra isch, dia resourca werden susch brucht~ void setup() { // Initialize the pins pinMode(motorOUT1, OUTPUT); pinMode(motorOUT2, OUTPUT); pinMode(motorOUT3, OUTPUT); pinMode(motorOUT4, OUTPUT); pinMode(lineSensor1, INPUT); pinMode(lineSensor2, INPUT); pinMode(lineSensor3, INPUT); // Begin serial Serial.begin(9600); //ramp those numbers up, theese are rookie numbers } int l1; int l2; int l3; int factor; int speed1; int speed2; void loop() { l1 = digitalRead(lineSensor1); l2 = digitalRead(lineSensor2); l3 = digitalRead(lineSensor3); factor = basicFactor(); //Rueckgabe ist 0 oder 1 oder -1 int factorSpeed = baseSpeed - (baseSpeed * abs(factor) / 4); //180 - (180* (0 oder 1 weil abs macht aus -1 ein 1) / 4) // 180 180 0/1 also resulat ist immer 180 - 0 = 180 oder 180 - 45 = 135 // abs ist rin sehr interessantes ding, nicht? int correction = factorSpeed / 2 * factor; //180 oder 135 / 2 * 0 oder 1 oder -1 , // 180/135 0/1/-1 //wenn basicFactor = -1 dann correction = -67.5 und factorspeed muss 135 sein //wenn basicFactor = 1 dann correction = 67.5 und factorspeed muss 135 sein //wenn basicFactor = 0 dann correction = 0 und factorspeed muss 180 sein speed1 = factorSpeed + correction; // 180/135 -67.5/67.5/0 stimmt nicht ganz, da falls basicfactor 1 ist, dann ist factorspeed 135 und correction ist 67.5 also somit 202.5 // falls basicfactor 0 ist, dann ist factorspeed 180 und correction ist 0 also somit 180 // falls basicfactor -1 ist, dann ist factor speed 135 und correction ist -67.5 also somit 67.5 // dass sind alle moeglichen kombinationen, es ist gut zu versuchen eine art algo zu schreiben, leider // ist der jetzige code nicht mehr wert als eine kalte Bratwurst und ein warmes Beer. Also das heisst // der jetzige code kann mit 5 oder so zeilen coder ersetzt werden. Get better noob :) speed2 = factorSpeed - correction; // das gleiche wie oben einfach mit minus gerechnet // 180/135 -67.5/67.5/0 if (speed1 > 255){ //kann theoretisch nie passieren aber trotzdem gut, man weiss ja nie wann die naechste sonneneruption ein bit im controller dreht speed1 = 255; } if (speed2 > 255){ //kann theoretisch nie passieren aber trotzdem gut, man weiss ja nie wann die naechste sonneneruption ein bit im controller dreht speed2 = 255; } if (speed1 < speed2){ //okey wie man will, aber ja unten noch erwaehnt speed1 *= -1; } else if (speed1 > speed2){ //okey wie man will, aber ja unten noch erwaehnt speed2 *= -1; } drive(speed1, speed2); if debug == 1 { //besser so printDebug(); } } int basicFactor() //globa variabeln muss man funktionen nicht mitgeben { // White: 0 // Black: 1 int factor = l1 - l3; // Compare left and right to create factor return factor; } void drive() //globa variabeln muss man funktionen nicht mitgeben { //motopaerli zemaschirba analogWrite(motorOUT4, speed1 < 0 ? speed1 : 0); //ooff wtf, fuer dia schriibwiis soett ma peitscht werde. Warum zahlen weiter oben negieren und hier auf 0 setzen? analogWrite(motorOUT2, speed2 < 0 ? speed2 : 0); //ooff wtf, fuer dia schriibwiis soett ma peitscht werde. Warum zahlen weiter oben negieren und hier auf 0 setzen? analogWrite(motorOUT3, speed1 > 0 ? speed1 : 0); //ooff wtf, fuer dia schriibwiis soett ma peitscht werde. Warum zahlen weiter oben negieren und hier auf 0 setzen? analogWrite(motorOUT1, speed2 > 0 ? speed2 : 0); //ooff wtf, fuer dia schriibwiis soett ma peitscht werde. Warum zahlen weiter oben negieren und hier auf 0 setzen? return; //return was? sinn des lebens? } void stopNow() //okey { analogWrite(motorOUT4, 0); analogWrite(motorOUT3, 0); analogWrite(motorOUT2, 0); analogWrite(motorOUT1, 0); return; //return was? sinn des lebens? } void printDebug() //okey { Serial.print("CS: "); Serial.print(l1); Serial.print(", "); Serial.print(l2); Serial.print(", "); Serial.print(l3); Serial.println(); Serial.print("Factor: "); Serial.print(factor); Serial.println(); Serial.print("Speed: "); Serial.print(speed1); Serial.print(", "); Serial.print(speed2); Serial.println(); //gott sei dank kein return }