Stap 3: Software: Arduino Code
Dit deel is de beste en beschrijven de kerndeel in het project. Kortom, wij zullen de camera in de mobiele telefoon gebruiken om de meest dominante kleuren te krijgen, "setCalculationMode", in de weergave en de functie van "setPalette" functioneren, maken het scherm als een raster (bijvoorbeeld 3 x 3) met een kleur in elke cel die overeenkomt met de meest dominante kleur in die cel.
Dus het gaat alleen met de eerste en de derde cellen die de bovenste cel linksboven en rechter boven cel die aangeeft van de grenzen van de cameraweergave. Dus, als een van de derde of eerste cellen krijgt een kleur in plaats van wit, dus het betekent dat de robot heeft op drift in die richting te handhaven van de robot om te worden in het midden van de witte kleur die door de manier een hexadecimale waarde (0xFFFFFF is).
#define CUSTOM_SETTINGS #define INCLUDE_TERMINAL_SHIELD #define INCLUDE_COLOR_DETECTOR_SHIELD #include <OneSheeld.h> unsigned long white = 0xFFFFFF; int motor1PWM = 3; int motor1DIR = 4; int motor2PWM = 6; int motor2DIR = 7; void setup() { OneSheeld.begin(); ColorDetector.setOnSelected(&selected); pinMode(motor1PWM, OUTPUT); pinMode(motor1DIR, OUTPUT); pinMode(motor2PWM, OUTPUT); pinMode(motor2DIR, OUTPUT); digitalWrite(motor1DIR, LOW); digitalWrite(motor2DIR, HIGH); } void loop() { } void selected() { ColorDetector.setPalette(_3_BIT_RGB_PALETTE); ColorDetector.enableFullOperation(); ColorDetector.setCalculationMode(MOST_DOMINANT_COLOR); ColorDetector.setOnNewColor(&newColor); } void newColor(Color one,Color two,Color three,Color four,Color five,Color six,Color seven,Color eight,Color nine) { if (three == white && one == white) { moveForward(); } else if (three == white && one != white) { moveLeft(); } else if (one == white && three != white) { moveRight(); } } void moveForward() { analogWrite(motor1PWM, 25); analogWrite(motor2PWM, 25); } void moveRight() { analogWrite(motor1PWM, 20); analogWrite(motor2PWM, 12); } void moveLeft() { analogWrite(motor1PWM, 12); analogWrite(motor2PWM, 20); }